六祎:Servlet线程安全解决办法实操
介绍:
课时8:https://edu.aliyun.com/lesson_1700_13646#_13646
3.1Servlet与线程安全
因为一个类型的Serlvet只有一个实例对象,那么就有可能会出现时出一个Servlet同时处理多个
请求,那么servlet是否为线程安全呢?
答案:不是线程安全的。
这说明Servlet的工作效率很高,但也存在线程安全问题!
所以我们不应该再Servlet中便宜创建成员变量,因为可能存在一个线程对这个成员变量进行
写操作,另一个线程对这个成员变量进行操作。
3.2让服务器再启动时就创建Servlet
默认情况下,服务器会在某个Servlet第一次请求时创建它,也可以在Web.xml中对servlet进行配置
,使服务器启动时就创建Servlet
<servlet>
<servlet-name>xxx</servlet-name>
<servlet-class>cn.lystudio.web.servlet.servlet1</servlet-class>
<!-- 在服务器启动时,创建Servlet 参数:0,表示顺序,按大小-->
<load-on-startup>0</load-on-startup>
<!-- 如何验证是否在启动时,创建serlvet呢?
public void init() throws ServletException{
syso("hello ")
}
如果输出这条语句,则成功创建
-->
</servlet>
<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
3.3<url-pattern> 配置
它是<servlet-mapping>的子元素,用来指定Servlet的访问路径,即URL.它必须是以“ / “开头
1)可以在<servlet-mapping>中给出多个<url-pattern>
<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>/AServlet</url-pattern>
<url-pattern>/BServlet</url-pattern>
</servlet-mapping>
那么说明一个Servlet绑定了两个URL,无论访问/AServlet还是/BServlet,访问的都是AServlet
2)还可以在<url-pattern>中使用通配符,” * “,星号可以匹配任何URL,前缀或后缀,使用通配符
可以命名一个Servlet绑定一组URL,例如
<url-pattern>/servlet/*</url-pattern>: /servlet/a 、 /servlet/b,都匹配/servlet/*;
<url-pattern>*.do </url-pattern> /abc/def/da.do、/a.do,都匹配 *.do
<url-pattern>/* </url-pattern> : 匹配所有URL
注意,通配符要么前缀或后缀,不能出现在URL中间位置,也不能只有通配符
本文来自博客园,作者:你好,Alf,转载请注明原文链接:https://www.cnblogs.com/Alf-/p/16192980.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!