1

私はGWTincrementProduct(String productName)を使用しており、ブラウザに次の URL を入力して、メインの RemoteServiceServlet でメソッドを呼び出せるようにしたいと考えています。

http://mywebshop.appspot.com/increment?name=pillow

このリクエストを処理するために、次の HttpServlet を作成しました。

public class IncrementServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        System.out.println("IncrementServlet called!");
        String name = request.getParameter("name");
        // Call MyRemoteServiceServlet.incrementProduct(name) somehow
    }
}

これをweb.xmlに追加しました:

<servlet>
    <servlet-name>IncrementServlet</servlet-name>
    <servlet-class>x.y.z.IncrementServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>IncrementServlet</servlet-name>
    <url-pattern>/increment</url-pattern>
</servlet-mapping>
  • 質問 1 : これは賢明なアプローチですか?
  • 質問 2 : HttpServlet から incrementProduct() を呼び出すにはどうすればよいですか?
4

2 に答える 2

1

私の問題を解決する重要な事実を見落としていました。

  • RemoteServiceServlet はHttpServletを継承しています!

したがって、次のように RemoteServiceServlet に doGet() を単純に実装しました。

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

    switch (req.getServletPath()) {
    case "/increment":
        incrementProduct(req.getParameter("name"));
        break;
    }
}

そして、web.xml の IncrementServlet を次のように置き換えました。

<servlet-mapping>
    <servlet-name>MyRemoteServiceServlet</servlet-name>
    <url-pattern>/increment</url-pattern>
</servlet-mapping>

これにより、ブラウザーに次の URL を入力して、incrementProduct(...) を呼び出すことができます。

http://mywebshop.appspot.com/increment?name=pillow

これはまさに私が欲しかったものです!別のHttpServletは必要ありませんでした:)

于 2013-05-22T09:08:20.690 に答える