How do I redirect to the current page in Servlet Filter?
-
20-09-2019 - |
Question
I have a page say: /myapp/test.jsp?queryString=Y. The filter needs to redirect to current page. It should go to /myapp/test.jsp (without the query string). The below seems to bring it to to the context root: /myapp. I am running in WAS6.1.
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) req;
HttpServletResponse httpResp = (HttpServletResponse) resp;
{
boolean blnNeedToRedirect = true;
if (blnNeedToRedirect) {
httpResp.sendRedirect(".");
return;
}
chain.doFilter(req, resp);
}
Solution
Use HttpServletrequest.getRequestURI. This should work for you:
httpResp.sendRedirect(httpReq.getRequestURI());
OTHER TIPS
httpReq.getRequestURI() Gives you the servlet path and it should work as follows. In order to redirect to the same page, run the next command:
((HttpServletResponse) httpResp).sendRedirect(httpResp.encodeRedirectURL(httpReq.getRequestURI()));
Another Option is to add the Header Location
with a status code 302 as follows:
((HttpServletResponse) httpResp).setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
((HttpServletResponse) httpResp).addHeader("Location", request.getRequestURL().toString());
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow