spring MVC攔截器01,springmvc攔截01
spring MVC攔截
作用:身份校正,許可權檢查,防止非法訪問.
情境:一個bbs系統,使用者沒有登入就無法發帖或者刪除評論;
一個部落格系統,沒有登入就無法發表博文,無法增加分類,無法刪除博文.
spring MVC 攔截實現分為2步
(1)編寫攔截器類,必須繼承org.springframework.web.servlet.HandlerInterceptor
核心方法:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
在該方法中進行許可權校正,說白了,就是檢查是否已成功登入,核心代碼:
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { response.setCharacterEncoding("UTF-8"); HttpSession session = request.getSession(true); String loginFlag = (String) session .getAttribute(Constant2.SESSION_KEY_LOGINED_FLAG); if (loginFlag == null ||( !loginFlag.equalsIgnoreCase(Constant2.FLAG_LOGIN_SUCCESS))) { String path=request.getRequestURI();//"/demo_channel_terminal/news/list" System.out.println("您無權訪問:"+path); String contextPath=request.getContextPath(); request.setCharacterEncoding("UTF-8"); response.setStatus(401); response.sendRedirect(contextPath); return false; } return true; }
(2)配置spring MVC設定檔
我的spring MVC設定檔名稱叫spring2-servlet.xml
攔截器相關配置:
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/bbs/json_add_bbs"></mvc:mapping> <mvc:mapping path="/news/json_add_tips"></mvc:mapping> <bean class="com.web.controller.intercept.MemberInterceptor"> </bean> </mvc:interceptor> </mvc:interceptors>
解釋:當訪問/bbs/json_add_bbs和/news/json_add_tips 時就會應用攔截器類com.web.controller.intercept.MemberInterceptor(自訂的)
訪問其他路徑時不會應用該攔截器!!!
(3)項目結構
項目採用maven 構建
注意:
preHandle方法中返回false,就會終止request過程,即不會執行action;