如何从URI获取Servlet类

时间:2011-09-07 15:59:49

标签: servlets

我在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,因为我必须在重定向之前操纵响应。

完全:

  1. 请求到达过滤器。 (这是一个XmlHttpRequest,但我认为没关系)
  2. 响应将导致重定向。
  3. 响应来到浏览器,我在JavaScript中看到“嘿,它是一个重定向 - 但是哪个servlet会被访问?” - 我目前在JavaScript中需要这些信息。所以我尝试在响应中加入一些额外的信息。

1 个答案:

答案 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 - 如果可能的话 - 因为它是声明性的并且更容易维护。