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

我已经阅读了Head First JSP和Servlet ,我看到web.xml

    ServletName packy.FirstServlet    ServletName /ServletURL  

为什么要隐藏原始servlet的位置? 我可以简单地看到它是出于安全原因和更多这样的优点,但为什么每个servlet都有一个名称 ? 为什么web.xml不能简单

   ServletURL packy.FirstServlet  

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

  someServlet com.example.SomeServlet   someServlet /enroll   someServlet /pay   someServlet /bill  

(注意:是的,每个映射可以有多个URL模式,但这不会涵盖它们被分割为多个web.xml / web-fragment.xml文件)

它允许您在特定servlet上映射filter,而无需担心servlet将使用的URL模式:

  someFilter someServlet  

你的提议不会支持他们。

请注意,自从Servlet 3.0已经推出近四年(2009年12月;请确保您通过最新资源了解事项……任何超过1〜3年的事情都应该仔细审查),您可以轻松使用@WebServlet批注来最小化web.xml样板:

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

只是这个注释已经将它映射到/servletURL的URL模式,而没有任何web.xml条目。

我们真的不需要servlet名称。 只是这就是Java EE设计者选择在XML中声明和映射servlet的方式。

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