Servlet 技术全总结 一

Servlet是独立于平台和协议的服务器端的java应用程序,处理请求的信息并将其发送到客户端。

Servlet的客户端可以提出请求并动态获得响应。

Servlet动态生成web页面,担当浏览器或其他客户端发出的请求与HTTP服务器上的数据库或应用程序之间的中间层。

对于所有客户端请求,都只需要创建一次Servlet实例,因此,节省了大量内存。

Part 1     Servlet运行原理

web服务器收到一个http请求后,判断请求内容,若是静态页面数据,自行处理,若为动态数据,交给Servlet容器,Servlet容器找到相应Servlet实例处理;处理结果交给web服务器,再转交给客户端。

针对同一个Servlet,Servlet容器会在第一次收到HTTP请求时建立一个Servlet实例,然后启动一个线程,第二次收到http请求后,Servlet容器无需创建相同Servlet ,仅开启第二个线程来处理请求。

----->多线程的方式有效提高执行效率,降低服务器负担。

Part 2 Servlet 优势

     Servlet具有优良的跨平台性;

可移植性良好:java语言编写,Servlet API标准完善,企业编写的Servlet程序可轻松移植到其他服务器中;

执行效率高:Servlet请求到来时激活Servlet,处理完成后等待新请求;新请求产生新线程,而不是进程;

使用方便:可轻松处理HTML表单数据,并读取和设置HTTP头,处理cookie,跟踪会话;

Part 3 基础知识

      HttpServlet作为一个抽象类来创建用户自己的Http Servlet. Http Servlet类扩展了GenericServlet类。HttpServlet类的子类必须至少重写doGet()和doPost()方法其中之一。HttpServlet类提供doGet()方法处理GET请求,doPost()处理POST请求:

doGet() :通过GenericServlet 类的service()方法来调用此方法;

doPost():  通过GenericServlet 类的service()方法来调用此方法;

Part 4 Servlet生命周期     

Servlet生命周期由Servlet容器控制,该容器创建Servlet的实例。Servlet的生命周期是指Servlet实例在创建后,响应客户端请求直至销毁的全过程;

其创建取决于Servlet的首次调用。

Servlet生命周期定义了它如何被加载,初始化,以及它如何接受请求,响应请求,提供服务;

代码中,Servlet生命周期由接口javax.servlet.Servlet定义,所有的Servlet必须直接或间接的实现该接口,这样才能在Servlet容器中运行。

Servlet接口定义了生命周期三种方法:

1    init():创建实例后进行初始化。实现ServletConfig接口的对象作为参数进行传递。在初始化过程中,Servlet容器使用ServletConfig接口信息(如Servlet的初始化参数的名称,初始化参数的值,以及Servlet实例名称等)传递给Servlet。

public void init(ServletConfig config)throws ServletException

2    service():响应客户端发出的请求。service()方法接受ServletRequest接口和Servletresponse接口的对象来处理请求和发送响应;

public void service(ServleRequest request,ServletResponse response) throws ServletException,IOException

3    destroy():如果不再有需要请求的对象,则释放Servlet对象;

public void destroy()

Servlet生命周期各阶段:

1.实例化:Servlet容器创建Servlet类的实例对象;

2.初始化:容器调用Servlet的init()方法,通常会申请资源以便后续使用;

3.服务:由容器使用以响应客户对Servlet的请求;

4.破坏:在释放Servlet实例前调用,通常会释放资源;

5.不可用:释放内存中的容器;

[要实例化一个Servlet,容器必须先找到Servlet类,加载servlet类并创建Servlet对象,然后通过调用Servlet的init()方法来初始化Servlet。ServletConfig接口对象作为参数传给init()方法,该接口对象为Servlet提供对ServletContext接口的访问。Servlet容器使用ServletContext接口与Servlet容器进行通信;

如果初始化Servlet失败,则抛出UnavailableException或ServletException异常,并再次尝试对Servlet进行实例化和初始化。然后将ServletRequest和ServletResponse接口作为参数传递给service方法,该方法将处理请求并返回响应。

如果响应请求时发生异常,则容器通过调用destroy()方法卸载实例]

