Servlets 基本RESTAPI的Servlet映射?

Servlets 基本RESTAPI的Servlet映射?,servlets,Servlets,我正在尝试编写一个web应用程序,它需要公开一些我将在ajax中使用的方法。我可以创建一个servlet来路由所有传入的请求,也可以创建多个servlet,每个请求类型一个servlet。比如: public class ServletMain extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException

我正在尝试编写一个web应用程序,它需要公开一些我将在ajax中使用的方法。我可以创建一个servlet来路由所有传入的请求,也可以创建多个servlet,每个请求类型一个servlet。比如:

public class ServletMain extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
        throws IOException 
    {
        // parse the path and figure out which service call was made.
    }
}

// web.xml
<servlet-mapping>
    <servlet-name>SerlvetMain</servlet-name>
    <url-pattern>/foo/a</url-pattern>
    <url-pattern>/foo/b</url-pattern>
    <url-pattern>/foo/c</url-pattern>
</servlet-mapping>
公共类ServletMain扩展了HttpServlet{
公共无效数据集(HttpServletRequest请求、HttpServletResponse响应)
抛出IOException
{
//解析路径并找出进行了哪个服务调用。
}
}
//web.xml
塞尔维特曼
/foo/a
/foo/b
/foo/c
或:

公共类ServletA扩展了HttpServlet;
公共类ServletB扩展了HttpServlet;
公共类ServletC扩展了HttpServlet;
//web.xml
塞尔韦塔
/foo/a
SerlvetB
/foo/b
SerlvetC
/foo/c
只是想知道我们是否可以做任何我们想做的事情,或者是否有一些规则来构造这种东西


谢谢

如果您真的打算使用“普通”Servlet API而不是更适合的REST API(例如,使用as参考实现),那么我建议使用第一个示例中描述的前端控制器模式。这比被所有可能的
url模式
条目污染的
web.xml
更容易抽象

基本上,只需要一个Servlet,它截取所有请求,获取pathinfo,并根据请求方法和pathinfo的组合相应地确定所需的操作


至少,试着看看他们是如何使用Jersey的(带有神圣的注释!),并试着做同样的事情。或者,更好的办法是,不要重新发明轮子并使用它;)

如果你有足够的灵活性,那么使用像这样的库比重新发明轮子要好得多。
public class ServletA extends HttpServlet;
public class ServletB extends HttpServlet;
public class ServletC extends HttpServlet;

// web.xml
<servlet-mapping>
    <servlet-name>SerlvetA</servlet-name>
    <url-pattern>/foo/a</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>SerlvetB</servlet-name>
    <url-pattern>/foo/b</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>SerlvetC</servlet-name>
    <url-pattern>/foo/c</url-pattern>
</servlet-mapping>