处理器(Handler):请求处理的具体逻辑,返回数据和视图信息
视图解析器(View Resolver):解析具体视图,通过ModelAndView对象中的View信息,将逻辑视图名解析成真正的视图View
请求流程具体步骤详解:
1:用户发起请求,请求会被前端控制器(DispatcherServlet)拦截
2:前端控制器(DispatcherServlet)请求处理器映射器(HandlerMapping)查找Handler
3:处理器映射器(HandlerMapping)根据配置找到相应Handler(可以更具注解或者XML配置),可能包含多个Interceptor拦截器,返回给前端控制器
4:前端控制器(DispatcherServlet)请求处理器适配器(HandlerAdapter)去执行相应的Handler
5:适配器交由对应Handler处理器执行
6: Handler处理器执行完成后返回ModelAndView对象给处理器适配器
7:处理器适配器接受Handler处理器的返回结果,并将该结果返回给前端控制器(DispatcherServlet)
8:前端控制器(DispatcherServlet)接收处理器适配器返回的数据和视图信息,请求视图解析器,解析对应的视图
9:视图解析器根据View信息匹配的相应的视图结果,反回给前端控制器
10:前端控制器接收具体视图,进行视图渲染,将Model数据填充到View视图中,生成最终视图
11:前端控制器向用户返回结果
从零开始搭建demo
创建工程:
Eclipse下新建一个动态Web项目
工程默认目录结构:
添加jar包依赖
WebContent > WEB-INF > lib 文件夹下导入相应的jar包,其中核心的jar包是spring-webmvc-5.0.0.RELEASE.jar,其他是几个主要是spring用于管理上下文和beande 包、jstl标签库和一个用于打印日志的log包:
在web.xml中配置前端控制器
前端控制器相当于Spring MVC的专有servlet,用于拦截所有符合条件的请求,交由框架做后续处理
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi\="http://www.w3.org/2001/XMLSchema-instance" xmlns\="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation\="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app\_3\_1.xsd" id\="WebApp\_ID" version\="3.1"\>
<!-- 配置前端控制器-DispatchServlet \-->
<servlet\>
<servlet-name\>springMvcNext</servlet-name\>
<servlet-class\>org.springframework.web.servlet.DispatcherServlet</servlet-class\>
<!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" \-->
<init-param\>
<param-name\>contextConfigLocation</param-name\>
<param-value\>classpath:applicationContext.xml</param-value\>
</init-param\>
</servlet\>
<servlet-mapping\>
<servlet-name\>springMvcNext</servlet-name\>
<url-pattern\>/</url-pattern\> <!--根据url-pattern设定的规则拦截用户发来的请求 此处拦截所有请求,包括静态资源 ->
</servlet-mapping\>
</web-app\>
其中标签中定义url匹配规则为符合*.action的形式,对应的servlet名为springMvcNext,而配置的控制器为org.springframework.web.servlet.DispatchServlet,该控制器为当前SpringMVC项目的前端控制器,标签为当前控制器依赖的参数,两个参数分别代表上下文参数和参数加载路径。
关于classpath:代表web项目编译后编译后的输出路径
配置spring MVC配置
在java源代码更目录下添加applicationContext.xml文件
具体内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns\="http://www.springframework.org/schema/beans" xmlns:xsi\="http://www.w3.org/2001/XMLSchema-instance" xmlns:p\="http://www.springframework.org/schema/p" xmlns:context\="http://www.springframework.org/schema/context" xmlns:mvc\="http://www.springframework.org/schema/mvc" xsi:schemaLocation\="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"\>
<!-- 包扫描器 标签将用于激活Spring MVC注释扫描功能,允许使用@Controller和@RequestMapping等注释。\-->
<context:component-scan base-package\="com.sl.controller" />
<!-- 注解驱动 \-->
<mvc:annotation-driven />
<!-- 配置视图解析器 \-->
<bean class\="org.springframework.web.servlet.view.InternalResourceViewResolver" id\="internalResourceViewResolver"\>
<property name\="prefix" value\="/WEB-INF/view/" />
<property name\="suffix" value\=".jsp" />
</bean\>
</beans\>
最后
面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典
想获取个人高清面试题的可以戳这里免费领取及个人也准备了很多面试题含答案的资料供你刷!
- Java核心知识整理
Java核心知识
- Spring全家桶(实战系列)
- 其他电子书资料
Step3:刷题
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
4759)]
- 其他电子书资料
[外链图片转存中…(img-D8B2JNeW-1628589234760)]
Step3:刷题
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
[外链图片转存中…(img-nfecPXJu-1628589234761)]