(interceptors) 拦截器类似于spring aop和tomcat中过滤器,但是作用域不同。
AOP:针对特点方法前后进行扩充,一般对serviceimpl进行
拦截器:针对控制器方法进行控制。
一、步骤
1、在springmvc配置中声明一个拦截器。
<!--拦截器:拦截对于控制器的访问--> <mvc:interceptors> <!--拦截所有的控制器--> <bean class="com.lurenjia.interceptor.DemoInterceptor"></bean> <!--指定拦截的控制器--> <mvc:interceptor> <mvc:mapping path="/login"/> <mvc:mapping path="/main"/> <bean class="com.lurenjia.interceptor.DemoInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
2、编写拦截器实现类
实现HandlerInterceptor接口,重写方法。
public class DemoInterceptor implements HandlerInterceptor { @Override public boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception { //进入控制器之前执行 Object user = request.getSession().getAttribute("user"); if(user!=null){ //如果用户登录了,可以访问其它控制器 return true; }else { //如果用户没登录,则不允许访问其它控制器 response.sendRedirect("login.jsp"); return false; } } @Override public void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { //控制器执行完成,跳转之前 //数据流转 modelAndView.addObject("data","guaguagau"); //过滤敏感词 String word = modelAndView.getModel().get("data").toString(); String newWord = word.replace("敏感词","***"); modelAndView.getModel().put("data",newWord); //改变跳转路径 modelAndView.setViewName("error.jsp"); } @Override public void afterCompletion(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception { //跳转之后执行:用于记录执行过程中的异常 if(ex!=null){ System.out.println("存在异常"); } } }
标签:控制器,拦截器,http,SpingMVC,设置,modelAndView,servlet,javax From: https://www.cnblogs.com/lurenjia-bky/p/17181297.html