2

私は現在、jquery呼び出しに応答し、自分のWebページで使用するデータを送り返すJava Servletことができるを作成しています。ただし、これはメソッドを使用した応答にすぎません。doGet

に複数のメソッドを持ち、Servletそれぞれをで呼び出す方法はありJQueryますか?

つまり、Helloというメソッドがあり、文字列 "Hello"を返し、別のメソッドでByeを返し、文字列"Bye"を返します。Jqueryまたは他のテクノロジーを使用してこの種のことを行う方法はありますか?

私はサーブレットにまったく慣れていないので、サーブレットが完全に何ができるのかまだわかりません。それで、doGet「入る」ための唯一の方法であり、私はそこから応答を分岐するだけですか?

4

3 に答える 3

3

サーブレットを使用すると、サービスメソッドを呼び出すことができるため、シナリオでは、パラメーターを渡してどのメソッドから呼び出すかを決定できますdoGet()

また、ヘッダーチェックを使用して、リクエストがAJAXから来ているかどうかを識別できます

メソッドを直接呼び出すことができる他のテクノロジーが利用可能です JSF、DWRを参照してください

見る

于 2012-06-29T05:11:31.633 に答える
0

個人的には、コントローラー(サーブレット)でリフレクションを使用しているので、基本的にこれを実現できます。

UserControllerというサーブレットがある場合

サーブレットを呼び出すメインのURLは/userになります。これを知って、私は常に最初のパラメーターを?action=addとして渡します

次に、サーブレットにaddまたはactionAddというメソッドがあります。どちらでもいいです。

次に、次のコードを使用します。

String str = String str = request.getParameter("action").toLowerCase();
Method method = getClass().getMethod(str, HttpServletRequest.class, HttpServletResponse.class);
method.invoke(this, request, response);

説明:

strにはアクションパラメータ値があります。この場合は追加します。メソッドメソッドは、指定された名前(str)とその予想されるパラメータータイプを持つメソッドへの参照になります。

次に、メソッドを呼び出して、コンテキスト、要求、および応答を渡します。

addメソッドは次のようになります。

public void add(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { 
    //do add stuff

        String url = "/user/index.jsp";
        RequestDispatcher dispatcher = context.getRequestDispatcher(url);
        request.setAttribute("User", user);
        dispatcher.forward(request, response); 
}

文字列を返すだけかどうかはわかりません。しかし、これはあなたに基本的な考えを与えるはずです。

リフレクションはコストがかかる可能性があることに注意してください。ただし、このように実際に影響を与えることはないはずです。また、メソッド名/シグネチャが完全に一致する必要があるため、エラーが発生しやすくなります。

したがって、jqueryからURLに対してajaxリクエストを実行します。

 localhost/projectname/user/add (if you use urlrewrite)
 or
 localhost/projectname/user?action=add (if you dont)
于 2012-06-29T05:23:34.630 に答える
0

Servlet Container はHttp、Servlet 3.0 以降のカスタム メソッドをサポートしています。例えば、

public void doHello(HttpServletRequest req, HttpServletResponse res) {
   //implement your custom method
}

サーブレットの上記のメソッドは、hellohttp メソッドを使用して呼び出すことができます。

ただしjquery、カスタム HTTP メソッドの呼び出しがサポートされているかどうかはわかりません。

持っていない場合は、唯一のオプションです。

  • GET とアクション パラメータを使用してサーブレットを呼び出します。
  • アクション パラメータを読み取り、リフレクションを使用してメソッドを呼び出します。
于 2012-06-29T05:40:33.780 に答える