java.lang.IllegalStateException 报错信息。怎么办?

wangjingtoo 2003-12-12 08:00:54
我使用Response.sendRedirect(goUrl)专页面。却老是报错,而且没有办法转页。
在页面上我使用了两个include。为什么在跳转页面的操作放在include之前就有意义,而放在include之后就没有意思,而且我include的内容都是属于静态页面。我实在找不出原因。希望大虾能帮帮忙。
...全文
202 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangjingtoo 2003-12-13
TO mor(安稼) :
难道include也会相当于PrintWriter的相同的功效?

TO : yoken(雨泉)
谢谢你的细心,我在程序里没有使用大写,还有你说使用jspf文件是什么意思?不太明白。

to 大家:
这个问题,我觉得是可能正如mor所说的那种打印的情况,我还需要测试,希望多多探讨!
  • 打赏
  • 举报
回复
noratong 2003-12-13
我觉得静态包含页面内容就相当于把那个页面的内容用这个页面的输出打印出来.
所以也就出现了你的这种情况.因为静态的包含,实际上就是以一个文件形式存在,也就是把两个文件组合成一个文件,而动态包含才会以两个文件的形式存在.我这里所说的存在不是我们看到的有个文件,而是概念上的理解.
我想你把它改成动态包含试试,或许可以避免这个问题;或者是把跳转的方法写在那个被包含的页面里试试.
  • 打赏
  • 举报
回复
wangjingtoo 2003-12-13
希望大家来参与!发生这种类似情况的讨论!
我来散分
  • 打赏
  • 举报
回复
mor 2003-12-12
如果在forward前close掉PrintWriter,可不可以呢?
  • 打赏
  • 举报
回复
mor 2003-12-12
一起研究,我在IBM的网站上找到了这个:

forward
public void forward(ServletRequest request, ServletReponse response) throws ServletException, IOException;

它用于将来自此Servlet的请求转发至 Web 服务器上的另一资源。当一个Servlet对请求进行初步处理并想要让另一对象生成该响应时,此方法很有用。

传送至目标对象的请求对象将调整自己的请求 URL 路径和其他路径参数,以反映目标对象的目标 URL 路径。

若已从响应中获得 ServletOutputStream 对象或 PrintWriter 对象,则不能使用此方法。在这种情况下,该方法抛出 IllegalStateException。

例子
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
PrintWriter out = res.getWriter();
out.println(message);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/myHello.jsp");
rd.forward(req, res);
}
按上面的例子,每个JSP当然都会调用PrintWriter来做显示,此时再进行跳转,就会产生一个IllegalStateException
  • 打赏
  • 举报
回复
yoken 2003-12-12
我把response.sendRedirect(goUrl)放到include后面没问题
<%@ include file="/web-inf/jspf/checkSessionTimeout.jspf" %>
另外Response-〉response
  • 打赏
  • 举报
回复
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
申请成为版主
帖子事件
创建了帖子
2003-12-12 08:00
社区公告
暂无公告