servlets - 基本休息 api 的 Servlet 映射?

标签 servlets

我正在尝试编写一个需要公开一些我将与 ajax 一起使用的方法的 Web 应用程序。我可以创建一个 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>

或者:
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>

只是想知道我们是否可以做任何我们想做的事情,或者是否有一些规则来构建这种东西?

谢谢

最佳答案

如果您真的打算使用“普通的”Servlet API 而不是更适合的 REST API,例如 JAX-RS (即,JSR311Jersey 作为引用实现),然后我建议使用您的第一个示例中描述的 Front Controller 模式。这比 web.xml 更抽象被所有可能的污染 url-pattern条目。

基本上,只有一个拦截所有请求的 Servlet,通过 HttpServletRequest#getPathInfo() 获取路径信息并根据请求方法和路径信息的组合相应地确定所需的操作。

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

关于servlets - 基本休息 api 的 Servlet 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3064996/

相关文章:

java - 两个 servlet 中的 Spring、MVC 和 REST

java - JSP表单插入数据库时​​返回空值

spring-boot - spring boot 2.1.0 war 文件无法在 jsp 中配置 'context-path' 或 'include' 不工作

java - 如何修复 servlet url-pattern 中的重定向循环,如 "users/*"

javascript - 如何使用ajax(post)调用servlet来发送参数...?

java - servletcontext.getRealPath ("/") 是什么意思,我应该什么时候使用它

java - 如何在JSP中调用Java方法?

java - 错误 404 : Eclipse Servlet Login Application

java - JSP/Servlet Web 应用程序中的后台定时器任务

java - 如何避免线程中出现 HeadlessException?