标签:system.in 通过 nts err web 日志 登录验证 current handle
SpringMVC的处理器拦截器类似于过滤器Filter,用于对处理器进行预处理和后处理。
例如做登录验证,日志,性能检测等。
一、编写拦截器,使其实现HandlerInterceptor接口
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.xxx.xxxx.pojo.User; public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { User user = (User) request.getSession().getAttribute("currentUser"); if(user == null){ request.getRequestDispatcher("/jsp/signin.jsp").forward(request, response); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
preHandle:预处理回调方法,实现处理器的登录检查,第三个参数为响应的处理器(Controller)
返回值:true表示继续流程(如调用下一个拦截器或处理器);
false表示流程中断,不会继续调用其他的拦截器或处理器;
postHandle:后处理回调方法,实现处理器的后处理、渲染视图之前,可以通过modelAndView对模型数据进行处理或对视图进行处理,modelAndView也可能为null。
afterCompletion:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的拦截器的afterCompletion。
二、SpringMVC配置文件中配置该拦截器
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/user/login"/> <!-- 登录请求 --> <mvc:exclude-mapping path="/user/register"/> <!-- 注册请求 --> <mvc:exclude-mapping path="/resources/**"/> <!-- 资源 --> <bean class="com.tfyc.vipsystem.interceptors.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors>
其中 exclude-mapping 中的请求是不拦截的
标签:system.in 通过 nts err web 日志 登录验证 current handle
原文地址:http://www.cnblogs.com/mochen1993/p/6064917.html