servlet

来源:互联网 发布:菲律宾程序员招聘骗局 编辑:程序博客网 时间:2024/05/20 04:28

1.servlet作用:处理请求,生成响应。

2.如何创建servlet

    1>实现servlet接口

    2>继承avax.servlet.GenericServlet

    3>javax.servlet.http.HttpServlet



  servlet在多次访问时,只创建一个实例

  一个servlet在服务器中只有一个实例



3.Servlet的生命周期方法

     1> 出生 ==> init方法在构造方法调用之后调用.  init是在第一次请求时调用-->servlet实例的创建是在第一次访问的时候
     2> 使命 ==> service方法 ,当请求发来时,处理请求使用.
     3> 销毁 ==> destory方法, 当服务器关闭时,会销毁servlet,在销毁之前调用该方法释放资源.


servlet访问时序

1.浏览器发送请求给服务器

2.服务器分析请求,请求哪个主机的哪个项目

3.查找项目下的web.xml,查找是否存在XServlet资源

4.如果是第一次访问,创建servlet实例

5.调用servlet中的init方法,将servlet实例存储到内存中

6.调用service方法处理请求,将request和response传递

7.将request和reponse还给服务器

8.服务器将response组装成HTTP响应协议

9.将HTTP响应协议发送给客户端



4.Servlet中的其他方法.
    getServletInfo ==> 获得servlet的信息(版本,作者,版权..),没用.
    getServletConfig ==> 返回servletConfig对象.


5.ServletConfig对象是什么?
    封装了servlet在web.xml中的配置.
    方法:
        1>getServletName ==> 获得配置文件中 <servlet-name> 元素的内容
        2>getInitParameter ==> 根据 <init-param>中的 <param-name> 获得 </param-value>
            <init-param>
                <param-name>name</param-name>
                <param-value>tom</param-value>
            </init-param>
        3>getInitParameterNames 返回所有<param-name> .
        4>getServletContext


6.其他实现server的方式

        GenericServlet:

            1.帮我们妥善的保管ServletConfig对象
            2.实现了ServletConfig接口 ==> 为调用方便
                注意: 不要重写servlet接口中的 init方法.  不然 第一步优化就白做了.
                我们要做初始化的动作,需要去重写GenericServlet提供的空参init方法.
        HTTPServlet:
            1.因为我们web项目基于HTTP协议,所以Service方法中传过来的request,response对象都是 基于HTTP协议的.
                也就是HttpServletReueqst,也就是HttpServletResponse. 它帮我们进行了强转.
            2.我们有可能在不同的请求方式时做不同的事情. 根据请求方式不同,调用不同的方法
                 例如 GET --> doGet()
                 POST ==> doPost();

7.Servlet中的其他细节

           1>关于Servlet线程安全的问题

                   因为在servlet运行期间只有一个servlet实例存在.可能会同时处理多个请求.
                   那么我们在servlet中声明成员变量来存储用户数据是有线程安全问题的.

                  我们应该如何解决呢?
                  1.实现SigleThreadModel  (不推荐了!)
                  2.使用局部变量保存用户数据.(推荐使用!)

            2>关于servlet随着项目的启动而创建

                  使用<load-on-startup>配置来实现.
                  例如:
                   <servlet>
                         <servlet-name>AServlet</servlet-name>
                         <servlet-class>cn.itcast.servlet.hello.AServlet</servlet-class>
                         <load-on-startup>3</load-on-startup>
                   </servlet>
        
                 填写一个整数,整数越小优先级越高.如果优先级一样,启动顺序按照配置顺序.

             3>关于Servlet路径配置问题详解
                  <url-pattern>  
                    路径匹配:
                      /AServlet            http://localhost:8080/Day07-servlet/AServlet
                      /ABC/AServlet        http://localhost:8080/Day07-servlet/ABC/AServlet
                     /ABC/ABC/AServlet    http://localhost:8080/Day07-servlet/ABC/ABC/AServlet
                     /ABC/ABC/*             http://localhost:8080/Day07-servlet/ABC/ABC/随便写
                    /*                     http://localhost:8080/Day07-servlet/随便写
                    /   相当于   /*        
            
                    后缀名匹配:
                     *.do ==> struts
                     *.action ==> struts2
                     *.html ==>
                     注意:1.关于路径,配置的路径匹配范围越大优先级越低.
                             2.两种匹配模式不能混用. 例如错误的例子: /*.do
        
                  4>关于tomcat的目录下的web.xml配置(了解)
                       1. default servlet的配置
                       2. jsp   servlet的配置
                       3.  <session-config>
                                <session-timeout>30</session-timeout>
                            </session-config>
                       4.互联网中所有mime类型
                       5.欢迎页面配置

            


原创粉丝点击