由于我们不需要在Servlet 3.0中使用web.xml,那么我们如何才能正确使用@WebServlet(假设我有两个servlet类驻留在不同的包中,两个动作表位于两个不同的文件夹中)?
答案 0 :(得分:1)
Servlet API 3.0引入了注释以简化部署。在javax.servlet.annotation
包中,我们有@WebServlet
:它定义了一个servlet组件。
Web应用程序部署描述符web.xml
在Servlet 3.0中已成为可选项。相反,运行时的容器将处理WEB-INF / classes中类的注释。
现在问题是容器如何知道要处理哪个类。
正如你所说,假设有两个servlet。
src/mypackage1/ServletOne
和src/mypackage2/ServletTwo
以及Servlet类定义类似于
@WebServlet("/servletOne")
public class ServletOne extends HttpServlet { ...... }
和
@WebServlet("/servletTwo")
public class ServletTwo extends HttpServlet { ...... }
编译这些类时,它将作为.class
存储在以下层次结构中
build/classes/mypackage1/ServletOne.class
和
build/classes/mypackage2/ServletTwo.class
当容器看到类定义上方的annotation
时,它将检查指定文件夹中的.class
文件,并解析对所需Servlet的调用