一、Servlet创建与基本应用
1. 导入依赖(坐标)
在pom.xml文件中的Services标签中加入以下代码
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
2. 创建Servlet
在java文件夹下新建一个class类,比如这样
这表示在java创建一个包(com.chuanzhikeji),包下有一个类(Servlet1)。
3. 实现接口
打开这个servlet
在后面加上impllements Servlet,选择提示的第一个
4. 复写父类方法
按ctrl+i,弹出窗口点ok重写父类方法
在service方法中输出一句语句表示service被执行
5. 添加注解
注解的内容就是该Servlet的访问路径,配置如下
此时右键用tomcat运行,在浏览器输入对应路由即可发现控制台输出了信息。
目前这只是打印一个简单的输出,但要对web请求做处理,则必然需要封装一个类,先判断请求方式,再对不同的请求做不同的处理。这个类官方已经封装完成,具体实现见体系结构。
6. 体系结构
利用体系结构可以简化创建servlet的流程。
新建一个Servlet,继承HttpServlet,复写doGet和doPost方法(直接输doGet选择第一个)
这两个方法里的内容可以直接删掉。
这两个方法可以写对应请求方式的处理代码。
二、Servlet生命周期
Servlet是由服务器(Tomcat)调用 和创建的,所以其由容器(服务器)来管理生命周期。
1. 加载和实例化
默认情况下,Servlet对象是在当该Servlet第一次被访问时创建,但如果想要用户有好的体验,也可设置提前加载以节省时间。
通过设置loadOnStartup参数>=0即可实现服务器启动时创建,该参数默认值为-1.
@WebServlet(urlPatterns = "/demo1", loadOnStartup = 1)
2. 初始化
实例化Servlet后,服务器将调用init()方法初始化相关参数,该方法仅调用一次。
3. 请求处理
每次有请求到达Servlet,都会调用service()方法进行处理请求。
4. 服务终止
当服务器关闭时会调用destroy()方法释放Servlet,并释放资源。
三、urlPattern配置
urlPatterns是可以配置多个路由的,如下
1. 配置规则
-
精确匹配:
urlPattern
的值是一个具体的URL路径,如/hello
。- Servlet只会匹配精确与
urlPattern
相同的URL,例如http://example.com/hello
。 - 这是最简单的匹配方式,只有当URL与
urlPattern
完全相同时才触发Servlet。
-
通配符匹配:
- 使用通配符
*
可以匹配任意字符,但只匹配一个路径段。 - 例如,
/users/*
匹配所有以/users/
开始的URL路径,如/users/john
、/users/mary
等。 - 通配符
*
可以用在路径段的任何位置,例如/users/*/profile
。
- 使用通配符
-
扩展名匹配:
- 使用扩展名(例如
.html
)来匹配特定类型的URL。 - 例如,
*.html
匹配所有以.html
结尾的URL,如/page.html
、/file.html
等。
- 使用扩展名(例如
-
默认匹配:
- 空字符串
""
或/
可以用作默认匹配,匹配所有未被其他Servlet显式匹配的URL。 - 例如,如果没有其他匹配规则,
/
或""
将匹配所有URL。
- 空字符串
-
精确路径和通配符组合:
- 你也可以组合精确路径和通配符,以匹配更复杂的URL。
- 例如,
/users/*/profile
匹配所有以/users/
开始并且以/profile
结尾的URL,如/users/john/profile
。
-
正则表达式匹配:
- 在
web.xml
中,你可以使用正则表达式来定义更复杂的URL匹配规则。 - 例如,
<url-pattern>/user/[^/]+</url-pattern>
匹配所有形如/user/{任意字符}
的URL。
- 在
如果一个路由同时满足两个规则,以精确匹配优先。