1. Servlet配置
1.1 Servlet以web.xml格式配置
- 在web.xml文件中添加标签,指定servlet的名称和类名。
- 在标签中添加标签,指定servlet的类名。
- 在web.xml文件中添加标签,指定servlet的URL映射。
- 在标签中添加标签,指定servlet的URL模式。
例如,以下是一个简单的servlet配置示例:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
在上面的示例中,我们定义了一个名为HelloServlet的servlet,并将其映射到/hello URL模式。当用户访问/hello时,容器将调用HelloServlet类的doGet或doPost方法来处理请求。
1.2 @WebServlet 注解方式配置
@WebServlet(“资源路径”)
@WebServlet注解的属性
属性名 | 类型 | 标签 | 描述 | 是否必须 |
---|---|---|---|---|
name | String | 指定Servlet的name属性。如果没有显式指定,则取值为该Servlet的包名+类名。 | 否 | |
value | String[] | 该属性等价于urlPatterns属性,两者不能同时指定。如果同时指定,通常是忽略value的取值。 | 是 | |
urlPatterns | String[] | 指定一组Servlet的URL匹配模式。 | 是 | |
loadOnStartup | int | 指定Servlet的加载顺序 | 否 | |
ininParams | WebInitParam[] | 指定一组Servlet初始化参数 | 否 | |
asyncSupported | boolean | 声明Servlet是否支持异步操作模式 | 否 | |
description | String | 指定该Servlet的描述信息 | 否 | |
displayName | String | 指定该Servlet的显示名 | 否 |
@WebServlet注解和web.xml的区别:
使用web.xml和@WebServlet注解都可以配置servlet
使用@WebServlet注解配置Servlet:
优点:@WebServlet直接在Servlet类中使用,代码量少,配置简单。每个类只关注自身业务逻辑,与其他Servlet类互不干扰,适合多人同时开发。
缺点:Servlet较多时,每个Servlet的配置分布在各自的类中,不便于查找和修改。
web.xml配置文件配置Servlet:
优点:可以集中管理Servlet的配置,便于查找和修改。
缺点:代码较为繁琐,可读性不强,不易于理解。
2. Servlet三种实现方式
- 遵从Servlet接口
- 遵从GenericServlet类
- 继承HttpServlet类
2.1 总结:
interface Servlet JavaWeb Servlet 程序规范接口
abstract class GenericServlet 完成 Servlet 程序配套方法,同时引入 Servlet 程序必要的其他类型
abstract class HttpServlet 完成 Servlet 程序 HTTP 协议支持操作,满足用户请求特征化处理
3. Servlet注册资源名称
-
精准匹配:@WebServlet(“资源路径”)
-
模糊匹配:
@WebServlet(“.action")
@WebServlet(".do”)用户请求 URL 结尾限制 .action 或者 .do,路径关系,名称不限制。
-
路径匹配:@WebServlet(“/user/*”),要求URL以指定内容开头,之后内容不限制。
4. Servlet的生命周期
1.初始化阶段:调用init()方法,只会执行一次
2.请求阶段:调用service()方法来处理客户端请求,会执行多次。
3.销毁阶段:调用destroy()方法,只会执行一次。
4.回收阶段:Servlet由 JVM 垃圾回收机制回收。