简单问题,赚分的进来

limingFAQ 2004-11-17 08:58:45
在一个jsp页面中用了jsp:include是不是就不能再用response.sendRedirect了。
我试了很久了,好象不能的,为什么?
还有一个问题就是response.sendRedirect后面的语句它照样执行,如何禁止它呢?
先回答的多得分!
...全文
158 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
limingFAQ 2004-11-26
  • 打赏
  • 举报
回复
这样还是不行,救命啊……
okitgo 2004-11-20
  • 打赏
  • 举报
回复

<%
response.sendRedirect("jsp3.jsp");
%>
换成
<jsp:forward page="jsp3.jsp"/>
kui1015 2004-11-18
  • 打赏
  • 举报
回复
看来我也不用说了
wangnewton 2004-11-18
  • 打赏
  • 举报
回复
用了jsp:include是不是就不能再用response.sendRedirect了?

是可以的吧,这两者有冲突吗?
wandou999 2004-11-18
  • 打赏
  • 举报
回复
up
limingFAQ 2004-11-18
  • 打赏
  • 举报
回复
jsp1.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
jsp1
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
</body>
<jsp:include page="jsp2.jsp" flush="true">
</jsp:include>
<%
response.sendRedirect("jsp3.jsp");
%>
</html>

jsp2.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
jsp2
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
</body>
</html>

jsp3.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
jsp3
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
</body>
</html>

程序的入口是jsp1.jsp,我的开发环境是jb2005+weblogic8.1,运行后在控制台显示:
<2004-11-18 下午14时42分06秒 CST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=27942811,name=corp,context-path=/corp)] Servlet failed with Exception
java.lang.IllegalStateException: response already committed
at weblogic.servlet.internal.ServletResponseImpl.sendRedirect(ServletResponseImpl.java:592)
at jsp_servlet.__jsp1._jspService(__jsp1.java:133)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:431)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)>
bafnay 2004-11-17
  • 打赏
  • 举报
回复
Header是http的请求没错,便不会和jsp:include冲突,你把代码粘上来看一下?楼上对这个说的很清楚的了,那里还不明白再提吧!
limingFAQ 2004-11-17
  • 打赏
  • 举报
回复
特殊的Header?这是http请求吗?但这为什么和jsp:include 相冲突呢?
filippo1980 2004-11-17
  • 打赏
  • 举报
回复
还有:

response.sendRedirect做转向原理,其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化。

所以使用response.sendRedirect时就需要注意 在使用response.sendRedirect时,前面不能有HTML输出。不能有HTML输出其实是指不能有HTML被送到了浏览器。但现在的server都有cache机制,这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。
filippo1980 2004-11-17
  • 打赏
  • 举报
回复
加一个return , sendRedirect并不终止程序的执行

81,092

社区成员

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

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