我們生活在一個美好的時代,在這個時代你可以使用基於java的配置來開發一個Spring應用程序. 再也沒有多余的XML代碼了,只有純正的java代碼. 本文中我想要討論一下關於Spring應用程序中的session管理這裡流行主題. 更確切的目的是我將會說說java配置風格會話超時配置.
而在我之前的一篇 博文 中, 我已經談到了如何去管理一個會話的生命周期. 但是那一種方案需要使用web.xml文件,而在基於java的配置中是不需要的. 因為其作用是操作一個擴展了 AbstractAnnotationConfigDispatcherServletInitializer 的類. 它經常看起來像下面這樣:
import javax.servlet.Filter;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class Initializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebAppConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
protected Filter[] getServletFilters() {
return new Filter[] { new HiddenHttpMethodFilter() };
}
}
我已經寫過很多有關使用 這種配置 的東西, 而這裡我們應該給那些 AbstractAnnotationConfigDispatcherServletInitializer 擴展的類以更多的關注. 我講的是 AbstractDispatcherServletInitializer 類. 在它那裡它擁有 onStartup(ServletContext servletContext) 方法. 其目的是配置一個帶有任何用於初始化一個web應用程序的servlet、filter、listener、context-param以及attribute這些東西的ServletContext.
直接在這裡回想起HttpSessionListener接口是一個很好的時機. 由於你已經猜到了這個接口的一個實現,只要在一個應用程序中創建一個Listener,就能管理每一個會話了. 例如,我們可以將最大的非活動時間設置為5分鐘:
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent event) {
System.out.println("==== Session is created ====");
event.getSession().setMaxInactiveInterval(5*60);
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("==== Session is destroyed ====");
}
}
為了將這一會話管理上的變化應用於我們基於java的配置中,我們要將下面的代碼片段加入Initializer類中:
...
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new SessionListener());
}
...
就是這些了,所有的java極客們,祝你們編碼愉快.
Spring 的詳細介紹:請點這裡
Spring 的下載地址:請點這裡
Spring中如何配置Hibernate事務 http://www.linuxidc.com/Linux/2013-12/93681.htm
Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm
基於 Spring 設計並實現 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm
Spring-3.2.4 + Quartz-2.2.0集成實例 http://www.linuxidc.com/Linux/2013-10/91524.htm
使用 Spring 進行單元測試 http://www.linuxidc.com/Linux/2013-09/89913.htm
運用Spring注解實現Netty服務器端UDP應用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm
Spring 3.x 企業應用開發實戰 PDF完整高清掃描版+源代碼 http://www.linuxidc.com/Linux/2013-10/91357.htm