Server Applet 运行在服务端的程序,用于扩展web服务器(没有main方法,通过web服务器调用)
以tomcat为例,tomcat会找到项目里面的WEB-INF/web.xml,创建web.xml中配置的servlet
生命周期
public class MyServlet4xml1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("MyServlet4xml1 init ...");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("MyServlet4xml1 service ...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("MyServlet4xml1 destroy ...");
}
}
选择Java Enterprise 项目,不要选择maven项目,选择tomcat的目录即可
生产的项目默认会导入servlet api
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
provided:在编译时和运行时,项目依赖于该库,但在部署到目标环境时,目标环境(例如tomcat)会提供这个库,因此在构建过程中不需要将它打包到最终的构建输出(例如 WAR 文件)中。
通过web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>xmlServlet1</servlet-name>
<servlet-class>com.study.servlet.MyServlet4xml1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xmlServlet1</servlet-name>
<url-pattern>/xmlServlet1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>xmlServlet2</servlet-name>
<servlet-class>com.study.servlet.MyServlet4xml2</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>xmlServlet2</servlet-name>
<url-pattern>/xmlServlet2</url-pattern>
</servlet-mapping>
</web-app>
默认第一次请求时创建,load-on-startup>=0时启动时创建
可以没有web.xml
@WebServlet("/annotationServlet")
public class MyServlet4Annotation implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("MyServlet4Annotation init ...");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("MyServlet4Annotation service ...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}