郁闷,response.sendRedirect()抱错

apengyun 2003-12-22 11:45:07
我在调试JSP文件时,websphere总报这种错误,邀请大虾帮忙解决一下。
<html>
<body>
response.sendRedirect("RedirectPage");
</body>
</html>

错误如下:
WebGroup E SRVE0026E: [Servlet 错误]-[]:java.lang.IllegalStateException
at com.ibm.ws.webcontainer.srt.SRTServletResponseContext.sendRedirect(SRTServletResponseContext.java:101)
at com.ibm.ws.webcontainer.srt.SRTServletResponse.sendRedirect(SRTServletResponse.java:679)
at org.apache.jsp._detailpb._jspService(_detailpb.java(Compiled Code))
at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:364)
at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(JspServlet.java:694)
at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.service(JspServlet.java:792)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:923)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:528)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:176)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:201)
at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:114)
at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:186)
at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:516)
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:366)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
...全文
60 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒冬 2003-12-23
  • 打赏
  • 举报
回复
response.sendRedirect("RedirectPage");中的RedirectPage不用加后缀吗?我用时都加的

比如说response.sendRedirect("RedirectPage.jsp")如果是变量;也不用加引号直接用
response.sendRedirect(RedirectPage);

LiGun 2003-12-22
  • 打赏
  • 举报
回复
<%response.sendRedirect("RedirectPage");%>
laubin 2003-12-22
  • 打赏
  • 举报
回复
<%response.sendRedirect("RedirectPage");%>
pleonheart 2003-12-22
  • 打赏
  • 举报
回复
<html>
<body>
<%
response.sendRedirect("RedirectPage");
%>
</body>
</html>
upcmill 2003-12-22
  • 打赏
  • 举报
回复
主要就是在转向前存在输出造成的,跟在asp中的原理一样
chashui 2003-12-22
  • 打赏
  • 举报
回复
帮你up
alienbat 2003-12-22
  • 打赏
  • 举报
回复
在response提交之后使用sendRedirect()或者sendError都会造成IllegalStateException。
你确认一下在response.sendRedirect("RedirectPage");之前有没有response.flush()。
如果没有,删除之前所有的out.print()
apengyun 2003-12-22
  • 打赏
  • 举报
回复
lixiang823517(泥浆)
有什么建议吗?
lixiang823517 2003-12-22
  • 打赏
  • 举报
回复
来晚了!
apengyun 2003-12-22
  • 打赏
  • 举报
回复
fireiceman(冰火)
这行语句必须在所有对浏览器的输出之前执行.
所以你要写成这样:
<%response.sendRedirect("RedirectPage");%>
<html>
<body>
</body>
</html>
=========================
说的对。

可是我测试一下。<html>
<body>
<%response.sendRedirect("RedirectPage");%>
</body>
</html>
是能够正常跳转的。
不能正确执行的情况是很少的。我看是不是与缓冲区有关。因为缓冲区填满后输出,就无法redirect了。




allof01 2003-12-22
  • 打赏
  • 举报
回复
惭愧,学习
fireiceman 2003-12-22
  • 打赏
  • 举报
回复
这行语句必须在所有对浏览器的输出之前执行.
所以你要写成这样:
<%response.sendRedirect("RedirectPage");%>
<html>
<body>
</body>
</html>
ManFirst 2003-12-22
  • 打赏
  • 举报
回复
呵呵。
apengyun 2003-12-22
  • 打赏
  • 举报
回复
向两位专家致谢,我将代码搞错了。原代码就是这样的。
<html>
<body>
<%response.sendRedirect("RedirectPage");%>
</body>
</html>
其实这也不是原代码。我想问的是在jsp中使用response.sendRedirect()时,报java.lang.IllegalStateException错误是什么原因,如何解决。
出现这种错误的情况是html代码之前,有一大段逻辑代码。在html中加上<%response.sendRedirect("RedirectPage");%>就会在<b>运行期间</b>报错。

allof01 2003-12-22
  • 打赏
  • 举报
回复
同意2、3楼,scriplet语句必须被放在<% %>之间。
chsun 2003-12-22
  • 打赏
  • 举报
回复
注意你的目录,应该是:
<%response.sendRedirect("/上下文目录/相对于webapp目录/RedirectPage");%>

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