Servlet
Servlet
- Servlet 是 java 提供的一门动态 web 资源开发技术
- Servlet 是 JavaEE 规范之一,其实就是一个接口,将来我们需要定义 Servlet 类实现 Servlet 接口,并为 web 服务器运行 Servlet
快速入门
创建 Maven web 项目,导入 Tomcat 和 Servlet 依赖坐标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
<!--由于Tomcat 自带 servlet jar 包,依赖只需在测试和编译生效,避免冲突-->
</dependency>
</dependencies>
<build>
<finalName>webDemo</finalName>
<plugins>
<plugin>
<!--TOMCAT 插件-->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
</configuration>
</plugin>
</plugins>
</build>创建:定义一个类,实现 Servlet 接口,重写接口中的所有方法,并在 service 方法中输入一句话
1
2
3
4public class ServletDemo1 implements Servlet{
public void service(){}
System.out.println("service...")
}配置:在类上使用 WebServlet 注解,配置该 Servlet 的访问路径
1
2
3@WebServlet("/demo1")
public class ServletDemo1 implements Servlet{
}访问:启动 Tomcat, 浏览器输入 URL 访问该 Servlet
1
http://localhost:8080/web-demo/demo1
Servlet 执行流程
Servlet 由 Web 服务器创建, Servlet 方法由 Web 服务器调用
服务器调用 Servlet 中的 service 方法 选择要显示的内容
Servlet 生命周期
对象的生命周期指一个对象从被创建到被销毁的整个过程
Servlet 运行在 Servlet 容器( Web 服务器)中,其生命周期由容器管理,分为四个阶段
加载和实例化:默认情况下,当 Servlet 第一次被访问时,由容器创建 Servlet 对象,也可通过
@WebServlet
的loadOnStartup
属性配置,该属性默认为 -1 ,当该属性赋值为 0 或 正整数时,Servlet 对象会在服务器启动时创建,值大于 0 时,值越小,优先级越高1
@WebServlet(urlPatterns = "/demo1", loadOnStartup = 1)
初始化:在 Servlet 实例化之后,容器调用 Servlet 的 init() 方法初始化这个对象,完成一些如加载配置文件,创建连接等初始化的工作,该方法只调用一次
请求处理:每次请求 Servlet 时, Servlet 容器都会调用 Servlet 的 service() 方法对请求进行处理
服务终止: 当需要释放内存或者容器关闭时,容器就会调用 Servlet 示例的 destory() 方法完成资源的释放,在 destory() 方法调用之后,容器会释放这个 Servlet 实例,该实例随后会被 Java 的垃圾收集器回收
Servlet 体系结构
开发 B/S 架构的 Web 项目,均针对 HTTP 协议,自定义 Servlet 继承 HttpServlet
1 |
|
HTTPServlet 大致原理: 在 service() 中根据不同的请求方式调用不同的 doxxx() 方法。
Servlet urlPattern 配置
配置访问 Servlet 的访问路径(urlPattern)
一个 Servlet 可以配置多个 urlPattern
1
@WebServlet(urlPatterns = {"/demo1","/demo2"})
urlPattern 配置规则
精确匹配
1
2
3
4//配置路径
@WebServlet(urlPatterns = "/user/select")
//访问路径
localhost:8080/user/select目录匹配
1
2
3
4
5//配置目录
@WebServlet(urlPatterns = "/user/*")
//访问路径
localhost:8080/user/aaa
localhost:8080/user/bbb扩展名匹配
1
2
3
4
5//配置目录
@WebServlet(urlPatterns = "*.do")//不以 / 开头
//访问路径
localhost:8080/aaa.do
localhost:8080/bbb.do任意匹配
1
2
3
4//配置目录
@WebServlet(urlPatterns = "/")
//访问路径
localhost:8080/任意路径
优先级:精确匹配 > 目录匹配 > 扩展名路径 >
/*
>/
xml 配置 Servlet
xml 可代替注解
在 web.xml 中配置
1 |
|