1.SpringMVC:M,具体的业务逻辑;V,响应页面;C,处理过程的控制。
2.DispatcherServlet是整个SpringMVC的核心。它负责接收HTTP请求,组织协调SpringMVC的各个组成部分。其主要工作有以下三项:
2.1.截获符合特定格式的URL请求。
2.2.初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
2.3.初始化SpringMVC的各个部分组件,并装配到DispatcherServlet中。
二、SpringMVC的运行原理
1.客户端请求提交到DispatcherServlet;---前端控制器(需要在web.xml中配置,C)
2.由DispatcherServlet控制器,查询一个或多个HandlerMapping(映射处理器,C),找到处理请求的Controller(处理器,M)。
3.DispatcherServlet将请求提交到Controller。
4.Controller调用业务逻辑处理后,返回ModelAndView。
5.DispatcherServlet查询一个或多个ViewResolver(视图解析器,C),找到ModelAndView指定的视图。
6.视图负责将结果显示到客户端。
三、拦截器的作用
1.拦截器是对调用的action起作用,它提供类一种机制,可以使开发者在一个action执行前后,定义执行的代码。
2.拦截器只能拦截action,说白了拦截器其实就是一个action的功能块。
3.拦截器可以抽出一部分代码,用来完善原来的action,同时可以减轻代码冗余,提高重用率。
4.Spring的HandlerMapping处理器,支持拦截器应用。当需要为某些请求提供特殊功能时,例如对用户进行身份认证,就非常适用。
5.拦截器和过滤器的区别?
过滤器是拦截用户请求,范围比拦截器大。
四、拦截器接口
1.拦截器必须实现HandlerInterceptor接口,这个接口有以下3个方法:
1)preHandle(...)
处理器执行前被调用。方法返回true,表示会继续调用其他拦截器和处理器;返回false,表示中断流程,不会执行后续拦截器和处理器。
2)postHandle(...)
处理器执行后、视图处理前调用。此时可以通过ModelAndView对象,对模型或视图数据进行处理。
3)afterCompletion(...)
整个请求处理完毕后调用,如性能监控中,我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理。只有preHandle返回true时,才会执行afterCompletion方法。
五、拦截器的使用
1.自定义拦截器的示例代码如下:
public class SomeInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest req,
HttpServletResponse res, Object handler) throws Exception {
// 处理器执行前调用
return true;
}
public void postHandle(HttpServletRequest req,
HttpServletResponse res, Object handler, ModelAndView mv)
throws Exception {
// 处理器执行后调用
}
public void afterCompletion(HttpServletRequest req,
HttpServletResponse res, Object handler, Exception e) throws Exception {
// 请求完成处理后调用
}
}
2.提示:自定义拦截器时,实现HandlerInterceptor接口,需要实现接口定义的所有方法,如果只需要某一个方法,可以继承HandlerInterceptorAdapter。