Part 5    Servlet API

在javax.servlet和javax.servlet.http包中的各类和接口如下:

(1)ServletInputStream类

从java.io.InputStream类扩展而来的抽象类,该类创建的对象用于读取客户端请求中的二进制数据,而该类的readLine()方法用于每次读取一行数据;

        该方法将从给定偏移处开始的每字节读取到数组中,直到该方法遇到换行符或者读取完一定量的字节数量,该方法返回一个整数来指定实际读取的字节数,到达流尾时返回-1

public int readLine(byte b[],int offset,int length)throws java.io.IOException//b为用于存储读取的数据的字节数组;offset指定方法开始读取字符的起始位置;length读取的最大字节数

(2)ServletOutputStream类

该类创建的对象用于将二进制数据从服务器发送到客户端。具体实现的方法如下:

+   print():将字符串写入客户端。如果发生任何输入或输出异常,则方法print()会引发IOException异常,print()方法接受参数,如char,float,double,int,long,String。

public void print(String str)throws java.io.IOException//str为发送到客户端的字符串

+     println():将字符串写入客户端,紧跟后面输出回车。如果发生任何I/O异常,则会引发IOException

(3)ServletRequest接口

使用ServletRequest接口创建对象,用于使客户端请求信息对Servlet可用。创建的对象作为参数传递至Servlet的service()。

该类实现方法如下:

+     getInputStream():返回客户端请求中的二进制数据,并将其保存在getInputStream对象中

public ServletInputStream getInputStream()throws IOException

+     getParameter():用于获取请求消息一起发送的附加信息-----请求参数

public String getParameter(String str)

+     getContentLength():返回客户端发送的请求的实际长度,如果长度未知,则返回-1

public int getContentLength()

+     getServerName():返回请求发至的服务器名称

public String getServerName()

(4)ServletResponse接口

使用该接口创建的对象用于向客户端提供响应。创建的对象作为参数传递至Servlet的service()方法中。该接口实现的方法如下:

+     getOutpouStream():返回一个ServletOutputStream对象,它被用来发送对客户端的响应

public ServletOutputStream getOutputStream()throws IOException

+     getWriter():返回将字符文本发送到客户端的PrintWriter对象

public PrintWriter getWriter()throws IOException

+      setContentLength():允许用户设置将作为响应放的数据的长度

public void setContentLength(int length)

+      getBufferSize():检索实际的以响应客户端的缓存区大小。若没有使用缓冲区则返回0

public int getBufferSize()

+      setBufferSize():设置将发送到客户端的数据的缓冲区的大小

public void setBufferSize(int size)

(5)HttpServletRequest接口

容器在调用Servlet的doGet()或doPost()方法时,会创建一个HttpServletRequest接口的实例和一个HttpServletResponse接口的实例,作为参数传递给doGet和doPost()方法。该接口代表客户请求,它提供了多种获取请求数据的方法,具体继承层次如图:

(未完结,下午继续)

时间: 2024-10-14 14:54:12

Servlet 技术全总结 一的相关文章

CGI与Servlet技术对比

CGI:Common Gateway Interface,通用网关接口. CGI处理步骤 首先,客户端(即Web浏览器)根据某资源的URL向Web服务器提出请求:Web服务器的守护进程(HTTP Daemon)将此请求的参数通过标准输入和环境变量传递给指定的CGI程序,并启动此应用程序进行处理,如要存取数据库服务器上数据库的数据,则向数据库服务器发出处理请求,数据库服务器将执行结果返回给CGI程序,CGI程序把处理结果通过标准输出返回给HTTP Daemon进程,再由HTTP Daemon进程返

漫谈Servlet技术

