Serlvert

来源:互联网 发布:义乌淘宝培训班要求 编辑:程序博客网 时间:2024/06/02 06:40

参考:http://www.jianshu.com/p/fc7f31b664d5


Servlet简介

  

Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

最早支持Servlet标准的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。

Java Web服务器处理用户请求的基本过程:用户在客户端点击一个链接,浏览器会向Web应用服务器发送一个URL请求,该URL会指向一个servlet;Web容器看出这个请求指向某个servlet A,就会创建两个对象(HttpServletRequest和HttpServletResponse),并分配或创建一个线程,调用servlet A对应的service方法(上述请求和响应对象作为参数);service根据HTTP请求区分出客户端发来的是GET还是POST请求,并调用对应的doGet()或doPost()方法;在doGet()或doPost()方法中进行业务逻辑的处理,处理完成后的结果通过响应对象返回写回给客户端。


Servlet的生命周期

在容器启动时,XXXServlet在JVM的管理下被实例化为一个对象,这时候它还不是servlet,需要在容器的管理下调用init()方法进行初始化,获得ServletConfig和ServletContext对象的引用后,才称为一个真正的Servlet。

                  
Servlet的一生.png
  1. init()
    • 何时调用?servlet实例创建后,并在servlet能为客户请求提供服务之前,容器需要通过init方法初始化servlet。
    • 作用?初始化servlet实例,使之获得web容器的相关信息
    • 是否会被覆盖?有可能
  2. service()
    • 何时调用?当一个客户请求到来时,容器会创建(或从线程池分配一个线程),并调用servlet的service方法
    • 作用?这个方法会确定HTTP方法(GET or POST),并调用对应的servlet方法——doGet或doPost;
    • 是否会被覆盖?可以,但是不会
  3. doGet()或doPost()
    • 何时调用?
    • 作用?具体的业务逻辑
    • 是否会被覆盖?至少要覆盖其中之一

关键点:每个请求都在一个单独的线程中运行!