首页 > 代码库 > [Java.Web] Servlet 的一些细节

[Java.Web] Servlet 的一些细节

本文来自 传智播客视频PPT

1. 由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet

程序映射到一个 URL 地址上,这个工作在 web.xml 文件中使用 <servlet> 元素和 <servlet-mapping> 元素完成。

2. <servlet> 元素用于注册 servlet ,它包含有两个主要的子元素:<servlet-name> 和<servlet-class>

分别用于设置 Servlet 的注册名称和 Servlet 的完整类名。

3. 一个<servlet-mapping> 元素用于映射一个已注册的 Servlet 的一个对外访问路径,它包含有两个子元素:

<servlet-name> 和 <url-pattern> ,分别用于指定 Servlet 的注册名称和 Servlet 的对外访问路径。

4. 同一个 Servlet 可以被映射到多个 URL 上,即多个 <servlet-mapping> 元素的<servlet-name> 子元素的设置值

可以是同一个 Servlet 的注册名。

5. 在 Servlet 映射到的 URL 中也可以使用 * 通配符,但是只能有两种固定的格式:

一种格式是 “*.扩展名”,另一种格式是以正斜杠(/)开头并以(/*)结尾。利用 * 可以做伪静态网站。

6. 映射匹配优先级示例:

  Servlet1 映射到 /abc/*

  Servlet2 映射到 /*

  Servlet3 映射到 /abc

  Servlet4 映射到 *.do

当请求URL 为 /abc/a.html 时,1和2 都匹配,Servlet 引擎会调用 1.

当请求URL 为 /abc 时,1、2和3 都匹配,Servlet 引擎会调用 3.

当请求URL 为 /abc/a.do 时,1和4 都匹配,Servlet 引擎会调用 1.

当请求URL 为 /a.do 时,2和4 都匹配,Servlet 引擎会调用 2.

当请求URL 为 /xxx/yyy/a.do 时,2和4 都匹配,Servlet 引擎会调用 2.

7. Servlet 是一个供其他 Java 程序(Servlet 引擎)调用的 Java 类,它不能独立运行,它的运行完全由

 Servlet 引擎来控制和调度。

8. 针对客户端的多次 Servlet 请求,通常情况下,服务器只会创建一个 Servlet 实例对象,也就是说

 Servlet 实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至 web 容器退出,

 Servlet 实例对象才会销毁。

9. 在 Servlet 的整个生命周期内,Servlet 的 init 方法只被调用一次。

 而对一个 Servlet 的每次访问请求都导致 Servlet 引擎调用一次 servlet 的service 方法。

 对于每次访问请求,Servlet 引擎都会创建一个新的 HttpServletRequest 请求对象和一个新的

 HttpServletResponse 响应对象,然后将这两个对象作为参数传递给它调用的 Servlet 的 service()

 方法,service 方法再根据请求方式分别调用 doXXX 方法。

 

[Java.Web] Servlet 的一些细节