00 01JavaWeb之Servlet学习二

1 Servlet细节

1、Servlet与线程安全
因为一个类型的Servlet只有一个实例对象,那么就有可能会出现一个Servlet同时处理多个请求,那么Servlet是否为线程安全的呢?答案是:“不是线程安全的”。这说明Servlet的工作效率很高,但也存在线程安全问题!

所以我们不应该在Servlet中直接创建成员变量,因为可能会存在一个线程对这个成员变量进行写操作,另一个线程对这个成员变量进行读操作,但是可以创建无状态成员(成员中无成员属性),还可以创建有状态成员,但是成员中的属性是只读的。

2、让服务器在启动时就创建Servlet
默认情况下,服务器会在某个Servlet第一次收到请求时创建它,但是我们也可以在web.xml文件中设置,使服务器一启动就创建Servlet对象。语法格式如下:

<servlet>
   <!-- 0代表启动顺序 -->
   <load-on-startup>0</load-on-startup> 
</servelt>

3、<url-pattern>
<url-pattern><servlet-mapping>的子元素,用来指定Servlet的访问路径,即URL。它必须是以“/”开头!
(1)可以在<servlet-mapping>中给出多个<url-pattern>,那就说明一个Servlet绑定了两个URL,无论访问那个URL,访问的都是同一个Servlet。
(2)还可以在<url-pattern>中使用通配符,所谓的通配符就是指星号*,星号可以匹配任何URL前缀或后缀,使用通配符可以命名一个Servlet绑定一组URL,例如:
|——路径匹配:<url-pattern>/servlet/*</url-pattern>,匹配所有/servlet/sd之类的URL。
|——扩展名匹配:<url-pattern>*.et</url-pattern>,匹配所有/servlet/sd.et之类的URL。
|——全匹配<url-pattern>/*</url-pattern>,匹配所有URL。
请注意,通配符要么为前缀,要么为后缀,不能出现在URL的中间位置,也不能只有通配符。例如/*.te就是错误的,因为星号出现在URL的中间位置上了。*.*也是不对的,因为一个URL中最多只能出现一个通配符。

注意,通配符是一种模糊匹配URL的方法,如果存在更具体的<url-pattern>,那么访问路径会去匹配具体的<url-pattern>

2 web.xml文件的继承

每个完整的JavaWeb应用中都需要有web.xml,但我们不知道所有的web.xml文件都有一个共同的父文件,它在Tomcat的conf/web.xml路径下。

<!-- 个人配置格式 -->
<servlet>
     <servlet-name>love</servlet-name>
     <servlet-class>org.lks.servlet.DServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
     <servlet-name>love</servlet-name>
     <url-pattern>/DServlet</url-pattern>
  </servlet-mapping>
 <servlet>
	<!-- 优先级最低,如果一个请求没有相应配置处理,那么它来处理,它显示404 -->
	<servlet-name>default</servlet-name>
	<!-- 当访问路径不存在时,会执行该Servlet,其实在访问index.html时,也是在执行这个Servlet-->
	<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
	<init-param>
	    <param-name>debug</param-name>
	    <param-value>0</param-value>
	</init-param>
	<init-param>
	    <param-name>listings</param-name>
	    <param-value>false</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值