servlet学习笔记02 servlet类、对象

1.servlet主要类和接口的结构如下图所示:

servlet常用类和接口
javax.servlet.Servlet接口:规定了必须由servlet类实现由servlet引擎识别和管理的方法集,基本目标是提供生命周期方法init()、service()和destroy()方法。
Servlet接口中方法:
void init(ServletConfig config)throws ServletException:在servlet被载入后和实施服务前由servlet引擎进行1次调用,如果产生UnavailableException异常,则servlet退出服务。
ServletConfig getServletConfig():返回传递到servlet中的init()方法的ServletConfig对象
void service(ServletRequest request,ServletResponse response)throws ServletException,IOException:处理request对象中描述的请求,使用response对象返回请求结果
String getServletInfo(): 返回描述servlet的一个字符串
void destroy(): 当servlet需要被销毁时,由servlet引擎调用
javax.servlet.GenericServlet类:直接实现Servlet接口,提供除了service()方法之外所有Servlet接口中方法的缺省实现,通过简单地扩展该类,可以编写一个基本的servlet,除了实现Servlet接口外,也实现了ServletConfig接口,处理初始化参数和servlet上下文,提供init()方法中的ServletConfig对象的方法。
GenericServlet类中的方法:
void destroy():销毁方法
String getInitParameter(String name):通过调用config.getInitParameter(name)实现返回具有指定名称的初始化参数值。
Enumeration getInitParameterNames():返回servlet已编码的所有初始化参数的枚举类型值,通过调用config.getInitParameterNames()获得列表,如果未提供初始化参数,则返回空的枚举类型值。
ServletConfig getServletConfig():     返回传递到init()方法的ServletConfig对象
ServletContext getServletContext() 返回在config对象中引用的ServletContext
String getServletInfo() 返回空字符串

void init(ServletConfig config)throws ServletException:     在一实例变量中保存config对象。

void log(String msg,Throwable t): 编写一个入口和servlet注册的栈轨迹。此方法也是ServletContext中相应方法的一个副本。

abstract void service(Request request,Response response)throws ServletException,IOException:     由servlet引擎调用为请求对象描述的请求提供服务。这是GenericServlet中唯一的抽象方法。因此它也是唯一必须被子类所覆盖的方 法。

String getServletName() :返回在Web应用发布描述器(web.xml)中指定的servlet的名字。

javax.servlet.http.HttpServlet类(HTTP版本): 虽然servlet API允许扩展到其它协议,但最终所有的servlet均在Web环境下实施操作,只有几种servlet直接扩展了GenericServlet。对servlet更一般的是扩展其HTTP子类HttpServlet。 HttpServlet类通过调用指定到HTTP请求方法的方法实现service(),亦即对DELETE、HEAD、GET、OPTIONS、 POST、PUT和TRACE,分别调用doDelete()、doHead()、doGet()、doOptions()、doPost()、 doPut()和doTrace()方法,将请求和响应对象置入其HTTP指定子类。

HttpServlet类中的方法:

Void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException: 由servlet引擎调用用处理一个HTTP GET请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。

Void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException :由servlet引擎调用用处理一个HTTP POST请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。

