如何从web.xml文件中读取会话超时时间

5
如何从web.xml文件中读取session-timeout?尝试了以下方法:
getServletContext().getAttribute("session-timeout").toString(); 

但是却给我抛出了NullPointerException异常。

也尝试了

getServletConfig().getInitParameter("session-timeout");

但是它返回了null,因为显然这不是一个init-param

2个回答

9

这是一个简短的代码。

int sessionTimeoutFromWebXml = Integer.parseInt(XPathFactory.newInstance().newXPath().compile("web-app/session-config/session-timeout").evaluate(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(getServletContext().getResourceAsStream("/WEB-INF/web.xml"))));

;)


由于此代码有点复杂,是否有一种方法可以从“public”“static”变量中设置web.xml中的值?或者从ContextListener的contextInitialized方法中设置该值?这样,我只需在一个地方编写此值。 - theyuv

1

它应该是这样的

   session.getMaxInactiveInterval();

它将返回以秒为单位的时间。

1
是的,我知道,但有没有办法直接从web.xml中读取该属性呢? - MaVRoSCy
我也在想,一个声誉如此好的人怎么可能不知道呢 ;). 好吧,我猜我们得读取整个 XML 文件,找到 session-timeout 元素,然后检查其值。我不太确定。也许这里的专家可以帮助我们两个。 - Prasad Kharkar
实际上,getMaxInactiveInterval() 返回的是以秒为单位的时间。 - MaVRoSCy
1
信息以分钟为单位存储,但您只能获得以秒为单位的返回值,这有点奇怪。 - MaVRoSCy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接