1.编译器项目结构
将servlet类放在包中
首先,将servlet类放在Java包中。您应该总是将公开的可重用的Java类放在包中,否则它们对于包中的类(例如服务器本身)是不可见的。这样,您可以消除潜在的环境特定问题。无包servlet仅在特定的Tomcat JDK组合中工作,这不应该依赖于。
在“纯”IDE项目的情况下,类需要放置在其“Java资源”文件夹中的包结构中,因此不是“WebContent”,这是用于Web文件(如JSP)。下面是导航器视图中所示的默认Eclipse Dynamic Web Project的文件夹结构示例:
在Maven项目的情况下,类需要放在main / java and thus not e.g. main/resources, this is for non-class files中的包结构中。下面是一个默认Maven webapp项目的文件夹结构示例,如Eclipse的Navigator视图中所示:
请注意,/ jsps子文件夹不是绝对必要的。你甚至可以没有它,把JSP文件直接在webcontent / webapp根,但我只是从你的问题接管这一点。
在url-pattern中设置servlet URL
servlet URL被指定为servlet映射的“URL模式”。绝对不是每个定义servlet类的classname / filename。 URL模式将被指定为@WebServlet注释的值。package com.example;
// Use a package!
@WebServlet("/servlet") // This is the URL of the servlet.
public class YourServlet extends HttpServlet {
// Must be public and extend HttpServlet.
// ...
}
@WebServlet仅适用于Servlet 3.0或更高版本
为了使用@WebServlet,你只需要确保你的web.xml文件(如果有的话,从Servlet 3.0开始是可选的)被声明为符合Servlet 3.0版本and thus not conform e.g. 2.5 version or lower.下面是一个Servlet 3.1兼容的(与Tomcat 8 ,WildFly 8,GlassFish 4等)。
或者,如果你不是在Servlet 3.0(不是Tomcat 7或更高版本,但Tomcat 6或更高版本),然后删除@WebServlet注释。然后在web.xml中注册servlet,如下所示:
2.实例
1.在webapp目录下新建xml,绑定/demo3
2.继承HTTPservlet然后复习post方法,@webservlet的虚拟目录/demo3
结果