如何从taglib内部停止进一步的请求执行?

时间:2009-12-14 07:05:01

标签: jsp java-ee jsp-tags taglib

基本上,我们想要创建一个可以将请求执行转发到另一个页面的taglib,类似于<jsp:forward />。我们如何防止JSP页面的其余部分在taglib中执行?

3 个答案:

答案 0 :(得分:0)

你不应该在taglib中这样做。而是在将任何位发送到响应之前,在ServletFilter中执行此操作。否则你可能会陷入IllegalStateException: response already committed麻烦。

答案 1 :(得分:0)

对我来说,以下几行非常有效:

String url = "http://google.com";

response.reset();
response.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
response.setHeader("Location", url);
response.getWriter().close();
response.getWriter().flush();

答案 2 :(得分:-1)

如果您不希望在将控制权传递给另一个人之后继续处理原始页面,那么最好使用重定向而不是转发。

response.sendRedirect("foo.jsp");

这将重定向到新页面并停止处理旧页面。

但是 - 重定向仅在您尚未向响应主体写入任何内容时才可用(即未将任何数据发送回客户端)。