拦截器类似于过滤器,但拦截器只拦截Action,并且可以获取任意的Bean。本节将阐述如何使用拦截器。
1、前提约束
2、操作步骤
- 在src文件夹下创建net.wanho.system..java,内容如下:
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginIntecepterHandle implements HandlerInterceptor {
//api执行之前
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println("preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o)");
//获取存储在session中的用户信息
Object object = httpServletRequest.getSession().getAttribute("user");
if(object==null)
{
//如果用户信息为空,则重定向到登录界面,并且阻止向下执行
httpServletResponse.sendRedirect("/login.jsp");
return false;
}
return true;
}
//api执行之后,页面渲染之前
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView)");
}
//api执行之后,页面渲染之后
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e)");
}
}
- 修改spring-mvc.xml,加入以下内容:
<mvc:interceptors>
<!--配置的这个bean将拦截所有的请求-->
<!--<bean class="net.wanho.system.GlobalIntecepterHandle"></bean>-->
<mvc:interceptor>
<mvc:mapping path="/*"/>
<bean class="net.wanho.system.LoginIntecepterHandle"></bean>
</mvc:interceptor>
</mvc:interceptors>
- 启动tomcat,测试,任意的action请求都将被拦截。
以上就是springmvc中拦截器的使用。