2011-02-07 107 views
1


是否有可能在將請求從一個servlet轉發到另一個servlet時更改Servlet請求對象?還是爲了實現這個目標而努力?是否有可能更改httpservletrequest對象

我有2個servlet的,Servlet1和Servlet2像如 -

public class Servlet1 extends HttpServlet { 
    doPost(HttpServletRequest rq, HttpServletResponse rs) { 
     // do something meaningful, call other different web-apps/servlets 

     InputStream is1 = rq.getInputStream(); 
     RequestDispatcher rd = getServletContext().getRequestDispatcher("/Servlet2"); 
     rd.forward(rq, rs); 
    } 
} 

如果我打印is1它是一樣的東西 -

-----Part2_324<?xml version="1.0" encoding="utf-8"?><Head><Body><Text>This is the first File</Text></Body></Head>-------Part2_65623 

我不這個O/P,當後來請求將被轉發到Servlet2照顧。

我有一個XML文件file2.xml,內容是 -

<?xml version="1.0" encoding="utf-8"?><Head><Body><Top>Start</Top><Middle>Process</Middle><Bottom>End</Bottom></Body></Head> 

我想這是作爲Servlet2請求的內容,因爲它不能處理的is1的內容,它的目的是正在處理file2.xml的內容。
幾乎沒有屬性/參數集。

有沒有可能做到這一點?我希望,問題很明顯。
謝謝

回答

7

servlet規範禁止在轉發時將一個請求替換爲另一個請求。

但是,它確實允許一個HttpServletRequestWrapper,其中所述封裝器包裝原始請求的轉發。因此,請試着將您的邏輯作爲HttpServletRequestWrapper的子類實現,幷包裝原始請求,並根據需要重寫HttpServletRequest的各種方法。

+0

就是這樣,那就是我所需要的。非常感謝。 – 2011-02-08 12:06:36

相關問題