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)完成之後執行。可以用來清理資源。