servlet出现这样的例外是怎么回事?应该如何解决?

nova1980 2003-03-15 08:17:44
500 Servlet Exception
java.lang.IllegalStateException: Can't sendRedirect() after data has committed
to the client.
at com.caucho.server.http.Response.sendRedirect(Response.java:607)
at JavaShareServlet.doGet(JavaShareServlet.java:167)
at JavaShareServlet.doPost(JavaShareServlet.java:211)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
at com.caucho.server.http.Invocation.service(Invocation.java:312)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:221)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
at java.lang.Thread.run(Thread.java:536)


--------------------------------------------------------------------------------
对应代码是

if(IsEqual.equals(operateFlag,"saveAddPackage"))
{
checkIsLogin(request,response,loginFlag);
String s = saveAddPackage(request,session);
session.setAttribute("addPackageResult",s);
response.sendRedirect(getPath(request) + "?operateFlag=addPackage");//167 line
}

public void checkIsLogin(HttpServletRequest request,
HttpServletResponse response,String sessionMessage)
throws ServletException,IOException
{
if(!IsEqual.equals(sessionMessage,successMessage))
{
response.sendRedirect(getPath(request) + "?operateFlag=Login");
}
}
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bubblebird 2003-03-17
  • 打赏
  • 举报
回复
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(resquest.response);
mxlmwl 2003-03-16
  • 打赏
  • 举报
回复
不同意楼上的说法,是因为sendRedirect这个函数并不支持参数的传递,所以在这里要返回页面不能用这个函数,而是要用<jsp:forward>来实现。具体的做法请参考书本,我现在不在单位,无法给你找代码。如果不明白的话,可以找我。qq:32498698
nova1980 2003-03-16
  • 打赏
  • 举报
回复
谢谢各位

但上面的代码sendRedirect只能执行一次的,不可能出现二次,第一次执行就意味着返回了,

to mxlmwl(飞星) :
sendRedirect 是支持参数传递的,在servlet中如何用<jsp:formard>??

enights 2003-03-15
  • 打赏
  • 举报
回复
可能在sendRedirect之前已经有out.println的语句了
super_zzw 2003-03-15
  • 打赏
  • 举报
回复
response不能进行1次以上的sendRedirect。
因为1次以后就表示一个完整的http请求已经结束。
super_zzw 2003-03-15
  • 打赏
  • 举报
回复
response不能进行1次以上的sendRedirect。
因为1次以后就表示一个完整的http请求已经结束。

81,116

社区成员

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

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