SpringMVC的概念
是一个web层框架,本质是一个巨大的servlet;
所有的请求都会发送到SpringMVC这个servlet:@WebServlet(“/”);
所有的相应都是有SpringMVC发出;
SpringMVC将请求分发到对应的Java类;
SpringMVC容器:管理很多个Java类的实例,分发请求的对象;
Web:用于处理跳转和数据传递的问题;
SpringMVC如何使用
首先需要引入SpringMVC需要的Jar包,下载地址:http://repo.spring.io/release/org/springframework/spring/
配置SpringMVC这个Servlet,在web.xml中配置为servlet;
SpringMVC是一个Servlet,用于接收 *.action的请求;
配置SpringMVC的核心配置文件;
SpringMVC的核心配置文件本质上是一个Spring的配置文件;需要找到bean的实例;
告诉DispatcherServlet要使用的核心配置文件在哪儿;
核心配置文件需要配置什么内容:
请求线:
SpringMVC本身就是一个Spring的概念:管理bean和bean之间的关系;
SpringMVC这个servlet需要找到普通Java类(bean)
响应线:
视图对应:SpringMVC给的是逻辑视图——需要转换为物理视图
返回的响应有很多种,通过逻辑视图的方式去寻找物理视图(类似键值对的方式)
视图解析器:
实现SpringMVC管理的控制层的类:Controller;
是SpringMVC分发请求的普通Java类
通过包扫描,HelloController类就会成为SpringMVC能够直接使用的bean实例
通过视图解析,返回值result就会被解析为:/result.jsp;
@RequestMapping:是映射URL的关键;
SpringMVC的配置详解
@RequestMapping的配置
1、窄化请求
该类下所有的方法的请求路径都会携带上层路径信息
2、限制http请求方法
设定只能接收post或者get请求,若不是则会报错;
controller方法的返回
1、返回String
直接返回逻辑视图名,通过视图解析器解析,定位到屋里视图;
重定向和请求转发:
重定向:返回”redirect:+路径”;
请求转发:返回”forward:+路径”
实例:
在重定向中:request是第二个请求,得不到值;请求转发的时候,request是同一个请求,可以得到值;
2、返回void
返回void的时候,直接使用原生的request和response对象来进行相应的返回
3、返回ModelAndView
Model:参数模型
View:视图
ModelAndView可以同时完成参数的传递和页面的跳转,取代了取代了request.setAttribute(),session.setAttribute....
4、Model/ModelMap/Map/View
Model:一个模型对象,主要包含spring封装好的model和modelMap,以及java.util.Map,当没有视图返回的时候视图名称将由requestToViewNameTranslator决定;
ModelMap:ModelMap 返回值为modelMap时,响应的URL和请求的URL一致。只是存储在MpdelMap中的数据可以在jsp页面中取出。
Map:与ModelMap类似。在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。响应的URL和请求的URL一致
View:可以返回pdf、excel等
注:
使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。
使用void,map,Model 时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。
使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。
PS:因作者能力有限,如有误还请谅解;