开发者

How to stop further request execution from inside a taglib?

开发者 https://www.devze.com 2022-12-13 19:28 出处:网络
Basically, we want to create a taglib that can possibly forward request execution to开发者_如何学Go another page, similar to <jsp:forward />. How can we prevent the rest of the JSP page from exe

Basically, we want to create a taglib that can possibly forward request execution to开发者_如何学Go another page, similar to <jsp:forward />. How can we prevent the rest of the JSP page from executing from within the taglib?


You shouldn't be doing this in a taglib. Rather do it in a Servlet or Filter, before any bit is been sent to the response. Otherwise you will possible get into IllegalStateException: response already committed troubles.


For me the following lines worked quite well:

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

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


If you don't want to continue processing the original page after passing control to another you are better off using a redirect rather than a forward.

response.sendRedirect("foo.jsp");

This will redirect to the new page and stop processing the old one.

However - redirects are only usable if you have not written anything to the response body yet (i.e. not sent any data back to the client).

0

精彩评论

暂无评论...
验证码 换一张
取 消