设为首页 加入收藏

TOP

Spring Java 配置之 Session 超时
2014-11-23 23:19:36 来源: 作者: 【 】 浏览:7
Tags:Spring Java 配置 Session超时

我们生活在一个美好的时代,在这个时代你可以使用基于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极客们,祝你们编码愉快.


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java内存映射文件实现多线程下载 下一篇newLISP文件作为脚本运行

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: