`
季铵盐
  • 浏览: 57386 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

网站开发基础之servletAPI

阅读更多
JavaTM servlets 是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的 applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理能力。

一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。这个请求被运行在Web服 务器上的Servlet引擎处理,并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。



Servlet与其他普通的server扩展机制有以下进步:

它使用了许多Web服务器都支持的标准的API。

它可以调用Java所提供的大量的API的功能模块。







一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。

javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。

Servlet的解析和载入[/b]

Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。

[b]Servlet
的初始化[/b]

在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。



Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。

Servlet 也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过ServletInputStream对象读取请求信息。



在多线程的环境下,Servlet必须能处理许多同时发生的请求。例外的情况是这个Servlet执行了SingleThreadModel接口,如果是那样的话,Servlet只能同时处理一个请求。

然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的开发者,你不能假定一个Servlet只有一个实例。

[b]Servlet
的卸载[/b]

当Servlet引擎决定卸载一个Servlet时(例如,如果这个引擎被关闭或者需要让资源),这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。为了完成以上工作,引擎会调用Servlet的destroy()方法。



作为一个Servlet引擎的开发者,你必须对于如何映射客户端的请求到Servlet有大量的适应性。这份说明文档不规定映射如何发生。但是,你必须能够自由地运用下面的所有技术:

映射一个Servlet到一个URL



例如,你可以映射一个Servlet到/catalog,这样来自/catalog/、 /catalog/garden和 /catalog/housewares/index.html的请求都会被映射到这个Servlet。但是来自/catalogtwo 或 /catalog.html的请求没被映射。

映射一个Servlet到所有以一个特定的字段结尾的所有URL



例如,如果你建立了一个名叫listattributes的Servlet,你可以通过使用/servlet/listattributes来访问这个Servlet。

[b]通过类名调用
Servlet[/b]



ServletContext 接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事 件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境 中,但是不同的Servlet可以在Servlet引擎上有不同的视图。

Servlet引擎能够允许一个Servlet环境有它自己的活动范围。



HTTP是一个没有状态的协议。要建立一个有效的Web服务应用,你必须能够识别一个连续的来自远端的客户机的唯一的请求。随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。



因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话跟踪信息到服务器中,指出会话已被建立。在客户端加入之前,我们不能判断下一个客户端请求是目前会话的一部分。

绑定对象到Session中

有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。你可以通过使用HttpSessionBindingListener接口获得这些信息。当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。


这一部分包含了对Java Servlet API的全部类和接口的详细说明。这个说明与Javadoc
API差不多,但是这份文档提供了更多的信息。

软件包:javax.servlet

所包含的类:GenericServlet;ServletInputStream;ServletOutputStream;ServletException;UnavailableException。





[b]Request Dispatcher
接口[/b]

public interface RequestDispatcher;
request
dispatcher对象,用于封装由一个特定的URL定义的服务器资源。

request dispatcher对象是由Servlet引擎建立的,而不是由Servlet开发者建立的。

1、forward

throws ServletException, IOException;

当request对象被传递到目标对象时,请求的URL路径和其他路径参数会被调整为反映目标对象的目标URL路径。

2、include

throws ServletException, IOException

请求对象传到目标对象后会反映调用请求的请求URL路径和路径信息。这个响应对象只能调用这个Servlet的ServletOutputStream对象和PrintWriter对象。



定义

这个接口定义了一个Servlet:一个在Web服务器上继承了这个功能的Java类。

1、init

Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。在调用service方法之前,init方法必须成功退出。

2、service

throws ServletException, IOException;

在一个Servlet对象被卸载后,直到一个新的Servelt被初始化,Servlet引擎不能调用这个方法

public void destroy();

4、getServletConfig

返回一个ServletConfig对象,作为一个Servlet的开发者,你应该通过init方法存储ServletConfig对象以便这个方法能返回这个对象。为了你的便利,GenericServlet在执行这个接口时,已经这样做了。

public String getServletInfo();





[b]ServletConfig
接口[/b]

public interface ServletConfig

方法

public String getInitParameter(String name);

2、getInitParameterNames

这个方法返回一个列表String对象,该对象包括Servlet的所有初始化参数名。如果Servlet没有初始化参数,getInitParameterNames返回一个空的列表。

public ServletContext getServletContext();



定义

定义了一个Servlet的环境对象,通过这个对象,Servlet引擎向Servlet提供环境信息。

方法

public Object getAttribute(String name);

2、getAttributeNames

返回一个Servlet环境对象中可用的属性名的列表。

public ServletContext getContext(String uripath);

为了安全,如果通过这个方法访问一个受限制的Servlet的环境对象,会返回一个空值。

public int getMajorVersion();

5、getMinorVersion

返回Servlet引擎支持的Servlet API的次版本号。例如对于2.1版,这个方法会返回一个整数2。

public String getMimeType(String file);

7、getRealPath

一个符合URL路径格式的指定的虚拟路径的格式是:/dir/dir/filename.ext。用这个方法,可以返回与一个符合该格式的虚拟路径相对应的真实路径的String。这个真实路径的格式应该适合于运行这个Servlet引擎的计算机(包括其相应的路径解析器)。

8、getResource

返回一个URL对象,该对象反映位于给定的URL地址(格式:/dir/dir/filename.ext)的Servlet环境对象已知的资源。无论 URLStreamHandlers对于访问给定的环境是不是必须的,Servlet引擎都必须执行。如果给定的路径的Servlet环境没有已知的资源,该方法会返回一个空值。

9、getResourceAsStream

返回一个InputStream对象,该对象引用指定的URL的Servlet环境对象的内容。如果没找到Servlet环境变量,就会返回空值,URL路径应该具有这种格式:/dir/dir/filename.ext。

10、getRequestDispatcher

如果这个指定的路径下能够找到活动的资源(例如一个Servlet,JSP页面,CGI等等)就返回一个特定URL的RequestDispatcher 对象,否则,就返回一个空值,Servlet引擎负责用一个request dispatcher对象封装目标路径。这个 request
dispatcher对象可以用来完全请求的传送。

public String getServerInfo();

12、log

public void log(String msg, Throwable t);

写指定的信息到一个Servlet环境对象的log文件中。被写入的log文件由Servlet引擎指定,但是通常这是一个事件log。当这个方法被一个异常调用时,log中将包括堆栈跟踪。

public void setAttribute(String name, Object o);

14、removeAttribute

从指定的Servlet环境对象中删除一个属性。

15、getServlet

最初用来返回一个指定名称的Servlet,如果没找到就返回一个空值。如果这个Servlet能够返回,这就意味着它已经被初始化,而且已经可以接受 service请求。这是一个危险的方法。当调用这个方法时,可能并不知道Servlet的状态,这就可能导致有关服务器状态的问题。而允许一个 Servlet访问其他Servlet的这个方法也同样的危险。

16、getServletNames

最初用来返回一个String对象的列表,该列表表示了在这个Servlet环境下所有已知的Servlet对象名。这个列表总是包含这个Servlet自身。

现在这个方法返回一个空的列表。为了保持和以前版本的兼容性,现在这个方法还没有被取消。在以后的API版本中,该方法将被取消。

public Enumeration getServlets();

基于与getServlet方法同样的理由,这也是一个危险的方法。







定义

定义一个Servlet引擎产生的对象,通过这个对象,Servlet可以获得客户端请求的数据。这个对象通过读取请求体的数据提供包括参数的名称、值和属性以及输入流的所有数据。

1、getAttribute

返回请求中指定属性的值,如果这个属性不存在,就返回一个空值。这个方法允许访问一些不提供给这个接口中其他方法的请求信息以及其他Servlet放置在这个请求对象内的数据。

public Enumeration getAttributeNames();

3、getCharacterEncoding

返回请求中输入内容的字符编码类型,如果没有定义字符编码类型就返回空值。

public int getContentLength();

5、getContentType

返回请求数据体的MIME类型,如果类型未知返回空值。

public ServletInputStream getInputStream() throws IOException;

7、getParameter

以一个String返回指定的参数的值,如果这个参数不存在返回空值。例如,在一个HTTP
Servlet中,这个方法会返回一个指定的查询语句产生的参数的值或一个被提交的表单中的参数值。如果一个参数名对应着几个参数值,这个方法只能返回通过getParameterValues方法返回的数组中的第一个值。因此,如果这个参数有(或者可能有)多个值,你只能使用getParameterValues方法。

public Enumeration getParameterNames();

9、getParameterValues

通过一个String对象的数组返回指定参数的值,如果这个参数不存在,该方法返回一个空值。

public String getProtocol();

11、getReader

这个方法返回一个buffered reader用来读取请求体的实体,其编码方式依照请求数据的编码方式。如果这个请求的输入流已经被getInputStream调用获得,这个方法会抛出一个IllegalStateException。

public String getRemoteAddr();

13、getRemoteHost

返回发送请求者的主机名称。如果引擎不能或者选择不解析主机名(为了改善性能),这个方法会直接返回IP地址。

public String getScheme();

15、getServerName

返回接收请求的服务器的主机名。

public int getServerPort();

17、setAttribute

这个方法在请求中添加一个属性,这个属性可以被其他可以访问这个请求对象的对象(例如一个嵌套的Servlet)使用。

getRealPath

返回与虚拟路径相对应的真实路径,如果因为某种原因,这一过程不能进行,该方法将返回一个空值。







定义

定义一个Servlet引擎产生的对象,通过这个对象,Servlet对客户端的请求作出响应。这个响应应该是一个MIME实体,可能是一个HTML页、图象数据或其他MIME的格式。

1、getCharacterEncoding

返回MIME实体的字符编码。这个字符编码可以是指定的类型,也可以是与请求头域所反映的客户端所能接受的字符编码最匹配的类型。在HTTP协议中,这个信息被通过Accept-Charset传送到Servlet引擎。

2、getOutputStream

返回一个记录二进制的响应数据的输出流。

3、getWriter

这个方法返回一个PringWriter对象用来记录格式化的响应实体。如果要反映使用的字符编码,必须修改响应的MIME类型。在调用这个方法之前,必须设定响应的content类型。

4、setContentLength

设置响应的内容的长度,这个方法会覆盖以前对内容长度的设定。

5、setContentType

这个方法用来设定响应的content类型。这个类型以后可能会在另外的一些情况下被隐式地修改,这里所说的另外的情况可能当服务器发现有必要的情况下对MIME的字符设置。







定义

这是一个空接口,它指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法中将不会有两个线程被同时执行。



public abstract class GenericServlet implements Servlet,

这个类的存在使得编写Servlet更加方便。它提供了一个简单的方案,这个方案用来执行有关Servlet生命周期的方法以及在初始化时对ServletConfig对象和ServletContext对象进行说明。

1、destroy

在这里destroy方法不做任何其他的工作。

public String getInitParameter(String name);

3、getInitParameterNames

这是一个简便的途径,它将会调用ServletConfig对象的同名的方法。

public ServletConfig getServletConfig();

5、getServletContext

这是一个简便的途径,它将会调用ServletConfig对象的同名的方法。

public String getServletInfo();

7、init

public void init(ServletConfig config) throws ServletException;

init()方法是用来让你对GenericServlet类进行扩充的,使用这个方法时,你不需要存储config对象,也不需要调用super.init(config)。

8、log

public void log(String msg, Throwable cause);

9、service

response) throws ServletException, IOException;



定义

这个类定义了一个用来读取客户端的请求信息的输入流。这是一个Servlet引擎提供的抽象类。一个Servlet通过使用ServletRequest接口获得了对一个ServletInputStream对象的说明。

方法

public int readLine(byte[] b, int off, int len) throws IOException;



定义

这是一个由Servlet引擎使用的抽象类。Servlet通过使用ServletResponse接口的使用获得了对一个这种类型的对象的说明。利用这个输出流可以将数据返回到客户端。

在这个接口中,当一个刷新或关闭的方法被调用时。所有数据缓冲区的信息将会被发送到客户端,也就是说响应被提交了。请注意,关闭这种类型的对象时不一定要关闭隐含的socket流。

1、print

public void print(boolean b) throws IOException;

public void print(int i) throws IOException;

public void print(float f) throws IOException;

输出变量到输出流中

public void println() throws IOException;

public void println(boolean b) throws IOException;

public void println(int i) throws IOException;

public void println(float f) throws IOException;

输出变量到输出流中,并增加一个回车换行符

[b]ServletException
[/b]

public class ServletException extends Exception

构造函数

public ServletException(String message);

public ServletException(Throwable cause);

方法

public Throwable getRootCause();







定义

不论一个Servlet是永久地还是临时地无效,都会抛出这个异常。Servlet会记录这个异常以及Servlet引擎所要采取的相应措施。

永久的无效是指除非管理员采取措施,这个Servlet将不能处理客户端的请求。例如,这个Servlet配置信息丢失或Servlet的状态被破坏。

构造函数

public UnavailableException(int seconds, Servlet servlet,

构造一个包含指定的描述信息的新的异常。如果这个构造函数有一个关于秒数的参数,这将给出Servlet发生临时无效后,能够重新处理请求的估计时间。如果不包含这个参数,这意味着这个Servlet永久无效。

1、getServlet

返回报告无效的Servlet。这被Servlet引擎用来识别受到影响的Servlet。

public int getUnavailableSeconds();

3、isPermanent

如果这个Servlet永久无效,返回布尔值true,指示必须采取一些管理行动以使得这个Servlet可用。

软件包:javax.servlet.http

所包含的类:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils。





定义\

用来处理一个对Servlet的HTTP格式的请求信息。

1、getAuthType

返回这个请求的身份验证模式。

public Cookie[] getCookies();

3、getDateHeader

返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。

4、getHeader

返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)

5、getHeaderNames

该方法返回一个String对象的列表,该列表反映请求的所有头域名。

6、getIntHeader

返回指定的请求头域的值,这个值被转换成一个整数。

7、getMethod

返回这个请求使用的HTTP方法(例如:GET、POST、PUT)

public String getPathInfo();

9、getPathTranslated

这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。

public String getQueryString();

11、getRemoteUser

返回作了请求的用户名,这个信息用来作HTTP用户论证。

12、getRequestedSessionId

返回这个请求相应的session id。如果由于某种原因客户端提供的session id是无效的,这个session id将与在当前session中的session id不同,与此同时,将建立一个新的session。

13、getRequestURI

从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过 /catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径 和路径信息。

14、getServletPath

这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。

15、getSession

public HttpSession getSession(boolean create);

为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。

16、isRequestedSessionIdValid

这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。

public boolean isRequestedSessionIdFromCookie();

18、isRequestedSessionIdFromURL

如果这个请求的session id是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。



public boolean isRequestedSessionIdFromUrl();



定义\

public interface HttpServletResponse extends ServletResponse

成员变量

public static final int SC_SWITCHING_PROTOCOLS = 101;

public static final int SC_CREATED = 201;

public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;

public static final int SC_RESET_CONTENT = 205;

public static final int SC_MULTIPLE_CHOICES = 300;

public static final int SC_MOVED_TEMPORARILY = 302;

public static final int SC_NOT_MODIFIED = 304;

public static final int SC_BAD_REQUEST = 400;

public static final int SC_PAYMENT_REQUIRED = 402;

public static final int SC_NOT_FOUND = 404;

public static final int SC_NOT_ACCEPTABLE = 406;

public static final int SC_REQUEST_TIMEOUT = 408;

public static final int SC_GONE = 410;

public static final int SC_PRECONDITION_FAILED = 412;

public static final int SC_REQUEST_URI_TOO_LONG = 414;

public static final int SC_INTERNAL_SERVER_ERROR = 500;

public static final int SC_BAD_GATEWAY = 502;

public static final int SC_GATEWAY_TIMEOUT = 504;

以上HTTP产状态码是由HTTP/1.1定义的。

1、addCookie

在响应中增加一个指定的cookie。可多次调用该方法以定义多个cookie。为了设置适当的头域,该方法应该在响应被提交之前调用。

public boolean containsHeader(String name);

3、encodeRedirectURL

对sendRedirect方法使用的指定URL进行编码。如果不需要编码,就直接返回这个URL。之所以提供这个附加的编码方法,是因为在 redirect的情况下,决定是否对URL进行编码的规则和一般情况有所不同。所给的URL必须是一个绝对URL。相对URL不能被接收,会抛出一个 IllegalArgumentException。

4、encodeURL

对包含session ID的URL进行编码。如果不需要编码,就直接返回这个URL。Servlet引擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL,例如,在响应对应的请求中包含一个有效的session,但是这个session不能被非URL的(例如cookie)的手段来维
持。

5、sendError

public void sendError(int statusCode, String message) throws

用给定的状态码发给客户端一个错误响应。如果提供了一个message参数,这将作为响应体的一部分被发出,否则,服务器会返回错误代码所对应的标准信息。

6、sendRedirect

使用给定的路径,给客户端发出一个临时转向的响应(SC_MOVED_TEMPORARILY)。给定的路径必须是绝对URL。相对URL将不能被接收,会抛出一个IllegalArgumentException。

7、setDateHeader

用一个给定的名称和日期值设置响应头,这里的日期值应该是反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。如果响应头已经被设置,新的值将覆盖当前的值。

public void setHeader(String name, String value);

9、setIntHeader

用一个给定的名称和整形值设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。

public void setStatus(int statusCode);

以下的几个方法将被取消\

public String encodeRedirectUrl(String url);

12、encodeUrl

该方法被encodeURL取代。

public void setStatus(int statusCode, String message);



定义\

这个接口被Servlet引擎用来实现在HTTP客户端和HTTP会话两者的关联。这种关联可能在多外连接和请求中持续一段给定的时间。session用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。

方法

public long getCreationTime();

2、getId

返回分配给这个session的标识符。一个HTTP session的标识符是一个由服务器来建立和维持的唯一的字符串。

public long getLastAccessedTime();

4、getMaxInactiveInterval

返加一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。在这个时间之后,Servlet引擎可能被Servlet引擎终止。如果这个session不会被终止,这个方法返回-1。

5、getValue

返回一个以给定的名字绑定到session上的对象。如果不存在这样的绑定,返回空值。

6、getValueNames

以一个数组返回绑定到session上的所有数据的名称。

7、invalidate

这个方法会终止这个session。所有绑定在这个session上的数据都会被清除。并通过HttpSessionBindingListener接口的valueUnbound方法发出通告。

public boolean isNew();

当session无效后再调用这个方法会抛出一个IllegalStateException。

public void putValue(String name, Object value);

当session无效后再调用这个方法会抛出一个IllegalStateException。

public void removeValue(String name);

当session无效后再调用这个方法会抛出一个IllegalStateException。

public int setMaxInactiveInterval(int interval);

以下这个方法将被取消\

public HttpSessionContext getSessionContext();





[b]HttpSessionBindingListener
接口[/b]

public interface HttpSessionBindingListener

方法

public void valueBound(HttpSessionBindingEvent event);

2、valueUnbound

当一个对象被从session中取消绑定,调用此方法。HttpSession.removeValue方法被调用时,Servlet引擎应该调用此方法。

[b]HttpSessionContext
接口[/b]

此接口将被取消\

这个对象是与一组HTTP session关联的单一的实体。

方法

public HttpSession getSession(String sessionId);

2、getIds

当初用来返回这个环境下所有session id的列表。现在返回空的列表。

[b]Cookie
[/b]

public class Cookie implements Cloneable
RFC
2109。

public Cookie(String name, String value);

以字符$开头的name被RFC 2109保留。

方法

public String getComment();

2、getDomain

返回这个cookie可以出现的区域,如果未定义区域,返回空值。

public int getMaxAge();

4、getName

该方法返回cookie名。

public String getPath();

6、getSecure

如果这个cookie只通过安全通道传输返回真,否则返回假。

public String getValue();

8、getVersion

返回cookie的版本。版本1由RFC
2109解释。版本0由Netscape
Communications Corporation的说明解释。新构造的cookie默认使用版本0。

public void setComment(String purpose);

10、setDomain

这个方法设置cookie的有效域的属性。这个属性指定了cookie可以出现的区域。一个有效域以一个点开头(.foo.com),这意味着在指定的域名解析系统的区域中(可能是www.foo.com但不是a.b.foo.com)的主机可以看到这个cookie。默认情况是,cookie只能返回保 存它的主机。

public void setMaxAge(int expiry);

12、setPath

这个方法设置cookie的路径属性。客户端只能向以这个给定的路径String开头的路径返回cookie。

public void setSecure(boolean flag);

14、setValue

设置这个cookie的值,对于二进制数据采用BASE64编码。

15、setVersion

设置cookie的版本号

[b]HttpServlet
\[b][/b]

public class HttpServlet extends GenericServlet implements

这是一个抽象类,用来简化HTTP Servlet写作的过程。它是GenericServlet类的扩充,提供了一个处理HTTP协议的框架。

方法

protected void doDelete(HttpServletRequest request,

IOException;

这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理DELETE请求时,你必须重载这一方法。

protected void doGet(HttpServletRequest request,

IOException;

GET操作应该是安全而且没有负面影响的。这个操作也应该可以安全地重复。

3、doHead

HttpServletResponse response) throws ServletException,

被这个类的service方法调用,用来处理一个HTTP HEAD操作。默认的情况是,这个操作会按照一个无条件的GET方法来执行,该操作不向客户端返回任何数据,而仅仅是返回包含内容长度的头信息。

这个方法的默认执行结果是自动处理HTTP HEAD操作,这个方法不需要被一个子类执行。

protected void doOptions(HttpServletRequest request,

IOException;

Allow: GET,HEAD,TRACE,OPTIONS

5、doPost

HttpServletResponse response) throws ServletException,

被这个类的service方法调用,用来处理一个HTTP POST操作。这个操作包含请求体的数据,Servlet应该按照他行事。

这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理POST操作时,你必须在HttpServlet的子类中重载这一方法。

protected void doPut(HttpServletRequest request,

IOException;

这个操作可能有负面影响。例如更新存储的数据或在线购物。

7、doTrace

HttpServletResponse response) throws ServletException,

被这个类的service方法调用,用来处理一个HTTP TRACE操作。这个操作的默认执行结果是产生一个响应,这个响应包含一个反映trace请求中发送的所有头域的信息。

8、getLastModified

返回这个请求实体的最后修改时间。为了支持GET操作,你必须重载这一方法,以精确地反映最后修改的时间。这将有助于浏览器和代理服务器减少装载服务器和网络资源,从而更加有效地工作。返回的数值是自1970-1-1日(GMT)以来的毫秒数。

9、service

HttpServletResponse response) throws ServletException,

public void service(ServletRequest request, ServletResponse response)

这是一个Servlet的HTTP-specific方案,它分配请求到这个类的支持这个请求的其他方法。



定义\

这个事件是在监听到HttpSession发生绑定和取消绑定的情况时连通HttpSessionBindingListener的。这可能是一个session被终止或被认定无效的结果。

构造函数

通过引起这个事件的Session和发生绑定或取消绑定的对象名构造一个新的HttpSessionBindingEvent。

1、getName

返回发生绑定和取消绑定的对象的名字。

public HttpSession getSession();



定义\

收集HTTP Servlet使用的静态的有效的方法。

1、getRequestURL

request);

这个方法返回一个StringBuffer而不是一个String,这样URL可以被Servlet开发者有效地修改。

public static Hashtable parsePostData(int len,

解析一个包含MIME类型application/x-www-form-urlencoded的数据的流,并创建一个具有关键值-数据对的 hash table。这里的关键值是字符串,数据是该字符串所对应的值的列表。一个关键值可以在POST的数据中出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到hash
table中的字符串所对应的值的列表中。

当POST数据无效时,该方法抛出一个IllegalArgumentException。

public static Hashtable parseQueryString(String s);

从查询字符串读出的数据将经过URL解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。



bytecode

cookie

HTTP

输入流对象

映射

输出流对象

request dispatcher object

sandboxed servlet

servlet

servlet configuration object

servlet context object

servlet引擎

servlet请求对象

servlet response object

servlet runner

会话跟踪

SSL

URI

URL

0
1
分享到:
评论

相关推荐

    Struts2.2.1帮助文档

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,...

    JessMA Java Web 应用开发框架 (v3.2.2-20130815).pdf

    Dao Bean / Spring Bean装配、国际化、文件上传下载和缓存等基础Web应用组件,提供高度灵活的纯 Jsp/Servlet API 编程模型,完美整合 Spring,支持Action Convention“零配置”,能快速开发传统风格和RESTful风格的...

    深入JSP网络编程(PDG).rar

    软件介绍 讲述了怎样利用J...第三部分是继承者,包括指南、Java基础、JSP基本语法、servlet及其API、内部对象、JSP container、JsP核心API。第四部分是集成者.包括JDBC、JavaBeans、Applet、XML。第五部分是综合应用。

    《JSP简明教程》课件

    作为一种基于文本的、以显示为中心的开发技术,JSP以Java Servlet为基础,提供了Java Servlet的所有优点,并且当与一个JavaBeans类结合在一起时,提供了一种使内容和显示逻辑分开的简单方式。分开内容和显示逻辑使得...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.6.1 实现与ServletAPI的交互 86.2 域模型DomainModel 86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare ...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 3/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 5/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    JDBC 3.0数据库开发与设计

    第3章 JDBC3.0 API数据库开发基本操作 3.1 数据库用例说明 3.2 与数据库建立连接 3.2.1 JDBC URL 3.2.2 连接事件(Connection Event) 3.2.3 连接事件监听器(Connection EventListener) 3.3 获取数据库信息 ...

    WebSphere快速入门

    5.4 JSP API 42 第六章 WebSphere应用服务器 43 6.1 基本特性 43 6.2 安装与配置 44 6.3 定制配置 48 6.4 部署Servlet 49 6.5 连接管理器 50 6.6 用户简要表 52 6.7会话跟踪 53 6.8 安全性 54 第七章 WebSphere应用...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JSP设计第二版 - 内附源码(PDF中文版)

    Hans Bergsten是Gefion Software的创始人,该公司致力于在J2EE技术的基础之上开发Java服务及产品。从servlet和JSP规范形成的时候开始,Hans始终是工作组中的积极参与者。他还为其他相关的JCP规范(诸如JSP Standard ...

    计算机科学系毕业设计论文范文

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。...

    JSP高级编程

    本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...

    wfinal-utilities:基于jfinal框架的项目基础包,目的是为了更加简化Jfinal开发流程

    wfinal-utilities 是基于jfinal极速开发框架的一个扩展,集成了jfinal相关依赖、druid连接池、wincn-commons工具类集合、servlet-api及jstl,所以引用此扩展后不需要在额外引入上述依赖。本扩展会同步保持jfinal最新...

    千方百计笔试题大全

    174、JAVA SERVLET API中forward() 与redirect()的区别? 42 178、如何现实servlet的单线程模式 42 179、页面间对象传递的方法 42 180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话...

    java面试宝典

    174、JAVA SERVLET API中forward() 与redirect()的区别? 42 178、如何现实servlet的单线程模式 42 179、页面间对象传递的方法 42 180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话...

Global site tag (gtag.js) - Google Analytics