【问题标题】:Java web.xml <servlet-class> tag and web.xml Specification/DocumentationJava web.xml <servlet-class> 标签和 web.xml 规范/文档
【发布时间】:2015-09-07 19:02:50
【问题描述】:
谁能告诉我 web.xml 中 servlet-class 标签的用途是什么?例如,我目前正在使用 tomcat 8,并且正在使用 restful jersey 框架。那么为什么你把这个类: org.glassfish.jersey.servlet.ServletContainer 放在 servlet-class 标记中,而不是 org.apache.catalina.servlets.DefaultServlet 用于 tomcat?
也有人能告诉我在哪里可以找到 java ee web.xml 规范/文档吗?
谢谢
【问题讨论】:
标签:
java
tomcat
jersey
web.xml
【解决方案1】:
部署描述符是 Java Servlet 规范的一部分。
您可以在此处找到 3.1 规范 JSR340
在https://www.jcp.org/en/jsr/detail?id=340查看最终版本
servlet-class 提供了这个的完全限定的 Java 类名
端点实现。您指定 serlvet 类名,例如com.stackoverflow.myweb.LoginSerlvet 这可以映射到像 /login 这样的 url。这使得在 web 应用程序、html 等中更容易使用。每当请求 /login 时,LoginServlet 都会运行(取决于 HTTP 类型,如果它是 GET、POST 等)。还取决于您可能需要添加使用的外部库的 Servlet。例如,在您的情况下,您需要 jersey 库。还要检查 web.xml 以设置 servlet(servlet-class)并检查 servlet-mapping。为什么需要添加 ServletContainer 而不是 DefaultServlet 是因为您想使用 Rest Jersey,并且每当您调用映射的 url(例如 /rest/* 它将运行球衣 servlet)。我认为您有点困惑,因为您认为 servlet-class 是在您的应用程序中托管所有编写的 servlet 的类,但事实并非如此。
做一些关于如何构建 Java servlet 应用程序的教程,你很快就会更好地理解它。