Servlet 的配置

Servlet 的配置  

2012-12-10 11:26:11|  分类: Java |  标签: |字号 订阅

编辑好的Servlet源文件并不能响应用户请求,还必须将其编译成class文件。

为了让servlet能响应用户请求,还必须将servlet配置在Web应用中。配置Servlet时,需要修改web.xml文件。

从servlet3.0开始,配置servlet 有两种方式:

1.在servlet类中使用@WebServlet Annotation进行配置;

2.通过web.xml文件配置

@WebServlet 支持的常用属性:

 

属性

是否必须

说明

asyncSupported

指定该Servlet是否支持异步操作

displayName

指定该servlet的显示名

initParams

用于该servlet配置参数

loadOnStartUp

用于servlet配置成 load-on-startup的servlet

name

指定该servlet的名称

urlPatterns/value

这两个属性的作用完全相同。指定该servlet的处理的url

2.Jsp/Servlet的生命周期

2.1创建servlet实例有两个时机

    1.  客户端第一次请求某个servlet的时候,系统创建该servlet的实例:大部分的servlet都是这种servlet

    2.Web应用启动时立即创建servlet实例,即load-on-startup

每个servlet的生命周期如下:

1.创建servlet实例

2.Web容器调用servlet的init方法,对servlet进行初始化

3.servlet初始化后,将一直存于容器中,用于响应客户端请求。如果客户端发送get请求。容器调用doget方法,如果客户端发送post请求,调用dopost方法,或者统一使用service()方法

4.web容器决定销毁servlet时,先调用destory方法,通常在关闭web应用时销毁servlet

 

2.2 load-on-startup   Servlet

配置load-on-startup有两种方式:

1.在web.xml  在<servlet><load-on-startup>1</load-on-startup> </servlet>

2.@WebServlet(loadOnStartup=1)

loadOnStartup属性只接收一个整数型,这个整数型越小,servlet就越优先实例化。

 

2.3 访问servlet的配置参数

配置参数有两种方法:

1.@WebServlet的initParams属性来指定

2.web.xml 文件中 <servlet>-</servlet>

### Java Web应用中Servlet配置方法 #### 使用 `web.xml` 文件配置 Servlet 映射路径 通过 `web.xml` 配置 Servlet 是一种传统的声明式配置方式。开发者需要在项目的 `WEB-INF/web.xml` 文件中定义 Servlet 和其对应的 URL 路径。 以下是具体的配置过程: 1. **定义 Servlet 类名** 在 `<servlet>` 标签下指定 Servlet 的名称和实现类。 2. **映射 URL 路径到 Servlet** 在 `<servlet-mapping>` 标签下将特定的 URL 请求绑定到上述定义的 Servlet 名称。 示例代码如下: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>mypackage.MyServletClass</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/my-servlet-path</url-pattern> </servlet-mapping> ``` 这种方式的优点是可以集中管理所有的 Servlet 配置,缺点是当项目规模较大时,`web.xml` 可能会变得冗长复杂[^4]。 --- #### 使用 `@WebServlet` 注解配置 Servlet 映射路径 随着 Servlet API 的发展,在 Servlet 3.0 中引入了基于注解的配置方式。开发人员可以直接在 Servlet 实现类上使用 `@WebServlet` 注解来完成映射路径的设定,而无需修改 `web.xml` 文件。 具体语法如下: ```java import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @WebServlet("/my-annotated-servlet-path") public class MyAnnotatedServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 GET 请求逻辑 } } ``` 在这种情况下,容器会在启动时自动扫描并注册带有 `@WebServlet` 注解的类作为 Servlet,并将其与指定的 URL 路径关联起来[^2]。 需要注意的是,如果同时存在 `web.xml` 和注解配置,则通常以 XML 文件中的配置为准,除非显式指定了覆盖规则[^1]。 --- #### 关于 Servlet 版本的支持情况 不同的 Servlet 容器版本支持的功能有所不同。例如,只有支持 Servlet 3.0 或更高版本的容器才允许使用注解方式进行配置。因此,在实际开发前需确认所使用的 Tomcat、Jetty 等服务器是否满足最低要求[^3]。 --- #### 总结对比两者的优劣 | 方面 | web.xml 配置 | @WebServlet 注解 | |-----------------|--------------------------------------|-------------------------------------| | **灵活性** | 更适合团队协作场景下的统一维护 | 提供更简洁快速的方式 | | **可读性** | 对初学者友好 | 减少了外部文件依赖 | | **适用范围** | 所有 Servlet 版本均兼容 | 至少需要 Servlet 3.0 支持 | 无论采用哪种形式,最终目的都是为了建立客户端请求与后台处理之间的桥梁。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值