前言:
前一段时间学习了SpringMVC,但是由于本人学习缺少耐心和独立思考,所以当时学习SpringMVC时,只是照搬框架而已,对SpingMVC的工作原理和流程对不是很了解,导致后来的学习时总是觉得思路不是很通顺,对学习事倍功半,所以今天特别总结了一下SPringMVC的工作原理流程,希望对自己的今后学习有些帮助。
正文:
1.SpringMVC是基于Sping的一个Web框架,具有Spring容器IOC(反转控制)和AOP(切面编程)的优点,总之SpringMVC具有Spring的所有优点
2.SpringMVC是围绕 DispatcherServlet编写的,它处理所有的HTTP请求和响应,
DispatcherServlet对请求的处理顺序:
(1)在接收到HTTP请求后,DispatcherServlet会调用相应的Controller
(2)Controller根据请求的方法(GET/POST)调用相应的服务方法,最后返回视图名称给DispatcherServlet
(3)DispatcherServlet调用ViewResolver解析视图名称,
(4)DispatcherServlet将模型数据传给视图,并将视图呈现在浏览器。
2.必须的配置
2.1 web.xml示例:
重点:
web.xml配置在web应用程序的web/WEB-INF 目录下,在DispatcherServlet初始化时,框架默认从web/WEB-INF目录下查找[servlet-name]-servlet.xml文件加载应用程序上下文。
如果不想使用默认的[servlet-name]-servlet.xml文件名和默认的位置web/WEB-INF ,可以通过在web.xml中添加servlet监听器ContextLoaderListener定义文件名和文件位置
示例:
注:Spring应用程序ContextLoaderListener将读取其他XML配置文件加载应用程序上下文。
2.2 [servlet-name]-servlet.xml 示例:
[servlet-name]-servlet.xml 说明
(1)[servlet-name]-servlet.xml 主要作用:创建定义好的java bean
(2)<context:component-scan base-package =... /> :启动SpingMVC注释扫描功能,生成对应的java bean示例对象
(3)InternalResourceViewResolver:视图解析器
3. SpringMVC工作流程
4.控制器和方法
(1)"redircet:" 控制器的重定向:使用前缀“redirect:”,该方法返回字符串,重定向到其他视图
(2)@RequestParam 将请求参数绑定到控制器方法参数 示例:@RequestParam(value=“name”,defaultValue=“user”)String name
(3)@PathVariable 将方法参数绑定到一个URI模板变量的值
示例:
在这里顺便把URL,URI,ContextPath理一下:
URL:http://localhost:8080/HelloSpringMVC/web/fe/default/en/document/8108/spring-mvc-for-beginners
URI:/web/fe/default/en/document/8108/spring-mvc-for-beginners
ContextPath:/HelloSpringMVC
5.@RequestBody 和 @ResponseBody
(1) @RequsetBody 注解:读取requset请求body的数据,解析后将返回的对象绑定到controller方法的参数
(2)@ResponseBody注解:将controller方法的返回对象写到Response对象的body 使用时机:当返回数据不是html标签的页面,而是其他格式的数据时(json,xml)。
6.SpringMVC请求参数获取的方式
详见下一章
7.<context:component-scan /> 和 <mvc:annotation-driven /> 区别:
之前在配置[servlet-name]-servlet.xml 文件时,总是搞不清楚两者的区别,只是照抄,今天刚好来总结一下
区别:
(1)<context:component-scan Java基础应用心得 /> :启动SpringMVC注解扫描功能,将带有@Controller ,@Service 等注解类注册到Spring容器,应应用的是Spring IOC(反转控制)
(2)<mvc:annotatiion-driven/> : 主要功能是处理请求映射,决定哪个controller的哪个方法来处理当前请求。
8.appilcationContext.xml 和 [servlet-name]-servlet.xml 区别:
区别:
(1)applicationContext.xml 是Spring全局配置文件,控制Spring的功能特性,如:IOC ,AOP等,
(2)两个配置文件的位置和作用:
applicationContext.xml 是系统级别的配置,作用范围是应用程序上下文
[servket-name]-servlet.xml 是servlet级别的配置,作用范围是servlet上下文
(3)在web.xml的配置:
applicationContext.xml : 在<context-param /> <listener/>初始化
[servlet-name]-servlet.xml : 在DispatcherServlet初始化时初始化,默认位置在WEB-INF/ 目录下,默认文件名为[servlet-name]-servlet.xml,当没有自定义servlet配置文件位置,且默认目录也没有配置servlet配置文件时,服务器启动会报错。
注意:
因为servlet配置文件只负责请求的转发,返回结果的解析,以及静态资源文件的解析,所以除了视图的解析方式,静态资源文件的存放位置,Controller的初始化之外,其他的都不应该存在servlet配置文件。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25446.html