我在Filter实现中并且有一个响应,它将调用重定向。 现在我尝试确定重定向URL将调用哪个Servlet类。 (没有调用Servlet本身 - 我只想知道哪个类)
像:
public void doFilter( ServletRequest request, ServletResponse response, FilterChain filterChain ) throws IOException, ServletException
{
...
filterChain.doFilter( request, response );
//now the response is a redirect
if (redirect) {
Class servletClass = request.getRequestDispatcher( response.getString() ).[getServletClass()]; //or something like
...
}
}
我需要知道它是否是重定向并且如果调用了特定的servlet,因为我必须在重定向之前操纵响应。
完全:
答案 0 :(得分:0)
现在我尝试确定重定向URL将调用哪个Servlet类
由于您的最终目标只是重定向,我认为在您重定向的servlet中使用response#sendRedirect是一种更简单的方法。重定向这种方式可以避免这种情况:
if (redirect) {
Class servletClass = request.getRequestDispatcher( response.getString() ).[getServletClass()]; //or something like
...
}
过滤器并不真正意味着将请求定向到正确的servlet。我承认这通常最终会被完成,因为web.xml中的servlet-mapping xml元素不是很健壮。尽管如此,最好坚持让你的web xmls映射哪些url到哪个servlet - 如果可能的话 - 因为它是声明性的并且更容易维护。