1
什么是Maven?
一个大型的 Web 项目,需要依赖很多第三方类库,不同 Jar 包之间还有复杂的依赖关系;这时,Maven 出现了,我们只需要告诉它需要的 Jar 包,它会帮我们自动下载并管理它们。
Maven就是这样一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。
Maven的核心思想?
约定大于配置。Maven会约定一些规则,不能违反,比如项目的目录结构。
Spring
什么是Spring?
Spring是一个轻量级的容器(框架),如果加上定语:
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。
Spring全家桶的组成?
Spring Framework:Spring的核心;
Spring Boot:构建项目,可以用它快速开发单个微服务;
Spring Cloud:协调微服务,可以将一个大项目拆分成多个小项目分而治之;
Spring Cloud Data Flow:连接数据源,集成多个平台数据。
再深入到Spring Framework
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LQbN1ZYO-1685417610806)(C:\Users\DoubleC\Desktop\小白要找工作\images\image-20230530090328053.png)]
Spring由二十多个小模块组成,下面只列举这个项目中用到的技术栈。
- Core Container(核心容器)
- 控制反转(IoC)
- Data Access(数据访问)
- Spring MyBatis
- Web(Web开发)
- Spring MVC
- Data Integration(数据集成)
- Email:发邮件
- Scheduling:定时任务
- AMQP:消息队列
- Security:安全控制
什么是IoC?
控制反转(IoC)是一种管理对象 Bean 的设计思想,它将手动创建 Bean 对象的权力交给 Spring 框架。这样我们在创建对象时就只需要添加相应的注解或配置文件,而不用考虑如何创建它。
它的优点:降低耦合,我们在将Bean对象交给容器管理时,需要对象的定义和配置文件,各对象之间的关系在配置文件中声明,不会直接产生耦合。
依赖注入(DI):是IoC的实现方式;
IoC容器(IoC Container):是依赖注入的关键。本质上是一个工厂,数据结构是Map。
IoC 容器控制了对象,主要控制了外部资源获取。反转则是由容器来帮忙创建及注入依赖对象
有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活
对象Bean如何使用?
Bean常见的四种注解:
@Controller
@Repository
@Service
@Component
如何使用Bean:
使用依赖注入:@AutoWired
Spring MVC
为什么要引入Spring MVC?
在早期 Web 开发中,控制层、业务层和数据访问层均交给 JSP 或 Java Bean 处理,这样做的弊端:
- JSP和Java Bean严重耦合;Java和Html耦合;
- 技术人员除了需要 Java 知识,还需要前端技术栈才可以工作;
- 前端依赖后端,后端依赖前端,工作效率很低;
- 代码复用性差;
什么是Spring MVC?
- M 代表模型(Model):模型就是数据,如:dao , bean
- V 代表视图(View):视图用于展示数据,如:网页,JSP
- C 代表控制器(Controller):控制器用于接收用户请求,将不同的数据展现在不同的视图上。
Spring MVC的架构?
MVC 三者都属于该表现层。(controller、service、dao)
补充一个小知识点:模板引擎Thymeleaf:用于生成动态Html。
项目开发顺序!
了解了MVC的基本原理,大概的开发顺序就跃然纸上。
开发顺序与调用顺序相反,这个很好理解,因为后面的依赖前面的。
Dao -> Service -> Controller
- entity:开发属性名;
- Dao:写接口,定义方法头;
- Mapper:写配置文件.xml,实现接口,Bean对象生成;
- MapperTests:添加AutoWired注解注入Mapper,测试Bean;
- service:添加Service注解,还要添加AutoWired注解注入Mapper,开发业务代码,根据不同逻辑返回值,将返回值交给controller;
- controller:添加Controller注解,同样要注入Mapper,根据service传过来的不同返回值处理请求,将查询到的数据通过model传给模板;
- .html:模板就是html文件,将数据渲染为视图View展示给用户。
Spring Boot
什么是Spring Boot?
一个Java Web的开发框架,和Spring MVC类似。但其实Spring Boot也不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。
演化过程:J2EE -> Spring -> Spring Boot
Spring Boot的核心思想?
约定大于配置。默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。
Spring Boot的优势?
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
- 调试技巧
响应状态码有哪些?
- 2开头:成功响应;
- 3开头:重定向,向浏览器返回需要再次访问的地址,浏览器再次访问。重定向的作用:使用一种低耦合的方式实现功能的跳转;
- 4开头:客户端响应失败;
- 5开头:服务器已经接收请求,但响应失败
如何调试?
先打印日志,分析;
如果还是不行,根据响应状态码定位是客户端还是服务端的问题,确定之后打断点Debug。
Git
- commit、push、pull是什么意思?
- commit:提交到本地数据库;
- push:同步到远程数据库;
- pull:将服务器的代码拉取到本地;
- update:pull时如果发现代码冲突,会弹出一个解决冲突的窗口,在这里解决;
Git 回退的三种类型?
- mixed:为默认值,等同于git reset。将文件回退到工作区,此时会保留工作区中的文件,但会丢弃暂存区中的文件;
- soft:将文件回退到暂存区,此时会保留工作区和暂存区中的文件;
- hard:将文件回退到修改前,此时会丢弃工作区和暂存区中的文件;
2
注册
如何实现注册功能?
- 将注册信息发给服务器;
- 服务器发送邮件给注册时的邮箱;
- 用户点击激活链接完成注册。
会话管理
HTTP协议的特点?
HTTP是无状态的:一个浏览器向一个服务器发送的请求都是独立的,服务器记不住浏览器的状态;使用Cookies可以创建有状态的会话。
解法一:Cookies
服务器发送给浏览器并保存在本地的一小块数据,浏览器下一次向同一服务器发送请求时携带它给服务器,服务器根据Cookies迅速查找,找到该用户的活动记录。
解法二:Session
在服务端记录客户端信息,只需要传送 session 的 id ,提高安全性,但增加了服务端的内存压力。
拦截器
什么是拦截器?
Interceptor,用于拦截不合理的请求。比如:没登录,但想通过输入网址访问信息页面,当然不行了!
Spring加载项目时,会按默认顺序将这些拦截器注册进来,将来的调用顺序就是这个注册顺序。当然,对于自定义的拦截器,你可以定义它的注册顺序。
三个重要方法?
preHandle()
:在调用Controller方法或获取静态资源前