您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > JSP核心技术之JavaServlet
Java网络编程原理与JSPWeb核心开发技术2第七章JavaServlet7.1Servlet概述7.2编写简单的Servlet7.3Servlet应用37.1Servlet概述7.1.1什么是Servlet7.1.2Servlet的特点7.1.3Servlet的生命周期7.1.4ServletAPI简介47.1Servlet概述7.1.1什么是ServletJavaServlet是运行在服务器端的组件,是一个标准的Java类,用来扩展服务器的性能。具有独立于平台和协议的特性,可以生成动态的Web页面。担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet是位于Web服务器内部的服务器端的Java应用程序,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。Servlet是JSP的基础,JSP页面在Web引擎中运行前会被编译器先转换为Servlet,再编译成字节码,因此JSP页面与Servlet是一一对应的。JSP注重页面的表现,而Servlet注重业务逻辑的实现。57.1Servlet概述7.1.2Servlet的特点高效传统CGI程序以进程方式运行,而Servlet以线程方式运行。方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。功能强大可以完成很多传统的CGI程序很难做到的事情。可移植性好ServletAPI具有完善的标准。6Web服务器doGet()方法doPost()方法HTTPGET请求HTTPPOST请求响应响应客户机77.1Servlet概述7.1.3Servlet的生命周期Servlet由Web服务器引擎负责编译执行,当启动Web服务器或者是客户机第一次请求服务时,可以自动加载Servlet。当Web服务器中的Servlet被请求访问时,服务器将启动一个线程来响应,在Servlet中要接受HTTP请求并作相应处理。加载后,Servlet继续运行等待其他客户机的请求。一个Servlet的生命周期由部署Servlet的容器来控制,可以将其生命周期分为以下几个阶段:1、装载类2、创建实例3、初始化init()4、服务service()(doGet、doPost等)5、销毁destroy()87.1Servlet概述客户端Web容器Servlet1、初次请求2、装载,创建实例,init()3、service()4、返回结果5、响应destroy()再次请求Servlet生命周期示意图97.1Servlet概述Servlet与Applet的对比相似之处:*它们不是独立的应用程序,没有main()方法。*它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。*它们都有一个生存周期,包含init()和destroy()方法。不同之处:*Applet具有很好的图形界面(AWT),与浏览器一起,在客户端运行。*Servlet则没有图形界面,运行在服务器端。107.1Servlet概述7.1.4ServletAPI简介javax.servlet和javax.servlet.http包为编写Servlet提供了接口和类。所有的Servlet都必须实现Servlet接口,该接口定义了生命周期方法。当实现一个通用的服务时,可以使用或扩展由JavaServletAPI提供的GenericServlet类。HttpServlet类提供了一些方法,诸如doGet()和doPost(),以用于处理特定的HTTP协议的服务。117.1Servlet概述7.1.4ServletAPI简介1、javax.servlet.Servlet接口提供Servlet生命周期方法。init(ServletConfigconfig):用于初始化Servlet。destroy():用于销毁Servlet,当servlet将要卸载时由servlet引擎调用。getServletInfo():返回描述servlet的一个字符串。getServletConfig():获得Servlet配置相关信息。service():运行应用程序逻辑的入口点,处理request对象中描述的请求,使用response对象返回请求结果。Sevlet的核心。客户请求一个HttpServlet对象,就调用service方法,传递给方法一个请求(ServletRequest)对象和响应(ServletResponse)对象作为参数。127.1Servlet概述7.1.4ServletAPI简介2、javax.servlet.GenericServlet类Servlet接口的直接实现,同时,还实现了ServletConfig接口。getInitParameter(Stringname):返回具有指定名称的初始化参数值。getInitParameterNames():返回此servlet已编码的所有初始化参数的一个枚举类型值。getServletName():返回在Web应用发布描述器(web.xml)中指定的servlet的名字。getServletConfig():返回传递到init()方法的ServletConfig对象。service(Requestrequest,Responseresponse):由servlet引擎调用,是GenericServlet中唯一的抽象方法,也是唯一必须被子类所覆盖的方法。137.1Servlet概述7.1.4ServletAPI简介3、javax.servlet.http.HttpServlet类HttpServlet类通过调用指定到Http请求的方法实现service(),即对HEAD、GET、POST等请求,分别调用doHead()、doGet()、doPost()等方法,将请求和响应对象置入其HTTP指定子类。doGet(HttpServletRequestrequest,HttpServletResponseresponse):支持HttpGet请求。doPost(HttpServletRequestrequest,HttpServletResponseresponse):支持HttpPost请求。147.1Servlet概述7.1.4ServletAPI简介4、javax.servlet.ServletRequest接口封装了客户端请求的细节,主要功能包括:找到客户端的主机名和IP地址、检索请求参数、取得和设置属性、取得输入和输出流等。getAttribute(Stringname)返回具有指定名字的请求属性。getCharacterEncoding()返回请求所用的字符编码。getParameter(Stringname)返回指定输入参数,如果不存在,返回null。getProtocol()返回请求使用协议的名称和版本。setAttribute(Stringname,Objectobj)以指定名称保存请求中指定对象的引用。removeAttribute(Stringname)从请求中删除指定属性157.1Servlet概述7.1.4ServletAPI简介5、javax.servlet.http.HttpServletRequest类主要功能包括:读取和写入HTTP头标、取得和设置cookies、取得路径信息、标识HTTP会话等。Cookie[]getCookies()返回与请求相关cookie的一个数组。StringgetHeader(Stringname)返回指定的HTTP头标指。EnumerationgetHeaderNames()返回请求给出的所有HTTP头标名称的枚举值。EnumerationgetHeaders(Stringname)返回请求给出的指定类型的所有HTTP头标的名称的枚举值。HttpSessiongetSession()调用getSession(true)的简化版。HttpSessiongetSession(booleancreate)返回当前HTTP会话,如果不存在,则创建一个新的会话,create参数为true。167.1Servlet概述7.1.4ServletAPI简介6、javax.servlet.ServletResponse接口对servlet生成的结果进行封装,由servlet引擎创建。StringgetCharacterEncoding()返回响应使用字符解码的名字,默认为ISO-8859-1。OutputStreamgetOutputStream()返回用于将返回的二进制输出写入客户端的流。voidsetContentLength(intlength)设置内容体的长度。voidsetContentType(Stringtype)设置内容类型。177.1Servlet概述7.1.4ServletAPI简介7、javax.servlet.http.HttpServletResponse类HttpServletResponse提供设置状态码、状态信息和响应头标的功能。主要定义了以下几种方法:voidaddCookie(Cookiecookie)将一个Set-Cookie头标加入到响应。voidsetHeader(Stringname,Stringvalue)设置具有指定名字和取值的一个响应头标。sendRedirect(Stringurl):把响应发送到另一页面或者Servlet进行处理。voidsetContextType(Stringtype)设置响应的MIME类型。SetCharacterEncoding(Stringcharset):设置响应的字符编码类型。setContentLength:设置Content-Length头。187.1Servlet概述7.1.4ServletAPI简介8、javax.servlet.ServletConfig接口该接口代表了对Servlet的配置,Servlet配置信息包括Servlet的名字、初始化参数和Servlet上下文,这些配置信息放在web.xml文件中。主要定义了以下几种方法:getInitParameter(Stringname)返回特定名字的初始化参数。getInitParameterNames()返回所有初始化参数的名字。getServletContext()返回Servlet的上下文对象的引用。197.1Servlet概述7.1.4ServletAPI简介9、javax.servlet.ServletContext接口该接口代表Servlet容器上下文,Servlet上下文的作用主要包括:在调用期间保存和检索属性,并与其他Servlet共享这些属性,Servlet上下文的引用可以通过ServletConfig对象的getServletContext()方法得到。getAttribute(Stringname)返回servlet上下文中名称为name的属性。setAttribute(Stringname,Objectobj)在servlet上下文中设置一个属性,属性的名字为name,值为obj对象。getAttributeNames()返回保存在servlet上下文中所有属性名字的枚举。ServletContextgetContext(Stringuripath)返回映射到另一URL的servlet上下文。StringgetInitParameter(Stringname)返回指定上下文范围的初始化参数值。voidremoveAttribute(Stringname)servlet上下文中删除指定属性。207.1Servlet概
本文标题:JSP核心技术之JavaServlet
链接地址:https://www.777doc.com/doc-2882218 .html