springMVC讲解
1.执行过程:
1、 用户发送请求至前端控制器DispatcherServlet
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、 执行处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、 ViewReslover解析后返回具体View
10、 DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户
2.常用注解:
@Controller
@RequestMapping(value="/demo"):确定请求访问位置
@RequestParam(value="url中请求的key") :方法里的形参和请求中的key不一致时,用此注解做映射。
@RequestMapping(method={RequestMethod.GET,RequestMethod.POST}):限定请求方式
@PathVariable:解析restful风格的参数
3.ModelAndView对象:
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("demo","demo");
modelAndView.setViewName("springMVC-demo");
如果使用Model则可以不使用ModelAndView对象,Model对象可以向页面传递数据,View对象则可以使用String返回值替代。不管是Model还是ModelAndView,其本质都是使用Request对象向jsp传递数据。
4.后台接收集合参数的方法:
5.springMVC可以处理异常。有异常处理机制
6.springMVC可以自定义配置拦截器,和过滤器类似。不过springMVC的拦截器可以在访问controller前,访问controller后进行拦截。详情请看程序总结案例。
(1)preHandle: 在执行controller处理之前执行,返回值为boolean ,返回值为true时接着执行postHandle和afterCompletion,如果我们返回false则中断执行
(2)postHandle:在执行controller的处理后,在ModelAndView处理前执行
(3)afterCompletion :在DispatchServlet执行完ModelAndView之后执行