2010-12-21 11 views

答えて

1

See here:

getServletContext().getNamedRequestDispatcher("servletName") 
    .forward(request, response); 

私はより良いオプションがあると仮定と思いますが。たとえば、必要なコードをヘルパークラス/ユーティリティメソッドに移動して呼び出します。

私はそれについて考えるようになるかもしれません、別のものを望むか​​もしれません:別々にサーブレットを呼び出します。そのために以下のものが必要です。HttpServletRequestインスタンスを通じて利用可能である

3

使用RequestDispatcherインスタンス(これは現在の要求の出力ストリームに入力ストリームをコピーするにはApacheのコモンズ-IOを使用している)

InputStream is = new URL(urlOfTheServlet).openStream(); 
IOUtils.copy(is, response.getOutputStream()); 

。あなたは[ ServletContextインスタンスに getServlet方法を使用してのような]サーブレットコンテナが保持している単一インスタンスのホールドを得ることで探しているなら

はしかし、それは全く別の話です。サーブレットの仕様は、このようなオプションを許可するかもしれない操作を意図的に廃止しました。しかし、の場合、実際にを呼び出す場合は、forwardメソッドの代わりにRequestDispatcherincludeメソッドを使用してください。

0

ServletContextまたは現在のリクエストを使用してRequestDispatcherを取得し、RequestDispatcher forward()またはinclude()を使用します。

Spring MockHttpServletRequestとMockHttpServletResponseを使用して、現在のリクエストを使用する代わりに新しいリクエストとレスポンスを作成できます。

例:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 
RequestDispatcher dispatcher = request.getRequestDispatcher(url); 

MockHttpServletRequest servletRequest = new MockHttpServletRequest(); 
servletRequest.setServerName(request.getServerName()); 
servletRequest.setServerPort(request.getServerPort()); 
servletRequest.setSession(request.getSession()); 
servletRequest.setMethod(HttpMethod.GET.name()); 

servletRequest.setRequestURI(url); 
servletRequest.setParameters(parameters); 

MockHttpServletResponse servletResponse = new MockHttpServletResponse(); 
servletResponse.setCharacterEncoding("UTF-8"); 
// Use include() instead of forward(). Similar as client HttpClient GET 
dispatcher.include(servletRequest, servletResponse); 
String content = servletResponse.getContentAsString(); 
0
String destinationBlockAccount ="./BlockAccount"; 
response.sendRedirect(response.encodeRedirectURL(destinationBlockAccount)); 

は、さらにあなたがJSPから直接のようなパラメータを送信することができます。

response.sendRedirect(response.encodeRedirectURL("./GetAccount?accountID="+accountID)); 
+0

あなたのコードに説明を追加してください。 –

+0

これは、URLパターン/ BlockAccountを持つBlockAccountという名前のサーブレットがあることを意味します。次に、このサーブレットにリダイレクトできます。 http://stackoverflow.com/questions/20371220/what-is-the-difference-between-response-sendredirect-and-request-getrequestdis –

+0

およびhttps://tomcat.apache.org/tomcat-5.5-doc/を参照してください。 servletapi/javax/servlet/http/HttpServletResponse.html –

関連する問題