2

応答と要求オブジェクトをjspファイルからサーブレットにコードで送信するにはどうすればよいですか?フォームなどを提出したくありません。

私はそれを試しました:

response.setRedirect("my page"):

しかし、それは言う:

Exception in thread "main" org.apache.http.client.HttpResponseException: Moved Temporarily
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:68)
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:54)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:945)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:919)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:910)
    at com.xx.xx.client.Client.sendPOSTRequest(Client.java:185)
    at com.xx.xx.client.Client.main(Client.java:46)

明確化として:JSPファイルにPOSTリクエストを送信するクライアントがあります。このJSPファイルはファイルを解析し、必要な情報をセッションに入れます。このjspファイルからサーブレットを呼び出して、データベースに何かを追加したいと思います。このエラーコードはこの行によってスローされると思いますString responseBody = httpclient.execute(httppost, responseHandler);

4

2 に答える 2

2

<jsp:include>サーブレットURLで使用できます。

<jsp:include page="/servletURL" />

サーブレットdoXxx()メソッドは、現在の要求/応答で呼び出されるだけです。その後、サーブレットは別のJSPに転送できないことに注意してください。応答に直接書き込むか、JSPが行のにインターセプトできるいくつかの要求/セッション属性を設定する必要があり<jsp:include>ます。

これは悪い設計であることに注意してください。あなたはJSPをフロントコントローラーとして悪用しています。逆のはずです。サーブレットはフロントコントローラーとして機能し、JSPはビューとして機能する必要があります。クライアントは、JSPファイルではなく、サーブレットURLにリクエストを直接送信する必要があります。サーブレットはビジネスジョブを実行し、最後にJSPに転送して、結果をHTMLで表示できるようにする必要があります。Hello Worldの例については、サーブレットタグのwikiページも参照してください。

于 2012-10-23T14:21:42.177 に答える
0

RequestDispatcherを使用できます forward(ServletRequest request, ServletResponse response)

サーブレットからサーバー上の別のリソース(サーブレット、JSPファイル、またはHTMLファイル)にリクエストを転送します。

あなたはこのようにそれを行うことができます:

ServletContext context= getServletContext();
RequestDispatcher rd= context.getRequestDispatcher("/YourServlet");
rd.forward(request, response);

アップデート

response.setRedirectまた、代わりに使用しているコードにも注意してください。ただし、このメソッドは、オブジェクトをサーブレットにresponse.sendRedirect(...)転送するのではなく、ブラウザにサーブレットに新しい要求を行うように要求するだけなので、期待どおりに機能しないことに注意してください。詳細については、 RequestDispatcher.forward()とHttpServletResponse.sendRedirect()を参照してください。requestresponse

于 2012-10-23T14:10:54.837 に答える