1

私のプロジェクト フォルダには、次のContextPath/WEB-INF/Classes/*.class名前で 2 つの Java ファイルがApp1.classあります。App2.class

実行したい場合はApp1.class、ブラウザーで URL をトリガーするだけです。

  http://localhost:8080/Mapping/App1

同様に、トリガーしたい場合App2.classは、次のリンクを使用してください

 http://localhost:8080/Mapping/App2

App2からトリガーしたいのですが、ブラウザで対応するURLでApp1トリガーすると、トリガーになります。App1App2

私も返事をしたくありません。

これどうやってするの。

誰でも私を助けることができます。

ありがとう。

4

3 に答える 3

6

App1からApp2をトリガーしたいということは、ブラウザーで対応するURLでApp1をトリガーすると、App2がトリガーされるということです。

Webアプリでサーブレットとして構成されていることを考慮App1してください。へのリクエストにを利用できます。これはサーバー側で発生します。つまり、ブラウザは から来たかのように応答を受け取ります。App2MappingRequestDispatcherforward()App2App1

if (isForwardReqd()) {
    RequestDispatcher rd = request.getRequestDispatcher("App2");
    rd.forward(request, response);
}

App1を実行する前に応答をコミットしてはならないことforward()に注意してくださいIllegalStateException

参考
http ://docs.oracle.com/javaee/7/api/javax/servlet/RequestDispatcher.html

クライアントからリクエストを受信し、サーバー上の任意のリソース (サーブレット、HTML ファイル、JSP ファイルなど) に送信するオブジェクトを定義します。

于 2013-08-09T14:28:48.943 に答える
2

Java を使用して Get リクエストを送信できます。

URL url = new URL("http://localhost:8080/Mapping/App2");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.connect();

あるいは、App2 のアクションが別のクラスまたは両方のサーブレットにアクセス可能なメソッドによって処理されるように、おそらく App2 を構成する必要があります。

于 2013-08-09T14:24:24.487 に答える
1

可能な方法

(オプションで) クエリ パラメータを使用したHTTP GET要求

String query = String.format("param1=%s&param2=%s", 
             URLEncoder.encode("param1Value", "UTF-8"), 
             URLEncoder.encode("param1Value", "UTF-8"));

    URL url = new URL(servletURL + "?" + query);
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setRequestMethod("GET");
    Map<String, List<String>> header = conn.getHeaderFields();
    int responseCode = conn.getResponseCode();
    System.out.println("Headers : "+header);
    System.out.println("Response Code "+responseCode);

RequestDispatcher - あるリソースから他のリソースにリクエストをディスパッチします。それらが同じプロジェクトとサーバーで利用可能な場合。

  • このインターフェイスを使用すると、サーバー側の転送/インクルードを実行でき、要求されたサーブレットの service(...)/doGet(...) メソッドを実行できます。

    RequestDispatcher rd = req.getRequestDispatcher("/servlet2");
    rd.forward(req, resp); // rd.include(req, resp);
    

    同じサーバー、異なるプロジェクト

    RequestDispatcher rd = req.getServletContext().getContext("/Project2").getRequestDispatcher("/ips");
        rd.forward(req,  resp);
    

.sendRedirect()

  • クライアント側からのリクエストをリダイレクトします [URL はクライアントのブラウザで変更されます]。
  • サーバーが sendRedirect メソッドに遭遇すると、一時的なリダイレクト応答を 3XX ステータス コードでクライアントに送信し、新しい URL を要求します。
  • www.sun.com は www.oracle.com/sun/index.html にリダイレクトされます

    response.sendRedirect(servletURL); // Different Server.
    

Invoking Other Servletさまざまな方法を使用して

于 2016-01-05T14:38:54.723 に答える