java.lang.IllegalStateException: Cannot create a session aft

2012-2-21 16:10:11 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet default threw exceptionjava.lang.IllegalStateException: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2437) at org.apache.catalina.connector.Request.getSession(Request.java:2157) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:844) at com.avonaco.test.filter.WebResponseTime.doFilter(WebResponseTime.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.avonaco.test.filter.CharacterEncoding.doFilter(CharacterEncoding.java:24) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

别人访问的时候报错 java.lang.IllegalStateException: Cannot create a session after the response has been committed

有时候在操作Session时,,系统会抛出如下异常

java.lang.IllegalStateException: Cannot create a session after the response has been committed

之所以会出现此类问题是因为我们在Response输出响应后才创建Session的。

(因为那时候服务器已经将数据发送到客户端了,即:就无法发送Session ID 了)

解决办法:

你只需要在你的程序中将创建访问Session的语句【request.getSession()】提前至Response输出数据之前就好了。

例如改成下面的写法OK:

ServletOutputStream out = response.getOutputStream();// 最好这样紧挨着 response.getOutputStream()HttpSession seesion = request.getSession();seesion.setAttribute("xxx", rand);

// 输出数据out.print("<h1>hello</h1>");out.close();

转自:

PS:

最后我这里是因为有一个页面在js中写了个让session失效 而卧却又杂filter过滤器中 去获取session 当页面被初始化的时候要经过过滤器…因前一页面在js中写的失效方法 故编译的时候被加载进去 导致在经过过滤器的时候报错

记录沿途的心情。那样的生活才是我想要的。

java.lang.IllegalStateException: Cannot create a session aft

相关文章:

你感兴趣的文章:

标签云: