会话在表单提交时到期

时间:2012-02-23 11:05:52

标签: html jsp session servlets

有一种情况,我有一个表单,从我的应用程序显示为动态弹出各种事件。我填写表格并提交,导致会话到期。

我发现在表单中打印请求标头的值时,我发现缺少jsession id或者有时会创建新的jseesion id。

这种情况并不常发生。在工作的情况下,我不会错过任何jsession id或获得不同的jseesion id。

有什么建议吗?

以下是代码示例。

<HTML>
 <HEAD>
  </HEAD>
   <%
  Enumeration<String> headerNames = request.getHeaderNames(); 
 while (headerNames.hasMoreElements())
 { 
    String headerName = headerNames.nextElement();
  String headerValue = request.getHeader(headerName);
   System.out.println("Header Name   " +headerName );
  System.out.println("headerValue   " +headerValue );
 } 
 %>
 <body>
 Comments </br>
<form name = 'savefrm' action ='save.jsp'>
<textarea name = 'comments' id = 'text' cols=38 rows=8>"+comments.trim()+"</textarea>
<input type="submit" value="ok"/>
</form>
 </body>
 </html>

2 个答案:

答案 0 :(得分:1)

您应该通过web.config设置会话超时,如下所示:

<configuration>
  <system.web>
     <sessionState timeout="100000"></sessionState>
  </system.web>
 </configuration>

1000 ms = 1秒

答案 1 :(得分:1)

在web.xml文件中:

<web-app>
    <session-config>
        <session-timeout>20</session-timeout>
   </session-config>
</web-app>

20 = 20分钟

或者您可以在代码中执行此操作:

HttpSession session = request.getSession();
session.setMaxInactiveInterval(20*60);

20 * 60 = 20分钟