Теперь предположим, что я запускаю некоторый 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 doFilter()
не должен иметь queryString. Как я могу это достичь?
Я много пробовал, но, наконец, я изменяю URL-адрес на стороне клиента, используя объект window.location
Предыдущий путь:
http://shoaib:8080/userAuthentication?authenticate=false
Код на стороне клиента
window.location.pathname="userAuthentication";
Это удалило предыдущую строку запроса
Текущий URL
http://shoaib:8080/userAuthentication
Я думал об переопределении метода фильтра:
@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);
}
}