一、Servelet介绍

一、概述

Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。

Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。其结构如下图所示:

 

Servlet主要完成以下几个方面的工作:

1、读取从客户端发送来的数据

2、读取浏览器请求的数据

3、生成结果

4、发送数据给客户端

5、发送http响应数据

 

二、HttpServlet类

HttpServlet类是一个抽象类,扩展了GenericServlet类。HttpServlet类用于创建一个适用于Web站点并支持HTTP协议的Servlet。一个HttpServlet的子类必须至少重载以下方法中的一个。
doGet()方法,适用于HTTP GET请求。
doPost()方法,适用于HTTP POST请求。
doPut()方法,适用于HTTP PUT请求。
doDelete()方法,适用于HTTP DELETE请求。
init()和destroy()方法,管理Servlet生命周期中的资源。
getServletInfo()方法,提供Servlet本身的信息。

 

doGet()方法概述:protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)来允许一个servlet处理一个GET请求。覆写该方法来支持一个GET请求也自动地支持一个HTTP HEAD请求。一个HEAD请求是一个GET请求,在响应中只返回请求头区域,没有返回BODY区域。当覆写这个方法的时候,读取请求数据,写入响应头,获得响应的writer或输出流对象,最后,写入响应数据。最好包含content type和编码(encoding)。当使用一个PrintWriter对象去返回响应,需要在访问PrinterWriter对象之前设置content type。servlet容器必须在提交响应前写入头信息,因为在HTTP协议下,必须在传送BODY之前传送头信息。在可能的情况下,设置头信息的Content-Length(使用ServletResponse.setContentLength(int)方法)以允许servlet容器使用一个持久性连接向客户端返回响应,从而改善性能。如果整个响应适合放入响应缓冲区,那么Content-Length会被自动设定。GET方法是比较安全的,如果客户端的请求需要改变存储的数据,应该使用其它HTTP方法。
The GET method should also be idempotent, meaning that it can be safely repeated. Sometimes making a method safe also makes it idempotent. For example, repeating queries is both safe and idempotent, but buying a product online or modifying data is neither safe nor idempotent. (暂时不能翻译)
如果请求的格式错误,doGet会返回一个HTTP的“Bad Request”信息。

 

doHead()方法概述:protected void doHead(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
从一个protected service()方法返回一个HTTP HEAD请求,并处理该请求。当客户端只需要知道响应头,比如Content-Type或者Content-Length,客户端只需要发送一个HEAD请求。HTTP HEAD准确地计算输出的字节数来设定Content-Length。
如果你覆写该方法,可以避免计算响应的BODY,而只需设置响应头以改善性能。

 

doPost()方法概述:protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一个POST请求。HTTP POST方法允许客户在同一时间内向服务器发送无长度限制的数据,而且好像信用卡号等都是允许的。当覆写该方法时,读取请求数据,写入响应头,获得响应的writer或输出流对象,最后,写入响应数据。最好包含content type和编码(encoding)。当使用一个PrintWriter对象去返回响应,需要在访问PrinterWriter对象之前设置content type。当使用HTTP 1.1进行编码时(这意味着响应带有一个Transfer-Encoding 头),不要设置Content-Length 头。

 

doPut()方法概述:protected void doPut(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一个PUT请求。PUT操作允许客户好像使用FTP一样把文件放置到服务器。

 

doDelete()方法概述:protected void doDelete(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一DELETE请求。DELETE操作允许客户从服务器中删除一个文档或网页。

 

doOptions()方法概述:protected void doOptions(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一OPTIONS请求。OPTIONS操作决定服务器支持哪种HTTP方法,并返回一个适当的头信息。举例:如果一个servlet覆写了doGet()方法,doOptions()方法将会返回如下头信息:Allow: GET, HEAD, TRACE, OPTIONS

 

doTrace()方法概述:protected void doTrace(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
由服务器调用(通过service()方法)以允许一个servlet去处理一TRACE请求。该方法用于程序调试,无需被覆写。


protected service()方法概述:protected void service(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
从public service()方法接收标准的HTTP请求,并把它们分派给doXXX成员方法。该方法无需被覆写。

 

public service()方法概述:分派客户的请求到protected service()方法,该方法无需被覆写。

 

 

参考:

http://www.cnblogs.com/johnny/articles/19688.aspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值