servlet总结

本文深入探讨了Servlet的生命周期,包括初始化、服务和销毁过程,以及如何通过web.xml配置Servlet的加载时机和URL映射。此外,还讲解了相对路径与绝对路径在Servlet中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、servlet的生命周期

     1.1、servlet规范规定,所有的servlet必须实现javax.servlet.Servlet接口。

            1)、第一次调用时,将执行初始化方法:init(ServletConfig)

            2)、第一次调用时,都将执行 service(ServletRequest,ServletResponse)方法

            3)、服务器关闭,或项目移除:destory()方法

     1.2、JavaEE规范中提供Servlet接口实现类:

             GenericServlet:通用servlet实现。没有实现servie。

             HttpServlet:与Http协议有关的实现。实现service方法,完成与http协议有关的操作。

                                   request.getMethod() 获得请求方法(get、post)

                                    如果是get,将调用doGet()

                                    如果是post,将调用doPost()

     1.3、生命周期:就是一个对象从创建到销毁的过程。

     1.4、Servlet生命周期:Servlet从创建到销毁的过程。

              * 何时创建:用户第一次访问Servlet创建Servlet的实例(单实例)

             * 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候。

            用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行。任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法。 在service方法内部根据请求的方式不同调用doXXX的方法。(get请求调用doPost)。当Servlet中服务器中移除掉,或者关闭服务器,servlet的实例就会被销毁,那么destory方法就会执行。

2、servlet的相关的配置

     2.1、启动时创建Servlet

Servlet默认是在第一次访问的时候创建的,现在让Servlet在服务器启动的时候创建好,进行对servlet的配置:

     在web.xml中在<servlet></servlet>标签中配置:

     *<load-on-startup>2</load-on-startup>    ---传入正整数,整数越小,被创建的优先级就越高

      2.2、url-pattern的配置

url-pattern配置方式共有三种:

    1、完全路径匹配:以 / 开始

    2、目录匹配:以 / 开始,需要以 * 结束

    3、扩展名匹配:不能以 / 开始,以 * 开始的。

    4、缺省路径   /

        通常情况访问html页面时,首先从当前web项目的web.xml文件寻找匹配路径,如果没有找到,再从tomcat默认的web.xml匹配,将使用缺省servlet

    tomcat获得匹配路径时,优先级顺序:1 > 2 > 3 > 4

    有如下的配置:

    <servlet>
        <servlet-name>Demo02Servlet</servlet-name>
        <servlet-class>com.klh.servlet.Demo02Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Demo02Servlet</servlet-name>
        <url-pattern>/demo02Servlet</url-pattern>
    </servlet-mapping>

 
    <servlet>
        <servlet-name>Demo03Servlet</servlet-name>
        <servlet-class>com.klh.servlet.Demo03Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Demo03Servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Demo04Servlet</servlet-name>
        <servlet-class>com.klh.servlet.Demo04Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Demo04Servlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>


如果访问地址:

http://localhost:8080/test/Demo02Servlet         第一个
http://localhost:8080/test/aaa.do                第二个

***** 完全路径匹配 > 目录匹配  > 扩展名匹配

     2.3、开发中的路径的编写

1、相对路径:都是需要找位置相对关系。不能以 / 开始的。

    * ./ 当前路径  ../上一级目录

    *使用相对路径访问

        * http://localhost:8080/test/demo01.html

        * http://localhost:8080/test/Demo04Servlet

2、绝对路径:不需要找位置相对关系。以 / 开始的。

    *绝对路径中分为客户端和服务器端路径:

        * 客户端路径一定要加工程名。     /test/Demo04Servlet

        * 服务器端路径不需要加工程名。   /Demo04Servlet

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值