java – 来自jsp的response.sendRedirect():include被忽略?
我有一个jsp文件,其中包含另一个jsp文件来检查一些值等等:
< jsp:include page =“setup.jsp”/> 在setup.jsp中,我有一些条件代码,用于确定是否在会话中设置了某些需要的值,如果没有,则将它们重定向到不同的页面.或者至少它应该是,但重定向似乎被忽略了. System.err.println("Redirecting!"); response.sendRedirect("http://www.google.com"); return; 我看到“重定向!”登录到控制台,但页面继续并正常呈现.我有curl为我转储标题,并看到响应是HTTP / 1.1 200 OK所以它肯定不会发送302重定向. 知道问题是什么以及如何解决这个问题? 编辑:我已经确认我的回复尚未提交. response.isCommitted()返回false表示尚未发送状态代码和标头. 编辑2:我尝试在许多其他地方调用response.sendRedirect()并发现我可以在之前成功重定向. JSP中的重定向似乎被忽略了,如果我尝试在jsp之后重定向,那么我会得到一个非法的状态异常,因为响应已经被提交了. 解决方法
< jsp:include>使用封面
RequestDispatcher#include() .单击链接以查看javadoc.这是相关的摘录(强调我的):
更深层次的问题是您滥用JSP作为页面控制器/过滤器.实际上你应该使用普通的servlet或filter类,它在JSP之前运行很远. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |