为什么我们需要一个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
属性是可选的。