Servlet简介
Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。
Servlet通过创建一个框架扩展服务器的能力,采用请求-响应模式提供Web服务。当客户机发送请求至服务器时,服务器将请求信息发送给Servlet,Servlet生成响应内容并将其传给Server,然后再由Server将响应返回给客户端。
一、Servlet的功能:
1、创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。
2、创建可嵌入到现有 HTML 页面中的一部分HTML 页面(HTML 片段)。与其他服务器资源(文件、数据库、Applet、Java应用程序等)进行通信。
3、接受多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏服务器。
4、对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端(包括SSI)。
二、servlet容器:
负责处理客户请求、把请求传送给servlet并把结果返回给客户。不同程序的容器实际实现可能有所变化,但容器与servlet之间的接口是由Servlet API定义好的,这个接口定义了servlet容器在servlet上要调用的方法及传递给servlet的对象类。
三、servlet的生命周期:
1、servlet容器创建servlet的一个实例
2、容器调用该实例的init()方法
3、如果容器对该servlet有请求,则调用此实例的service()方法
4、容器在销毁本实例前调用它的destroy()方法
一旦请求了一个servlet,就没有办法阻止容器执行一个完整的生命周期。
四、Servlet API
1、servlet接口:
public interface Servlet
它的生命周期由javax.servlet.servlet接口定义。当你在写servlet的时候必须直接或间接的实现这个接口。一般趋向于间接实现:通过从javax.servlet.GenericServlet或javax.servlet.http.HttpServlet派生。
在实现servlet接口时必须实现它的五个方法:
init():
public void init(ServletConfig config) throws ServletException
一旦对servlet实例化后,容器就调用此方法。容器把一个ServletConfig对象传统给此方法,这样servlet的实例就可以把与容器相关的配置数据保存起来供以后使用。如果此方法没有正常结束就会抛出一个ServletException。一旦抛出该异常,servlet就不再执行,而随后对它的调用会导致容器对它重新载入并再次运行此方法。接口规定对任何servlet实例,此方法只能被调用一次,在任何请求传递给servlet之前,此方法可以在不抛出异常的情况下运行完毕。
service():
public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException
只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段,后一个提供servlet构造响应的方法。
destroy():
public void destroy()
容器可以在任何时候终止servlet服务。容器调用此方法前必须给service()线程足够时间来结束执行,因此接口规定当service()正在执行时destroy()不被执行。
getServletConfig():
public ServletConfig getServletConfig()
在servlet初始化时,容器传递进来一个ServletConfig对象并保存在servlet实例中,该对象允许访问两项内容:初始化参数和ServletContext对象,前者通常由容器在文件中指定,允许在运行时向sevrlet传递有关调度信息,后者为servlet提供有关容器的信息。此方法可以让servlet在任何时候获得该对象及配置信息。
getServletInfo():
public String getServletInfo()
此方法返回一个String对象,该对象包含servlet的信息,例如开发者、创建日期、描述信息等。该方法也可用于容器。
2、HttpServlet类
该类扩展了GenericServlet类并对servlet接口提供了与HTTP更相关的实现。
service():
protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
该方法作为HTTP请求的分发器,这个方法在任何时候都不能被重载。当请求到来时,service()方法决定请求的类型(GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE),并把请求分发给相应的处理方法(doGet(),doPost(),doHead(),doOptions(),doDelete(),doPut(),doTrace())每个do方法具有和第一个service()相同的形式。为了响应特定类型的HTTP请求,我们必须重载相应的do方法。如果servlet收到一个HTTP请求而你没有重载相应的do方法,它就返回一个说明此方法对本资源不可用的标准HTTP错误。
getLatModified():
protected long getLastModified(HttpServletRequest req)
该方法返回以毫秒为单位的的自GMT时间1970年1月1日0时0分0秒依赖的最近一次修改servlet的时间,缺省是返回一个负数表示时间未知。当处理GET请求时,调用此方法可以知道servlet的最近修改时间,服务器就可决定是否把结果从缓存中去掉。
3、HttpServletRequest接口
public interface HttpServletRequest extends ServletRequest
所有实现此接口的对象(例如从servlet容器传递的HTTP请求对象)都能让servlet通过自己的方法访问所有请求的数据。下面是一些用来获取表单数据的基本方法。
getParameter()
public String getParameter(String key)
此方法试图将根据查询串中的关键字定位对应的参数并返回其值。如果有多个值则返回列表中的第一个值。
getParameterValues():
public String[] getParameterValues(String key)
如果一个参数可以返回多个值,比如复选框集合,则可以用此方法获得对应参数的所有值。
getParameterNames():
Public Enumeration getParameterNames()
此方法返回一个Enumeration对象,包含对应请求的所有参数名字列表。
4、HttpServletResponse接口
public interface HttpServletResponse extends servletResponse
servlet容器提供一个实现该接口的对象并通过service()方法将它传递给servlet。通过此对象及其方法,servlet可以修改响应头并返回结果。
setContentType():
public void setContentType(String type)
在给调用者发回响应前,必须用此方法来设置HTTP响应的MIME类型。可以是任何有效的MIME类型,当给浏览器返回HTML是就是”text/html”类型。
getWriter():
public PrintWriter getWriter()throws IOException
此方法将返回PrintWriter对象,把servlet的结果作为文本返回给调用者。PrintWriter对象自动把Java内部的UniCode编码字符转换成正确的编码以使客户端能够阅读。
getOutputStream():
public ServletOutputStream getOutputStream() throws IOException
此方法返回ServletOutputStream对象,它是java.io.OutputStream的一个子类。此对象向客户发送二进制数据。
setHeader():
public void setHeader(String name,String value)
此方法用来设置送回给客户的HTTP响应头。有一些快捷的方法用来改变某些常用的响应头,但有时也需要直接调用此方法。
servlet的性能和效率
一个servlet仅被初始化一次而执行多次,因此极小的低效性也会随着时间的增加而产生很很大的影响。在代码中需要考虑String对象的使用,如果产生HTML响应需要用到很多字符串时,不应该为每一个字符串生成一个String对象,因为这会产生大量的String和StringBuffer对象,造成大量的对象构造消耗和垃圾收集负担,解决的办法是一行一行的把所有需要写入的直接写入PrintWriter中,或者创建一个StringBuffer对象,并使用append()方法将文本加入。
及时回送
有时,程序需要花费很长时间执行,在这种情况下应该回送给客户端一些信息,而不是长时间显示白屏,这可以在执行到一定程度就回送一些东西,可以使用PrintWriter的flush()方法强制将现有的内容回送给浏览器。
分享到:
相关推荐
第2篇为基础篇,主要介绍HTML、CSS、JavaScript、Servlet、JSP和JavaBean等Java Web开发所需的基础知识,并对这些基础知识进行练习和领悟;第3篇为提高篇,介绍当前流行的SSH开发框架,并带领读者对SSH框架进行整合...
1. Java语言:Java是Web开发的基础,它是一种面向对象的编程语言,具有跨平台特性,为Web应用程序提供了强大支持。 2. Servlet:Servlet是Java Web的核心组件,用于扩展服务器的功能,处理HTTP请求并返回响应。 3. ...
《JAVA WEB编程从入门到实践》是一本针对初学者和有一定基础的JAVA开发者设计的教程,旨在帮助读者全面掌握JAVA在Web开发中的应用。通过学习本书,你可以深入了解JAVA Web技术,包括Servlet、JSP、JavaServer Faces ...
基础卷》是一本深入浅出的教程,旨在为读者提供全面的Java Web开发基础知识。本书涵盖了从入门到实践的关键技术,是初学者和有一定经验的开发者提升技能的理想参考资料。标签“Java”明确了本书的核心内容,即Java...
2. **Java EE**:Java企业版(Java EE)是Java Web开发的平台,包含了一系列API和服务,如Java Servlet、JSP、JSTL、EJB(Enterprise JavaBeans)、JPA(Java Persistence API)等,用于构建分布式、多层的企业级...
《轻量级Java Web整合开发入门》是一本旨在引导初学者进入Java Web开发领域的书籍,由段鹏松和李占波合著。该资源包含了书中的源代码,这对于理解书中讲解的概念和技术至关重要。通过实际操作这些代码,学习者能够更...
### Java Web 开发快速入门详解 #### Java Web 技术的重要性及应用范围 Java Web 技术作为一种广泛应用的企业级开发技术,在当前的互联网环境中占据着举足轻重的地位。随着互联网的发展,各种在线服务和应用的需求...
2. **Servlet和JSP**:Servlet是Java Web开发的基础,用于接收和响应HTTP请求。JSP(JavaServer Pages)则提供了更方便的方式来创建动态网页,它允许在HTML中嵌入Java代码。 3. **JDBC**:Java Database ...
Java+Web开发教程----入门与提高篇(JSP+Servlet)》附赠电子资料
【轻量级Java Web开发整合入门】 在Java Web开发领域,"轻量级"一词通常指的是不依赖大型企业级应用服务器(如IBM WebSphere或Oracle WebLogic)的框架和工具,它们更易于使用、部署和维护。轻量级Java Web开发强调...
通过"JAVA WEB编程从入门到实践2"的学习资源,你可以逐步掌握这些技能,从零基础成长为能够独立开发Java Web应用的专业开发者。每个部分都需要实践操作来巩固理论知识,所以动手编程是非常重要的。这个过程可能充满...
【标题】"JAVA零基础入门和从网页搭建入门Java Web" 涵盖了学习Java编程语言的基础知识以及如何利用Java技术构建Web应用程序的关键概念。这个主题分为两个主要阶段,阶段一是Java基础知识的学习,阶段二是Java Web...
本教程针对初学者,旨在帮助没有基础的人快速入门,掌握Java Web开发的核心概念和技术。 一、Java基础知识 Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年推出。它的设计目标是具有...
Java Web开发入门需要理解Web的基本概念,熟悉静态与动态Web的区别,掌握动态Web的核心技术如Servlet、JSP等,并了解各种实现动态Web的应用框架。通过学习这些基础知识,开发者可以创建出功能丰富的Web应用程序,...
1. **Java编程基础**:Java是Java Web开发的基础,它是一种面向对象的编程语言,以其跨平台性、安全性和稳定性而受到广泛青睐。在Java Web开发中,你需要理解类、对象、继承、多态等概念,并熟悉Java语法。 2. **...
《Java Web开发实战经典》这本书是入门这一领域的绝佳选择。它通过实践案例帮助读者理解并掌握Java Web开发的基础知识。 本书首先会介绍Java Web开发的基础,包括Servlet和JSP(Java Server Pages)这两个核心组件...
本资源包含"JAVA WEB从入门到精通"这本书随书附带的第2到第10章的源代码,这些章节通常涵盖了Web开发的基础到进阶内容。 1. **基础概念**:Java Web开发首先涉及Servlet和JSP(JavaServer Pages),它们是构建动态...
Java Web系统开发是一个涵盖广泛的领域,它涉及到网页的创建、服务器端编程以及应用程序的交互等多个...通过学习和实践这些内容,初学者可以建立起坚实的Java Web开发基础,为进一步深入学习和开发实际项目做好准备。
"Java Web入门到精通的光盘源码"是一份宝贵的资源,它包含了从初学者到高级开发者在学习过程中可能会遇到的各种示例代码,旨在帮助读者快速理解和掌握Java Web开发。 1. **Servlet**:Servlet是Java Web的核心组件...
《Java Web开发从初学到精通》开始主要介绍Servlet、JSP、JavaBean、EL、JSTL、JDBC等Web开发基础知识,然后学习Struts、Hibernate、Spring、Ajax、JSF等开源框架,并最终学习如何整合这些开源框架进行J2EE开发,...