首先在springMVC.xml配置如下代码
<!-- 拦截器 --> <mvc:interceptors>
<bean class="com.base.AccessFilter"></bean> </mvc:interceptors>
然后再创建一个class实现想要拦截的方法即可,如(对应如上配置文件class路径)
package com.base; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.ujia.entity.User; public class AccessFilter implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { //获取登录session User user =(User) request.getSession().getAttribute("user"); //如果访问请求为首页,则通过 if(request.getRequestURI().startsWith(request.getContextPath()+"/spring/index.htm")){ return true; }else if(null==user){ //如果没有登录session,则返回到首页 response.sendRedirect(request.getContextPath()+"/spring/index.htm"); return false; } return true; } }
只需实现preHandle,所有请求都将先经过这个方法
拦截特殊请求,在springMVC配置里面加上
<!--将拦截特有的URL请求 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/admin/*" /> <bean class="com.base.admin" /> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/caes/*.trl" /> <bean class="com.base.caes" /> </mvc:interceptor> </mvc:interceptors>