开发者学堂课程【Servlet入门:Servlet的细节1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/34
Servlet的细节1
一、 Servlet与线程安全
二、 让服务器在启动时就创建 Servlet
三、 <url-pattern>
1. Servlet与线程安全
因为一个类型的 Servlet只有一个实例对象,那么就有可能会现时出一个Servlet同时处理多个请求,那么Servlet是否为线程安全的呢?答案是:“不是线程安全的”。这说明 Servlet的工作效率很高,但也存在线程安全问题!
解决办法:
1) 不要在Servlet中创建成员,创建局部变量即可。
2) 可以创建无状态成员。
3) 可以创建有状态的成员,但状态必须为只读的。
所以我们不应该在 servlet 中便宜创建成员变量,因为可能会存在一个线程对这个成员变量进行写操作,另一个线程对这个成员变量进行读操作。
2. 让服务器在启动时就创建 Servlet
默认情况下,服务器会在某个Servlet第一次收到请求时创建它。也可以在 web.xml 中对 Servlet进行配置,使服务器启动时就创建Servlet。
3. <url-pattern>
是的子元素,用来指定 Servlet的访问路径,即 URL。它必须是以“/”开头!
1) 可以在中给出多个,例如:
那么这说明一个 Servlet绑定了两个 URL,无论访问/AServlet还是/BSerMet,访问的都是AServlet。
1) 还可以在中使用通配符,所谓通配符就是星号“*”,星号可以匹配任何 URL前缀或后缀,使用通配符可以命名一个 Servlet绑定一组 URL,例如:
a) /servlet/*:/servlet/a、/servlet/b,都匹配/servlet/*;
b) *.do:/abc/def/ghi.do、/a.do,都匹配".do;
c) /*:匹配所有URL;
请注意,通配符要么为前缀,要么为后缀,不能出现在URL中间位置,也不能只有通配符。例如:/*.do 就是错误的,因为星号出现在 URL 的中间位置上了。*.*也是不对的,因为一个 URL 中最多只能出现一个通配符。