Servlet的三种映射方式

Servlet映射有三种方式:1) 指名道姓,如/servletContextDemo;2) / 开头加通配符,如/servlet/*;3) 通配符加固定格式结尾,如*.do。配置`load-on-startup`可在应用启动时创建Servlet,提高首次执行效率但可能占用更多内存。默认Servlet处理未匹配的请求。理解这些配置能更好地控制Servlet的调用与服务器资源利用。
摘要由CSDN通过智能技术生成

Servlet支持三种映射方式,以达到灵活配置的目的。

首先先创建Servlet(创建方式略),然后再web.xml中就行配置。

配置方式:

        (1)、指名道姓的方式

        注:此种方式,只有和映射配置一模一样时,Servlet才会接收和响应来自客户端的请求。

示例:

<servlet>
    <servlet-name>servletContextDemo</servlet-name>
    <servlet-class>com.itheima.Servlet.ServletContextDemo</servlet-class>
</servlet>

映射:
<servlet-mapping>
    <servlet-name>servletContextDemo</servlet-name>
    <url-pattern>/servletContextDemo</url-pattern> 
     /*这个/servletContextDemo就是我们在浏览器中输入的地址*/
</servlet-mapping>

        (2)、/开头+通配符的方式

注:此种方式,只要符合目录结构即可,不用考虑结尾是什么。

例如:映射为:/servlet/*  

<servlet>
    <servlet-name>servletContextDemo</servlet-name>
    <servlet-class>com.itheima.Servlet.ServletContextDemo</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servletContextDemo</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

        (3)、通配符+固定格式结尾

注:此种方式,只要符合固定结尾格式即可,其前面的访问URI无须关心(注意协议,主机和端口必须正确)

例如:映射为:*.do

 

<servlet>
    <servlet-name>servletContextDemo</servlet-name>
    <servlet-class>com.itheima.Servlet.ServletContextDemo</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servletContextDemo</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

 

 

启动时创建Servlet

        我们前面讲解了Servlet的生命周期,Servlet的创建默认情况下是请求第一次到达Servlet时创建的。但是我们都知道,Servlet是单例的,也就是说在应用中只有唯一的一个实例,所以在Tomcat启动加载应用的时候就创建也是一个很好的选择。那么两者有什么区别呢?

  • 第一种:应用加载时创建Servlet,它的优势是在服务器启动时,就把需要的对象都创建完成了,从而在使用的时候减少了创建对象的时间,提高了首次执行的效率。它的弊端也同样明显,因为在应用加载时就创建了Servlet对象,因此,导致内存中充斥着大量用不上的Servlet对象,造成了内存的浪费。

  • 第二种:请求第一次访问是创建Servlet,它的优势就是减少了对服务器内存的浪费,因为那些一直没有被访问过的Servlet对象都没有创建,因此也提高了服务器的启动时间。而它的弊端就是,如果有一些要在应用加载时就做的初始化操作,它都没法完成,从而要考虑其他技术实现。

在web.xml中是支持对Servlet的创建时机进行配置的,配置的方式如下:

<!--配置ServletDemo3-->
<servlet>
    <servlet-name>servletDemo3</servlet-name>
    <servlet-class>com.itheima.web.servlet.ServletDemo3</servlet-class>
    <!--配置Servlet的创建顺序,当配置此标签时,Servlet就会改为应用加载时创建
        配置项的取值只能是正整数(包括0),数值越小,表明创建的优先级越高
    -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>servletDemo3</servlet-name>
    <url-pattern>/servletDemo3</url-pattern>
</servlet-mapping>

默认Servlet

         默认Servlet是由服务器提供的一个Servlet,它配置在Tomcat的conf目录下的web.xml中。如下图所示:

它的映射路径是<url-pattern>/<url-pattern>,我们在发送请求时,首先会在我们应用中的web.xml中查找映射配置,找到就执行,这块没有问题。但是当找不到对应的Servlet路径时,就去找默认的Servlet,由默认Servlet处理。所以,一切都是Servlet。

Servlet关系视图 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值