通過spring的攔截器實現Filter的功能

package com.highcom.literature.util.interceptor;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.ModelAndViewDefiningException;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.highcom.literature.LTBContextNotExistException;
import com.highcom.literature.LTBackContext;
import javax.servlet.http.*;

/**
 * Title: SignonInterceptor.java
 * 
 * Description:
 *
 * Copyright: Copyright (c) 2005
 *
 * Company: HighCom
 *
 * @author Xinbo Li
 *
 * @version 1.0
 *
 * 創建時間:2005-6-29 11:10:16
 */
public class SignonInterceptor extends HandlerInterceptorAdapter {

    /**
     * 構造函數
     */
    public SignonInterceptor() {
     
    }
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws
Exception {
       
        try {
            LTBackContext ctx = LTBackContext.getLTBackContext(request);
          }
          catch (LTBContextNotExistException ex) {
            String url = request.getServletPath();
            String query = request.getQueryString();
            ModelAndView modelAndView = new ModelAndView("/sys_manage/need_login");
            if (query != null) {
              modelAndView.addObject("signonForwardAction", url + "?" + query);
            }
            else {
              modelAndView.addObject("signonForwardAction", url);
            }
            throw new ModelAndViewDefiningException(modelAndView);
          }
          return true;
    }
}

對應的xml配置


 <bean id="sysHandlerMapping"
  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="interceptors">
      <list>
        <ref local="signonInterceptor"/>
      </list>
    </property>
  <property name="urlMap">
   <map>
     <entry key="/index_sys.do">
     <ref local="sysWorkAction" />
    </entry>
 </map>
  </property>
 </bean>

   <bean id="signonInterceptor"
  class="com.highcom.literature.util.interceptor.SignonInterceptor">
  <description>登陸攔截器</description>
 </bean>

boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;
    這個方法在自己的應用方法執行之前,返回true的時候繼續執行操作,如果false,說明沒有通過,那麼自己的方法也就不會執行。

    void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception;
    這個方法在自己的應用方法執行之後,在DispatcherServlet類導向到view之前執行。可以往view中添加額外的model對象。

    void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception;
    一個Callback方法,請求過程(request processing)完成之後執行。可以用來清理資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章