您的位置:首页 > 编程语言 > Java开发

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

2012-09-21 22:28 531 查看
有时候在操作Session时,系统会抛出如下异常

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

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

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

解决办法:

1.创建访问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();



2.如果使用了Struts2可以在struts.xml中添加一个默认的拦截器:

<interceptor-ref name="createSession"/>

<interceptor-ref name="defaultStack"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