我正在使用 GWT,并且希望能够通过在浏览器中输入以下 URL 来调用主 RemoteServiceServlet 中的 incrementProduct(String ProductName)
方法:
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()?
我碰巧忽略了一个解决我问题的重要事实:
- 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 :)
我是一名优秀的程序员,十分优秀!