繁体   English   中英

如何在Servlet过滤器中重定向到当前页面?

[英]How do I redirect to the current page in Servlet Filter?

我有一个页面说: /myapp/test.jsp?queryString=Y 过滤器需要重定向到当前页面。 它应该转到/myapp/test.jsp (不包含查询字符串)。 下面似乎将其带到上下文根目录: / myapp 我正在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);
}

使用HttpServletrequest.getRequestURI 这应该为您工作:

httpResp.sendRedirect(httpReq.getRequestURI());

httpReq.getRequestURI()为您提供servlet路径,它应该如下工作。 为了重定向到同一页,请运行以下命令:

((HttpServletResponse) httpResp).sendRedirect(httpResp.encodeRedirectURL(httpReq.getRequestURI()));

另一个选项是添加带有状态代码302的标头Location ,如下所示:

((HttpServletResponse) httpResp).setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); 
((HttpServletResponse) httpResp).addHeader("Location", request.getRequestURL().toString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM