1. 程式人生 > >ssm框架攔截器

ssm框架攔截器

equal util handle lean java ttr 創建 bool bject

1.ssm框架的攔截器是在springmvc-servlet.xml配置文件中進行配置

<!-- 攔截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" />
            <bean class="cn.com.***.controller.common.SecurityInterceptor">
                <!-- 不需要session驗證的地址 -->
                <property name="excludeUrls">
                    <list>
                        <value>/web/index</value>
                        <value>/web/aboutsPage</value>                                              
                    </list>
                </property>
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>

2.創建一個攔截器實體類,繼承HandlerInterceptor,重寫它的方法,preHandle是調用Controller具體方法之前攔截,postHandle是調用Controller具體方法之後攔截,afterCompletion是完成頁面後調用,所以在preHandle裏面寫邏輯代碼,如登入之後怎麽做,沒登錄這麽做,或者根據不同的登錄平臺進行跳轉之類的邏輯

package cn.com.***.controller.common;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import cn.com.***.common.pojo.WSessionInfo; import cn.com.***.common.result.Constant; /** * 權限攔截器 */ public class SecurityInterceptor implements HandlerInterceptor {
private List<String> excludeUrls;// 不需要攔截的資源 private List<String> wapUrls;//wapurl public List<String> getWapUrls() { return wapUrls; } public void setWapUrls(List<String> wapUrls) { this.wapUrls = wapUrls; } public List<String> getExcludeUrls() { return excludeUrls; } public void setExcludeUrls(List<String> excludeUrls) { this.excludeUrls = excludeUrls; } /** * 完成頁面的render後調用 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) throws Exception { } /** * 在調用controller具體方法後攔截 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView modelAndView) throws Exception { } /** * 在調用controller具體方法前攔截 */ @SuppressWarnings("unchecked") @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { //請求的路徑 String contextPath=request.getContextPath(); String url=request.getServletPath().toString(); StringBuffer realUrl = request.getRequestURL(); WSessionInfo sessionInfo = (WSessionInfo) request.getSession().getAttribute(Constant.SESSION_INFO); if (sessionInfo == null) { String isqian = url.substring(0, 4); if (isqian.equals("/wap")) { response.sendRedirect(contextPath + "/wap/adminLogin"); return true; }if (isqian.equals("/web")) { response.sendRedirect(contextPath + "/web/index"); } else if (realUrl.toString().equals(contextPath +"/web/index")) { response.sendRedirect(contextPath + "/wap/adminLogin"); return true; } } return true ; } }

ssm框架攔截器