从ServletRequest到达Servlet / Filter后从中删除查询字符串

时间:2014-03-19 07:55:47

标签: java servlets filter query-string

现在假设我点了一些URL说

http://shoaib:8080/userAuthentication?authenticate=false

现在到达过滤器的doFilter方法

public void doFilter(request,response,filterChain){

   boolean authenticate=request.getParameter("authenticate");
   .
   .   //some logic
   .
   .
   filterChain.doFilter(request,response); //this request should not have query String.

} 

将传递给filterChain's doFilter()的请求不应具有queryString。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:0)

我在考虑重写Filter方法:

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
    throws ServletException, IOException {
    HttpServletRequest request = (HttpServletRequest) req;
    String requestURI = request.getRequestURI();

    if (requestURI.startsWith(YOUR_CHECK_PATH)) {
       String url = ((HttpServletRequest)request).getRequestURL().toString();
       String queryString = ((HttpServletRequest)request).getQueryString();
        req.getRequestDispatcher(url).forward(req, res);
    } else {
        chain.doFilter(req, res);
    }
}

答案 1 :(得分:0)

我尝试了很多,但最后我使用window.location对象

更改了客户端的url

上一条道路:

http://shoaib:8080/userAuthentication?authenticate=false

客户端代码

window.location.pathname="userAuthentication";

这删除了以前的查询字符串

当前网址

http://shoaib:8080/userAuthentication