JAVA WEB -Servlet 2

一.Servlet生命周期   重点

    1.  servlet工作原理

        当Web服务器接收到一个HTTP请求时,它会先判断请求内容——如果是静态网页数据,Web服务器将会自行处理,然后产生响应信息;如果牵涉到动态数据,Web服务器会将请求转交给Servlet容器。此时Servlet容器会找到对应的处理该请求的Servlet实例来处理,结果会送回Web服务器,再由Web服务器传回用户端。

        针对同一个Servlet,Servlet容器会在第一次收到http请求时建立一个Servlet实例,然后启动一个线程(从容器线程池中获取一个)。第二次收到http请求时,Servlet容器无须建立相同的Servlet实例,而是启动第二个线程来服务客户端请求。所以多线程方式不但可以提高Web应用程序的执行效率,也可以降低Web服务器的系统负担。

        Servlet是单例的,整个服务器运行期间,每个Servlet类只产生一个实例,所有相关请求都由这个Servlet实例来处理。

        2.Servlet工作流程

                (1).Web Client向Servlet容器(Tomcat)发出Http请求

                (2).Servlet容器接受Web Client的请求

                (3).Servlet容器创建一个HttpRequest对象,将Web Cline请求的信息封装到这个对象中request对象中含有请求的所有信息(例如:请求的参数,请求的方式等)

                (4).Servlet容器创建一个HttpResponse对象

                                respon响应

                (5).Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResquest对象作为参数传给HttpServlet对象

                (6).HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息

                  (7).HttpServlet调用HttpResponse对象的有关方法,生成响应数据

                   (8). Servlet容器把HttpServlet的响应结果传给Web Client

        3.Servlet生命周期       

一个Servlet实例对象从被创建到被销毁的过程。

Servlet生命周期,是指Servlet从加载、初始化、处理请求(service方法)、返回响应、直到销毁的过程。

Servlet中跟生命周期相关的方法:

  • init():初始化

  • service(ServletRequest,ServletResponse):服务方法,用来处理各种请求的方法

  • destroy():销毁

        生命周期过程

                1、实例化(创建对象:调用构造方法)(只实例化一次)

                2、初始化(数据的赋初值,或者获取配置信息的过程)(只初始化一次)

                3、提供服务(service,doGet, doPost)(多次)

                4、销毁(关闭容器时销毁)(一次)

        4.实例化                        

                创建Servlet对象的时机:

                懒汉(访问时才创建对象),饿汉(服务器只要启动就立即创建Servlet实例对象)

                         1 .默认情况下 ,在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet对象的service方法;

                        2.Servlet容器启动时:当web.xml文件中如果<servlet>元素中指定了< load-on-startup>子元素时,Servlet容器在启动web服务器时,将按照顺序创建并初始化Servlet对象;

按照web.xml中< load-on-startup>中的值的从小--》大的顺序创建。

                        3.Servlet的类文件被更新后,重新创建Servlet。Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的<load-on-startup>属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在;                        

销毁Servlet对象的时机:

Servlet容器停止或者重新启动:Servlet容器调用Servlet对象的destroy方法来释放资源。

        5.service方法处理请求/响应          

                   对于每一个HTTP请求,servlet容器会创建一个封装了HTTP请求的ServletRequest实例传递给servlet的service方法,ServletResponse则表示一个Servlet响应,其隐藏了将响应发给浏览器的复杂性。

                   通过ServletRequest的方法你可以获取一些请求相关的参数,而ServletResponse则可以将设置一些返回参数信息,并且设置返回内容。

     

                5.1HttpServlet中的service方法:

                5.2 常用方法

                                   Request对象:接口封装了客户请求信息,如客户请求方式、参数、客户使用的协议、以及发出请求的远程主机信息等,其主要方法:

HttpServletResquest常用方法:

 

Response对象:接口封装了服务器响应信息,主要用来输出信息到客户端浏览器,其主要方法:

HttpServletResponse常用方法:

 6.请求转发和重定向    重点

请求转发跟重定向的区别?

请求转发,服务器转发:

地址栏不会发生改变,在服务器端完成,效率高。

携带数据可以在Servlet之间进行传递

 

客户端重定向:

客户端重新发送新的请求,无法携带数据。地址栏会发生改变。

 7.注解配置

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值