一、SpringMVC 执行流程
1. 流程图
2. 文字描述
代码语言:javascript
复制① 浏览器发送请求到服务器,DispatcherServlet(前端核心控制器) 匹配所有请求
② DispatcherServlet 将 url 发送给 HandleMapping(处理器映射器)
③ HandleMapping 查找是否有符合该路径的方法,有则将方法全限定名返回给 DispatcherServlet,没有则报 404
④ DispatcherServlet 拿到 HandleMapping 返回的全限定名,将其交给 HandleAdapater(处理器适匹配器)
⑤ HandleAdpater 拿到全限定名后执行方法
⑥ 方法返回 视图名称,HandleAdpater 将其返回给 DispatcherServlet
⑦ DispatcherSerclet 拿到 视图名称 后,将其交给 ViewResolver(视图解析器)
⑧ ViewResolver 拿到 视图名称 查找是否有匹配的资源
⑨ 有则将 视图 返回给 DispatcherServlet
⑩ DispatcherServlet 拿到 视图 后,将其交给 View 渲染,填充数据后,DispatcherServlet 将 视图 响应给浏览器
二、springMVC组件
1. 前端控制器
代码语言:javascript
复制- DispatcherServlet
整个流程控制的核心,调用其他组件处理用户的请求,降低了组件之间的耦合性
2. 三大组件
代码语言:javascript
复制- HandleMapping
根据用户请求找到 Handle
- HandleAdpater
执行 Handle
- ViewResolver
将结果处理成 View
3. 其他组件
代码语言:javascript
复制- Handle 【自己写的controller层】
业务逻辑
- View 【JSP、HTML】
渲染 View
三、spring的注解以及配置
1. 配置监听 web.xml
代码语言:javascript
复制<!-- 配置全局参数 applicationContext 配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2. 配置 spring-mvc.xml
代码语言:javascript
复制<!-- 开启组件扫描 -->
<context:component-scan base-package="com.softwareMan.controller" />
<!-- 配置视图解析器前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
3. 配置前端核心控制器
代码语言:javascript
复制<!-- 配置前端核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
4. 注解
代码语言:javascript
复制① RequestMapping
- 属性
* value:用于指定请求的URL。它和path属性的作用是一样的
* method:用于指定请求的方式
* params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样
* headers : 指定限制请求的请求头信息!
- @RequestMapping(value = "/find",method = RequestMethod.GET,params = "name",headers = "请求头")
5. 参数封装
代码语言:javascript
复制- 在方法上添加参数列表,变量名一致或自动封装
method(String str,int i)
method(User user)