Spring Java配置:会话超时

弹簧框架徽标

当您可以使用基于Java的配置开发Spring应用程序时,我们生活在一个美好的时光。 不再有多余的XML代码,只有纯Java代码。 在本文中,我想讨论一个关于Spring应用程序中会话管理的热门话题。 更确切地说,我将以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,过滤器,侦听器上下文参数和属性来配置ServletContext

直接在这个地方,是回顾HttpSessionListener接口的好时机。 正如您已经在此接口的实现中猜到的那样,我们能够在应用程序中管理每个刚创建的会话。 例如,我们可以将最大非活动间隔设置为等于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怪胎,喜欢编码。

翻译自: https://www.javacodegeeks.com/2014/05/spring-java-configuration-session-timeout.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值