Java 为什么我们需要一个servlet名称?

Java 为什么我们需要一个servlet名称?,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我已经阅读了headfirstjsp和Servlet,我看到web.xml已经 <!-- To name the servlet --> <servlet> <servlet-name>ServletName</servlet-name> <servlet-class>packy.FirstServlet</servlet-class&

我已经阅读了headfirstjsp和Servlet,我看到
web.xml
已经

  <!-- To name the servlet -->
  <servlet>                                    
    <servlet-name>ServletName</servlet-name>
    <servlet-class>packy.FirstServlet</servlet-class>
  </servlet>

  <!-- For URL's to map to the correct servlet -->
  <servlet-mapping>
    <servlet-name>ServletName</servlet-name>
    <url-pattern>/ServletURL</url-pattern>
  </servlet-mapping>

我们实际上不需要servlet名称。只是这就是JavaEE设计人员选择在XML中声明和映射servlet的方式


现在,您可以使用注释声明和映射servlet,并且此注释的
name
属性是可选的。

它允许您在单个servlet实例上有多个servlet映射(甚至分布在多个
web.xml
/
web fragment.xml
文件上)无需为每个映射创建单独的实例:


someServlet
com.example.SomeServlet
someServlet
/报名
someServlet
/支付
someServlet
/账单
(注意:是的,每个映射可以有多个URL模式,但这不包括在多个
web.xml
/
web fragment.xml
文件中拆分它们)

它允许您在特定servlet上映射过滤器,而不必担心servlet正在/将要使用什么URL模式:


某些过滤器
someServlet
你的建议不支持他们两个

请注意,由于Servlet 3.0已经推出了近4年(2009年12月;请确保您通过最新的资源了解这些问题……任何超过1~3年的内容都应该仔细审查),因此您可以轻松地使用
@WebServlet
注释来最小化
web.xml
样板文件:

@WebServlet("/servletURL")
public class SomeServlet extends HttpServlet {}

仅此注释就已经将其映射到
/servletURL
的URL模式上,而没有任何
web.xml
条目。

单个servlet可以有多个映射,在您建议的语法中,每个映射都有一个单独的servlet实例。除此之外,如果您希望使用不同的设置拥有同一servlet的多个实例,该怎么办?!一个典型的用例是,您可以使用*匹配任何内容,因此可以执行:/images/*将/images目录中的所有请求匹配到单个servlet。如果您需要图像缩放或图像访问控制,这是非常有用的。我认为这更切题。又一个“就是这样”的例子!
@WebServlet("/servletURL")
public class SomeServlet extends HttpServlet {}