Void doPut(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException: 由servlet引擎调用用处理一个HTTP PUT请求。本方法中请求URI指出被载入的文件位置。

void doDelete(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException :由servlet引擎调用用处理一个HTTP DELETE请求。请求URI指出资源被删除。

Void doOptions(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException: 由servlet引擎调用用处理一个HTTP OPTIONS请求。返回一个Allow响应头标表明此servlet支持的HTTP方法。一个servlet不需要覆盖此方法,因为 HttpServlet方法已经实现规范所需的功能。

Void doTrace(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException: 由servlet引擎调用用处理一个HTTP TRACE请求。使得请求头标被反馈成响应关标。一个servlet不需要覆盖此方法,因为HttpServlet方法已经实现HTTP规范所需的功 能。

Void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException Service(Request request,Response response):调用的一个立即方法,带有指定HTTP请求和响应。此方法实际上将请求导向doGet()、doPost()等等。不应该覆盖此方 法。

Void service(Request request,Response response)throws ServletException,IOException: 将请求和响应对象置入其指定的HTTP子类,并调用指定HTTP的service()方法。

javax.servlet.ServletRequest类(协议无关版本): ServletRequest接口封装了客户端请求的细节。它与协议无关,并有一个指定HTTP的子接口。 ServletRequest主要处理: 1.找到客户端的主机名和IP地址 2.检索请求参数 3.取得和设置属性 4.取得输入和输出流

ServletRequest类中的方法:

Object getAttribute(String name): 返回具有指定名字的请求属性,如果不存在则返回null。属性可由servlet引擎设置或使用setAttribute()显式加入。

Enumeration getAttributeName(): 返回请求中所有属性名的枚举。如果不存在属性,则返回一个空的枚举。

String getCharacteEncoding(): 返回请求所用的字符编码。

Int getContentLength(): 指定输入流的长度,如果未知则返回-1。

ServletInputStream getInputStream()throws IOException: 返回与请求相关的(二进制)输入流。可以调用getInputStream()或getReader()方法之一。

String getParameter(String name) :返回指定输入参数,如果不存在,返回null。

Enumeration getParameterName(): 返回请求中所有参数名的一个可能为空的枚举。

String[] getParameterValues(String name): 返回指定输入参数名的取值数组,如果取值不存在则返回null。它在参数具有多个取值的情况下十分有用。

String get Protocol(): 返回请求使用协议的名称和版本。

String getScheme(): 返回请求URI的子串,但不包含第一个冒号前的内容。

String getServerName(): 返回处理请求的服务器的主机名。

String getServerPort(): 返回接收主机正在侦听的端口号。

BufferedReader getReader()throws IOException: 返回与请求相关输入数据的一个字符解读器。此方法与getInputStream()只可分别调用,不能同时使用。

String getRemoteAddr(): 返回客户端主机的数字型IP地址。

String getRemoteHost(): 如果知道,返回客户端主机名。

void setAttribute(String name,Object obj) :以指定名称保存请求中指定对象的引用。

void removeAttribute(String name): 从请求中删除指定属性 Locale getLocale() 如果已知,返回客户端的第一现场或者为null。

Enumeration getLocales() :如果已知,返回客户端的第一现场的一个枚举,否则返回服务器第一现场。

boolean isSecure(): 如果请求使用了如HTTPS安全隧道,返回true

RequestDispatcher getRequestDispatcher(String name): 返回指定源名称的RequsetDispatcher对象

时间: 2024-10-11 22:46:52

servlet学习笔记02 servlet类、对象的相关文章

《Servlet学习笔记》Servlet接口实现类

Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet.HttpServlet. HttpServlet指能够处理HTTP请求的Servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大.因此开发人员在开发Servlet的时候,通常应该继承这个类,而避免直接去实现Servlet接口. HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GE

《Servlet学习笔记》Servlet生命周期和调用

    学习技术有时会感觉很枯燥,有时感觉很绕,N多调用,不好理解,但如果能画出图来,就可以一目了然. 图比文字更容易让人接受,并产生深刻印象.一张图可以包含很多东西. 下面一些图来自于网络,偶然间发现,感觉让人忽然明白并回忆起了好多. Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则直接执行第四步,否则,执行第二步: 装载并创建该Servlet的一个实例对象: 调用Serv

《Servlet学习笔记》Servlet开发细节

Servlet开发细节1.由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成.2.<servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Serv

《Servlet学习笔记》Servlet 简介

Servlet 简介:Servlet是sun公司提供的一门用于开发动态web资源的技术.Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下两步:1.编写一个Java类,实现servlet接口:2.把开发好的Java类部署到web服务器中. jsp就是servletjavase.javaee,servlet不属于javase而属于javaeeservlet专门文档APITomcat可以运行servlet,lib

(Servlet学习笔记)Servlet的小范例

Web.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-nam

Other - 02 - Servlet学习笔记 - 异步Servlet

异步Servlet Servlet默认情况下都是同步的,但是Servlet可以进行异步的调用. /** * Servlet implementation class MainServlet */ @WebServlet(value = "/MainServlet", asyncSupported = true) public class AsynServlet extends HttpServlet { private static final long serialVersionUI

《Servlet学习笔记》Servlet开发细节-线程安全

Servlet开发细节-线程安全当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用Servlet的service方法,因此service方法内如果访问了通过一个资源的话,就有可能引发线程安全问题.使用同步块可以解决线程安全问题,但是会使并发串行化.如果某个Servlet实现了SingleThreadModel接口,那么Servlet引擎将以单线程模式来调用其service方法.SingThreadModel接口中没有定义任何方法,只

python 学习笔记7(类/对象的属性)

27. 属性的__dict__系统 1)对象的属性可能来自: 其类的定义,叫做类属性 继承父类的定义 该对象实例定义(初始化对象时赋值),叫做对象属性 2)对象的属性存储在对象的 __dict__ 属性中: __dict__ 为字典,键为属性名,值是属性本身. 例子: class bird(object): feather = True # 父类 class chicken(bird): fly = False def __init__(self, age): self.age = age #

SERVLET 学习笔记

SERVLET 学习笔记 一.Servlet基本定义 Servlet是服务器端上面运行的一段小的java程序,一个servlet就是一个简答的java类.通常servlet都是通过请求和返回的模式来被访问的,客户端通过resuest请求,servlet则通过response来返回需要的内容. 二.Tomcat容器等级 Tomcat容器等级分为四个等级,由内向外分别是:context容器àSERVLET容器àHOST(主机)容器àENGINE(引擎)容器.其中,CONTEXT容器,一个CONTEX