2011-09-07 60 views
1

我在Filter實現中,並有一個響應來調用重定向。 現在我嘗試確定重定向URL將調用哪個Servlet類。 (不調用Servlet的本身 - 我只是想知道哪些類)如何從URI獲取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 
    ... 
    } 
} 

重定向。

究竟:

  1. 一個請求到達過濾器。 (這是一個XmlHttpRequest,但我認爲沒關係)
  2. 響應將導致重定向。
  3. 響應來到瀏覽器,我在JavaScript中看到「嘿,這是一個重定向 - 但哪個servlet將訪問?」 - 我目前在JavaScript中需要這些信息。所以我嘗試在響應中加入一些額外的信息。
+1

你爲什麼需要這門課? – Bozho

回答

0

現在我試圖確定哪個Servlet類重定向URL會調用

因爲你的最終目標就是重定向,我想在你從是一個重定向servlet的使用response#sendRedirect更簡單的方法一起做到這一點。通過這種方式重定向可以避免出現這種情況:

if (redirect) { 
     Class servletClass = request.getRequestDispatcher(response.getString()).[getServletClass()]; //or something like 
    ... 
    } 

過濾器並不是真正用於將請求定向到正確的servlet。我承認,這通常是因爲web.xml中的servlet-mapping xml元素不是很健壯而完成的。儘管如此,如果可能的話,最好堅持讓你的web xml映射哪個url到哪個servlet,因爲它是聲明性的,更容易維護。

+0

好的抱歉 - 我認爲我的問題不夠完整。 我修改了我的帖子。 也許可以檢查哪個servlet類與web.xml配置中的URL匹配? – chuem