1.springMVC介绍
1.1SpringMVC是什么
它是基于MVC开发模式的框架,用来优化控制器.它是Spring家族的一员.它也具备IOC和AOP.
什么是MVC?
它是一种开发模式,它是模型视图控制器的简称.所有的web应用都是基于MVC开发.
M:模型层,包含实体类,业务逻辑层,数据访问层
V:视图层,html,javaScript,vue等都是视图层,用来显现数据
C:控制器,它是用来接收客户端的请求,并返回响应到客户端的组件,Servlet就是组件
1.2执行流程
MVC流程
(1)当用户通过浏览器发起一个HTTP请求,请求直接到前端控制器DispatcherServlet;
(2)前端控制器接收到请求以后调用处理器映射器HandlerMapping,处理器映射器根据请求的URL找到具体的Handler,并将它返回给前端控制器;
(3)前端控制器调用处理器适配器HandlerAdapter去适配调用Handler;
(4)处理器适配器会根据Handler去调用真正的处理器去处理请求,并且处理对应的业务逻辑;
(5)当处理器处理完业务之后,会返回一个ModelAndView对象给处理器适配器,HandlerAdapter再将该对象返回给前端控制器;这里的Model是返回的数据对象,View是逻辑上的View。
(6)前端控制器DispatcherServlet将返回的ModelAndView对象传给视图解析器ViewResolver进行解析,解析完成之后就会返回一个具体的视图View给前端控制器。(ViewResolver根据逻辑的View查找具体的View)
(7)前端控制器DispatcherServlet将具体的视图进行渲染,渲染完成之后响应给用户(浏览器显示)。
2.基于注解配置SpringMVC
2.1 新建项目
2.2 调整项目结构
2.3 pom文件添加依赖
2.4 在web.xml文件中注册DispatcherServlet
这是一个Servlet 要配置全类名,前缀,后缀
2.5 使用注解进行开发
@Controller
@RequestMapping
3.优化
3.1 提交方式的优化
六种优化:单个数据提交,对象封装提交,动态占位符提交,映射名不一致时,手工提取数据,中文乱码
3.2 action返回值
1)String:客户端资源的地址,自动拼接前缀和后缀.还可以屏蔽自动拼接字符串,可以指定返回的路径.
2)Object:返回json格式的对象.自动将对象或集合转为json.使用的jackson工具进行转换,必须要添加jackson依赖.一般用于ajax请求.
3)void:无返回值,一般用于ajax请求.
4)基本数据类型,用于ajax请求.
5)ModelAndView:返回数据和视图对象,现在用的很少
3.3 ajax请求
function show() {
$.ajax({
url:"${pageContext.request.contextPath}/ajax.action",
dataType:"json",
type:"get",
success:function (list) {
var s="";
$.each(list,function (i,stu) {
s+=stu.name+"----"+stu.age+"<br>";
});
$("#mydiv").html(s);
}
});
}
在控制器方法上添加@ResponseBody,来处理ajax请求
3.4 四种跳转方式
不需要配置渲染器 返回类型为void
请求 return “main”
无渲染器时,直接返回jsp页面 return “redirect:index.jsp”;
有渲染器时,重定向 return “redirect:/admin/main.jsp”
4 springMVC其他使用
4.1 直接使用的参数
1)HttpServletRequest
2)HttpServletResponse
3)HttpSession
4)Model
5)Map
6)ModelMap
4.2日期处理
A.单个日期处理
要使用注解@DateTimeFormat,此注解必须搭配springmvc.xml文件中的mvc:annotationdriven标签
B.类中全局日期处理
注册一个注解,用来解析本类中所有的日期类型,自动转换.
JSTL日期显示处理
添加依赖
页面导入标签库
使用
4.3 拦截器拦截器执行的时机
1)preHandle():在请求被处理之前进行操作,预处理
2)postHandle():在请求被处理之后,但结果还没有渲染前进行操作,可以改变响应结果,后处理
3)afterCompletion:所有的请求响应结束后执行善后工作,清理对象,关闭资源 ,最终处理.
拦截器实现的两种方式
1)继承HandlerInterceptorAdapter的父类
2)实现HandlerInterceptor接口,实现的接口,推荐使用实现接口的方式
拦截器实现的步骤
1)改造登录方法,在session中存储用户信息,用于进行权限验证
2)开发拦截器的功能.实现HandlerInterceptor接口,重写preHandle()方法
3)在springmvc.xml文件中注册拦截器