一,基本概念
1.DispatcherServlet:前端控制器。
浏览器的请求通过DispatcherServlet的分发到达合适的controller,从而生产业务数据Model,Model再通过DispatcherServlet传递给View来实现最后的页面呈现。因此MVC将数据业务逻辑和页面实现分离的核心是DispatcherServlet。
2.Controller:控制层。
调用业务逻辑生成Model的地方。
3.HandlerAdapter:适配器模式。
将各种不同类型的Handler适配成DispatcherServlet可以使用的Handler,这样DispatcherServlet就可以很轻松地调用Controller。
4.HandlerInterceptor:拦截器。
在被拦截对象的两侧加入一些处理,可在调用controller前后以及Model发送到view完成呈现之后做拦截。
5.HandlerMapping:DispatcherServlet和Controller之间的映射关系类。
作用:
A.告诉DispatcherServlet请求到来后由哪个Controller来响应。
B.在HandlerMapping做完A工作之后,它可以给DispatcherServlet一个HandlerAdapter,HandlerAdapter包括controller和HandlerInterceptor。
6.HandlerExecutionChain:执行链条。
就是第5条中的作用B提到的controller和HandlerInterceptor一起构成的一个执行链条。
7.ModelAndView:Model的具体表现形式。
spring MVC可以用Model类或者Map类等来实现Model的功能,但DispatcherServlet会将这些类都转换成ModelAndView。
8.viewResolver:视图解析器。
根据配置找出合适的视图对象返回给DispatcherServlet来调用。
9.view:视图对象。负责呈现页面。
二.spring MVC的配置
1.spring的声明:配置spring的上下文即applicationContext.xml的路径(在web.xml中配置 )
2.配置DispatcherServlet : springMVC的上下文即DispatcherServlet.xml的路径(在web.xml中配置)
3.mvc-dispatcher-servlet.xml的配置
4.applicationContext.xml的配置
exclude-filter 表明spring上下文不需要管理Controller
三.spring MVC实操
1.spring MVC的注解
@Controller :声明一个Controller
@RequestMapping : 映射url和方法,类级别和方法级别的RequestMapping共同组合完成对一个url映射请求的拦截
URL template 结合 @RequestParam 和 @PathVariable 两个标记 可以将url路径中的参数绑定到方法的参数
传统方法:通过HttpServletRequest 或 HttpSession获取对象
2.spring MVC数据绑定
@ModelAttrbute :实现模型对象和页面数据的绑定
注意:表单提交数据时页面字段的name属性应当和模型对象的属性名称一致
3.JSON
spring MVC 使用ContentNegotiatingviewResolver处理相同数据的不同呈现方式
@ResponseBody :说明返回的对象会被响应所使用
ResponseEntity :spring MVC抽象出的一个实体,用泛型的方式包裹类,返回它的实例就可以返回一个响应的对象
4.单文件上传
A.配置CommonsMultipartResolver :解析上传的文件
B.上传表单需要加属性 enctype="multipart/form-data"
C.编写Controller
MultipartFile : spring MVC提供的访问上传文件的接口