1.要谈到Servlet技术,不得不先谈谈动态网页的概念. 编写过网页的人都知道,浏览器能够根据HTML静态标记语言来显示各式各样的网页.但是如果我们需要在网页上完成一些业务逻辑:比如登陆验证.或者说网页显示的内容在服务器的数据库中.如果是这样,除了负责显示的HTML标记之外,必须还要有完成这些业务功能的代码存在.这种网页我们就叫做动态网页. 对于静态网页而言,服务器上存在的是一个个纯HTML文件.当客户端浏览器发出HTTP请求时,服务器可以根据请求的URL找到对应的HTML文件,并将HTML代

Moon.Orm3.8技术全攻略

Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从实际出发解析Moon.ORM.(技术群:21696534)  二.Moon.ORM的特色及优势 ----但凡众多的智慧都是及其简单的,但不为人所知.这也是Moon.ORM的主要特色:大道至简. 1.高性能是Moon.ORM优势之一,也是我架构它的主要目的之一,如以前我说的那样,是为了弥补项目中遇到的

Java Web之Servlet技术

1.Servlet基础 针对Servlet技术开发,Sun公司提供了一些列接口和类,其中最重要的是javax.servlet.Servlet接口,两个重要的包是javax.servlet和javax.servlet.http,Servlet就是一种实现了Servlet接口的类,它由Web容器(Tomcat/Jetty等)负责调用并创建,用于接收和响应用户请求.Servlet接口中定义了5个抽象方法: 方法 功能 void init(ServletConfig config) 负责Servlet初

【Java】Java Servlet 技术简介

Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创建您能够想像到的任意复杂度的 Web 应用程序,以及作为一名专业编程人员,您如何才能最有效地使用 servlet. 5 评论: Roy W. Miller ([email protected]), 独立的软件开发辅导员.程序员和作者, RoleModel Software 2004 年 12 月 2

Java Servlet技术

当Web刚开始被用来传送服务时,服务提供者就已经意识到了动态内容的需要.Applet是为了实现这个目标的一种最早的尝试,它主要关注使用客户端平台来交付动态用户体验.与此同时,开发人员也在研究如何使用服务器平台实现这个目标.开始的时候,公共网关接口(Common Gateway Interface ,CGI)脚本是生成动态内容的主要技术.虽然使用得非常广泛,但CGI脚本技术有很多的缺陷,这包括平台相关性和缺乏可扩展性.为了避免这些局限性,Java Servlet技术应运而生.它能够以一种可移植的方

javaSE学习笔记—Servlet技术(11)

如果大家要开发一个动态的网站,那么就必须要学习一种动态的网页开发技术.那么在SUN提供的JavaEE中主要包含两种开发动态网页的技术:Servlet和JSP技术. Servlet技术简介 Servlet技术是SUN提供的一种开发动态网页的核心组件之一.可以方便的开发动态网页.主要用得语言是java,开发者只需要实现相应的接口或者继承相应的类,那么你的java文件就是一个动态的网页.当然好需要一些额外的配置即可. 一个Servlet其实就是一个运行在web server上得一个java程序. Se

servlet技术学习随笔

进入这里学习的第二天!开始着手想看servlet,前面看到javabean jsp 跟这个servlet的MVC框架!真心觉得很重要,技术这种东西学会了就很懂!学不会再怎么解释都不明白.看了一整上午!没怎么搞明白!才想起来以前学习c#的土办法!各种去百度!起查……终于算是有点懂得了! (1).  PrintWriter out = response.getWriter();当一个Servlet响应的时候将响应信息通过out对象输出到网页上,当响应结束时它自动被关闭.PrintWriter用处是将

Java Servlet 技术简介

Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创建您能够想像到的任意复杂度的 Web 应用程序,以及作为一名专业编程人员,您如何才能最有效地使用 servlet. 4 评论: Roy W. Miller ([email protected]), 独立的软件开发辅导员.程序员和作者, RoleModel Soft