首页 > 代码库 > [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 的一些细节