码迷,mamicode.com
首页 > 编程语言 > 详细

JavaWeb三大组件之servlet(1)

时间:2020-09-17 23:54:04      阅读:33      评论:0      收藏:0      [点我收藏+]

标签:https   get请求   alt   就会   pos   调用   步骤   需要   let   

什么是Servlet?

??Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
技术图片

tomcat与servlet关系

??Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件。
技术图片
①:Tomcat将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的HTTP头数据读可以通过request对象调用对应的方法查询到。
②:Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器

Servlet入门

1、手动创建步骤

  • 先建类,继承
    技术图片

  • 配置,分配URL
    技术图片

  • 2、Servlet创建向导创建
    技术图片
    技术图片
    技术图片
    技术图片

Servlet的生命周期

加载
	服务器启动时加载,编译好
初始化
	第一次访问Servlet时,具体会调用init()方法
服务
	处理客户端的请求,早期是service()方法,现在都使用doGet()/doPost()
销毁
	释放Servlet占用的资源,具体会调用destroy()方法
卸载
	被垃圾回收

技术图片

  • 1.创建Servlet实例
    ??web容器负责加载Servlet,当web容器启动时或者是在第一次使用这个Servlet时,容器会负责创建Servlet实例,但是用户必须通过部署描述符(web.xml)指定Servlet的位置,也就是Servlet所在的类名称,成功加载后,web容器会通过反射的方式对Servlet进行实例化。
  • 2.WEB容器·调用Servlet的init()方法,对Servlet进行初始化
    ??在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求前可以完成一些初始化的工作,例如,建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只能被调用一次。init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。另外,在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和它的Servlet容器进行通信。无论有多少客户机访问Servlet,都不会重复执行init()。
  • 3.Servlet初始化之后,将一直存在于容器中,service()响应客户端请求
  1. 如果客户端发送GET请求,容器调用Servlet的doGet方法处理并响应请求
  2. 如果客户端发送POST请求,容器调用Servlet的doPost方法处理并响应请求
  3. 或者统一用service()方法处理来响应用户请求
    ??service()是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。要注意的是,在service()方法被容器调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请求信息的请求对象(类型为ServletRequest)和一个用于对客户端进行响应的响应对象(类型为ServletResponse)作为参数传递给service()方法。在service()方法中,Servlet对象通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。
    4.WEB容器决定销毁Servlet时,先调用Servlet的destory()方法,通常在关闭WEB应用之前销毁Servlet
    ??destroy()仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当容器检测到一个Servlet对象应该从服务中被移除的时候,容器会调用该对象的destroy()方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久存储设备中,例如,将内存中的数据保存到数据库中,关闭数据库的连接等。当需要释放内存或者容器关闭时,容器就会调用Servlet对象的destroy()方法。在Servlet容器调用destroy()方法前,如果还有其他的线程正在service()方法中执行,容器会等待这些线程执行完毕或等待服务器设定的超时值到达。一旦Servlet对象的destroy()方法被调用,容器不会再把其他的请求发送给该对象。如果需要该Servlet再次为客户端服务,容器将会重新产生一个Servlet对象来处理客户端的请求。在destroy()方法调用之后,容器会释放这个Servlet对象,在随后的时间内,该对象会被Java的垃圾收集器所回收。

JavaWeb三大组件之servlet(1)

标签:https   get请求   alt   就会   pos   调用   步骤   需要   let   

原文地址:https://www.cnblogs.com/wt9866/p/13660773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!