标签:拦截器 SpringMVC 方法 servlet 调用 拦截 true
文章目录
1SpringMVC拦截器
1.1拦截器的作用
SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理
将拦截器按一定的顺序联结成一条链,这条链成为拦截器链。在访问被拦截方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体体现
1.2拦截器和过滤器的区别
区别 | 过滤器 | 拦截器 |
---|---|---|
使用范围 | 是Servlet规范中的一部分,任何Javaweb工程都可以使用 | 是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用 |
拦截范围 | 在url-pattern中配置了/*之后,可以对所有要访问的资源拦截 | 只会拦截访问的控制器方法,如果访问的是jsp,html,css,image或者是js都不会被拦截的 |
1.3拦截器快速入门
自定义拦截器很简单,只需要如下三步
- 创建拦截器类实现HandlerInterceptor接口
- 配置拦截器
- 测试拦截器的拦截效果
创建拦截器类实现HandlerInterceptor接口
package com.blb.Interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Myintercep implements HandlerInterceptor {
//目标方法执行之前执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String pass = request.getParameter("pass");
System.out.println("pre");
//判断是否符合条件进行拦截
if("yes".equals(pass))
return true ;
response.sendRedirect("error.jsp");
return false;//返回true放行 返回false不放行
}
//目标方法执行之后,视图对象返回之前执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("post");
}
//在流程都执行完之后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("after");
}
}
配置拦截器
<!--配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 对哪些资源进行拦截操作 -->
<mvc:mapping path="/**"/>
<!-- 配置对哪些资源不进行拦截-->
<mvc:exclude-mapping path="/"/>
<bean class="com.blb.Interceptor.Myintercep"></bean>
</mvc:interceptor>
</mvc:interceptors>
1.4拦截器方法说明
方法名 | 说明 |
---|---|
preHandler() | 方法在请求处理之前调用,该方法的返回值时Boolean类型的,当他返回false时,表示请求结束后续的intercept和Controller都不会在执行;当返回值为true时就会继续调用下一个Intercept和PerHandle方法 |
postHandle() | 该方法是在请求处理之后被调用,前提是preHandle方法返回的值为true时才能被调用,且他会在DispatcherServlet进行视图返回渲染之前被、调用,所以我们可以在这个方法中对Controller处理之后的ModelAndView对象进行操作 |
afterCompletion() | 该方法将在整个请求之后,也就是在DispatcherServlet渲染了对应的视图之后执行,前提是preHandler方法的返回值为true时才能被调用 |
标签:拦截器,SpringMVC,方法,servlet,调用,拦截,true 来源: https://blog.csdn.net/m0_45432976/article/details/115078691
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。