servlet 各种请求路径方法及其生命周期

/*
1.具体请求路径:
             如果浏览器请求的【资源文件地址】与当前Servlet中<url-pattern>的内容【完全一致】,Tomcat才会带调用当前Servlet

             例子   OneServlet    <url-pattern>/one.do</url-pattern>


                    http://localhost:8080/myWeb/one.do   OneServelt会被调用


                  http://localhost:8080/myWeb/abc/one.do OneServelt不会被调用

                    [注意]: 具体请求路径,必须以"/"为开头


    2.前置条件请求路径:
                     如果浏览器请求的【资源文件地址】以当前Servelt中<url-pattern>
             的内容为开头的。Tomcat才会带调用当前Servlet

             例子  OneServlet    <url-pattern>/abc/*</url-pattern>

                   "*": 是一个通配符,描述是一个任意长度字符串
               如果当前【资源文件地址】是以"/abc/"为开头,就表示调用的资源OneServlet


                    http://localhost:8080/myWeb/abc/two.do        OneServelt会被调用
                

                http://localhost:8080/myWeb/abc/one.html      OneServelt会被调用
        
                    [注意]: 具体请求路径,必须以"/"为开头,必须以"*"为结尾

  3.后置条件请求路径:如果浏览器请求的【资源文件地址】以当前Servelt中<url-pattern>
              的内容为结尾的。Tomcat才会带调用当前Servlet

                例子  OneServlet    <url-pattern>*.do</url-pattern>

                  http://localhost:555/myWeb/abc/one.do        OneServelt会被调用

                  http://localhost:555/myWeb/five.do            OneServelt会被调用

                  http://localhost:555/myWeb/five.do?uname=mike OneServelt会被调用,因为tomcat是通过读取url来定位servlet的

                  请求行:[
                             url:http://localhost:555/myWeb/five.do
                             methos:get
                          ]

                              请求头:[
                                    uname:mike
                           ]

                        [注意]: 不能以"/"为开头,必须以"*"为开头

 4.通配符请求路径:   当前Servlet可以接收对当前网站所有的请求

                       例子  OneServlet    <url-pattern>/*</url-pattern>

                     http://localhost:555/myWeb/mm.jpg   OneServlet


                 http://localhost:555/myWeb/one.do    OneServlet 


5.请求路径优先级:[具体请求路径] > [前置条件]>[通配符] >[后置条件] 

            http://localhost:555/myWeb/abc/one.do

        OneServlet:  <url-pattern>/abc/one.do</url-pattern>

        TwoServlet    <url-pattern>/abc/*</url-pattern>

            ThreeServlet  <url-pattern>*.do</url-pattern> 

        FourServlet   <url-pattern>/*</url-pattern>
*/

关于优先级:即tomcat根据获取的url去web.xml寻找对应的Servlet来响应请求。

      如果按照【具体请求路径】有匹配了,那么直接调用对应的Servlet,反之再按【前置条件】去匹配,依次类推

生命周期

/*
Servlet实例对象【生命周期】

            1.项目中,所有Servlet的实例对象都是由Tomcat负责创建;开发人员
          没有权利创建Servlet的实例对象

            2.【创建时机】:

               1)【默认情况】:当第一个用户来访问这个Servlet时,Tomcat负责创建
                            它的实例对象

               2)【人工干预】: 要求Tomcat在启动时,创建Servlet的实例对象

                                     <servlet>
                                          <servlet-name>TwoServlet</servlet-name>
                                          <servlet-class>com.bjpowernode.controller.TwoServlet</servlet-class>
                                          <load-on-startup>890</load-on-startup>
                                        </servlet>

          3.在Tomcat运行期间,一个Servlet实现类只能被创建一个实例对象

      4.在Tomcat关闭时,由Tomcat负责销毁所有的Servlet实例对象
*/

猜你喜欢

转载自www.cnblogs.com/zsben991126/p/12654895.html