首先在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>
