- 浏览: 230404 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (165)
- Java基础 (49)
- 开发工具 (3)
- Python基础 (1)
- Oracle基础 (9)
- Java 符号计算 (0)
- 计算机基本原理 (10)
- SQL (6)
- javascript (16)
- HTML (2)
- XML (4)
- 程序员之路 (7)
- JDBC (1)
- Unicode (0)
- 字符编码 (3)
- JSP基础 (2)
- Servlet&JSP (9)
- MySQL基础 (1)
- UML基础 (1)
- Hibernate (2)
- Java包 (1)
- Spring (1)
- Struts2 (9)
- 系统命令 (1)
- Tomcat (1)
- Windows (1)
- Android (1)
- C#基础 (14)
- HTML5 (1)
- .NET基础 (1)
- 数据库基础 (2)
- ASP.NET基础 (7)
- 开源Java (3)
- 趣味算法 (1)
- 面向对象思想 (1)
- 软件应用 (1)
- Web工程 (1)
- jquery (2)
- JPA (0)
- 设计模式 (0)
最新评论
-
静夜独窗:
JavaBean组件能说的具体一点吗,我感觉这样说理解的不清晰 ...
EL 表达式语言 -
静夜独窗:
在Java中,不同字符集编码的转换是通过Unicode作为中介 ...
JavaWeb中的乱码产生与解决方案
Servlet接口
定义
public interface Servlet
要实现一个Servlet必须实现该类.
该接口定义了Servlet
方法:
1.init
public void init(ServletConfig config) throws ServletException;
在Servlet实例化之后,Servlet容器调用init()方法,来初始化对象,主要为了让Servlet对象在处理客户请求前可以完成一些初始化的工作.
容器调用init()时,把ServletConfig对象作为参数传递给Servlet对象.容器使用该对象向Servlet传递信息.
Servlet使用ServletConfig对象从Web应用程序的配置信息中获取”名-值”对形式的初始化参数.另外Servlet中,还可以通过ServletConfig对象获取配置Servlet运行环境的ServletContext对象,使用ServletContext对象.Servlet对象可以和Servlet容器进行通信.
如果 init 方法抛出一个 ServletException,Servlet无法工作.
如果 init方法在超时,则假定Servlet是不具备功能的. Servlet无法工作.
2.service
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException;
容器调用service()来处理客户端的请求.注意,在service()方法被容器调用之前,必须确保init()方法正确完成.容器会构造一个表示客户端请求对象(ServletRequest)和一个用于对客户端进行响应的响应对象(ServletResponse)作为参数传递给service()方法.
service()方法在Servlet未成功初始化之前无法调用.在一个Servlet对象被卸载后,直到一个新的Servelt被初始化之前,Servlet容器不再调用这个方法.
3.destroy
public void destroy();
当容器检测到一个Servlet对象应该从服务中被移除的时候,容器调用该对象的destroy()方法.以便让Servlet容器释放资源.
容器调用destroy ()方法之前,若还有其他线程正在service()方法中执行,容器会等待这些线程执行完毕,或等待服务器设定的超时值到达,一旦destroy()方法被调用,容器则不再把其他请求发送给该Servlet对象. destroy()调用之后,容器会释放Servlet对象,随后,该Servlet被Java的垃圾收集器所回收.
若该Servlet需再次为客户端服务,容器将会重新产生一个Servlet对象.
4.getServletConfig
public ServletConfig getServletConfig();
返回 ServletConfig 对象.返回的ServletConfig对象是容器调用init()时传递给Servlet对象的.ServletConfig对象包含了Servlet的初始化参数.
5.getServletInfo
public String getServletInfo();
返回String,其中包含了关于Servlet的信息,如作者,版本和版权.
ServletRequest接口
定义
public interface ServletRequest
ServletRequest对象由容器创建,通过ServletRequest可以获得客户端请求的数据.
方法:
1.getAttribute
public Object getAttribute(String name);
返回请求中以为name为名字的属性的值,如果该属性不存在,就返回一个null.
2.getAttributeNames
public Enumeration getAttributeNames();
返回请求中的所有属性的名字.若请求中没有属性.则返回一个空的枚举集合.
3.setAttribute
public void setAttribute(String name, Object object);
这个方法在请求中添加一个属性,这个属性可以被其他可以访问这个请求对象的对象
(例如一个嵌套的 Servlet)使用.
4.removeAttribute
public void setAttribute(String name);
移除请求中名字为name的属性.
5.getCharacterEncoding
public String getCharacterEncoding();
返回请求正文的字符编码的名字,如果没有指定字符编码,则返回null.
6.setCharacterEncoding
public void setCharacterEncoding(String env) throws java.io.UnsupportedEncodingExption
覆盖在请求正文中所使用的字符编码的名字.
7.getContentLength
public int getContentLength();
以字节为单位,返回请求正文的长度,如果长度未知,该方法将返回-1.
8.getContentType
public String getContentType();
返回请求正文的MIME类型,如果类型未知,返回null.
9.getInputStream
public ServletInputStream getInputStream() throws IOException;
返回一个输入流,使用该输入流以二进制方式读取请求正文的内容.
javax.servlet.ServletInputStream是一个抽象类,继承自java.io.InputStream.
如果在此之前已经通过getReader方法获得了要读取的结果,这个方法会抛出一个 IllegalStateException.
10.getParameter
public String getParameter(String name);
返回请求中name参数的值,如果这个参数不存在返回null.
如果name参数有多个值,那么该方法将返回值列表中的第一个值.
11.getParameterValues
public String[] getParameterValues(String name);
返回请求中name参数的所有值.如果name参数不存在,该方法返回null.
12.getParameterNames
public Enumeration getParameterNames();
返回请求中包含的所有的参数的名字.如果请求中没有输入参数,该方法返回空的枚举集合.
13.getProtocol
public String getProtocol();
返回请求所用的协议名和版本.其形式为:协议/主版本号.次版本号.例如HTTP/1.0.
14.getReader
public BufferedReader getReader() throws IOException;
返回BufferedReader对象,以字符数据读取请求体正文.
15.getRemoteAddr
public String getRemoteAddr();
返回发送请求的客户端或最后一个代理服务器的 IP 地址.
16.getRemoteHost
public String getRemoteHost();
返回发送请求的客户端或最后一个代理服务器的完整限定名.
17.getRemotePort
public int getRemotePort ();
返回发送请求的客户端或最后一个代理服务器的IP源端口.Servlet2.4新增.
18getScheme
public String getScheme();
返回请求所使用的 URL 的模式.例如,对于一个 HTTP 请求,这个模式就是 http.
19.getServerName
public String getServerName();
返回请求发送到的服务器的主机名.
20.getServerPort
public int getServerPort();
返回请求发送到的服务器的端口号.
21.getLocalAddr
public String getLocalAddr();
返回接收到请求的网络接口的IP地址.Servlet2.4新增.
22.getLocalName
public String getLocalName ();
返回接收到请求的IP接口的主机名.Servlet2.4新增.
23.getLocalPort
public int getLocalPort();
返回接收到请求的网络接口的IP端口号.Servlet2.4新增.
24.getRequestDispatcher
public RequestDispatcher getRequestDispatcher(String path)
返回RequestDispatcher对象,作为path所定位的资源的封装.
注:以下方法将被取消
getRealPath
public String getRealPath(String path);
返回与虚拟路径相对应的真实路径,如果因为某种原因,这一过程不能进行,该方法将
返回一个null.
这个方法和 ServletContext 接口中的 getRealPath 方法重复.在 2.1 版中,ServletContext
接口将阐明一个 Servlet 所能用的所有的路径的映射.该方法执行的结果将会与
ServletContext 中 getRealPath 方法的结果完全一样.
ServletResponse接口
定义
public interface ServletResponse
定义一个 Servlet 引擎产生的对象,通过这个对象,Servlet 对客户端的请求作出响应.
这个响应应该是一个 MIME 实体,可能是一个 HTML 页.图象数据或其他 MIME 的 格式 .
方法:
1.flushBuffer
public void flushBuffer() throws java.io.IOException
强制把任何在缓存中的内容发送到客户段.
2.getBufferSize
public int getBufferSize()
返回实际用于响应的缓存的大小.如果没有使用缓存,这个方法将返回0.
3.setBufferSize
public void getBufferSize(int size)
设置响应正文的缓存大小.Servlet容器将使用一个缓存,其大小至少是请求的尺寸大小.这个方法必须在响应正文被写入之前调用,如果内容已经被写入或响应对象已经被提交,这个方法将抛出IllegalStateException异常.
4.getCharacterEncoding
public String getCharacterEncoding()
返回响应中发送的正文所用的字符编码(MIME字符集)
5.setCharacterEncoding
public void setCharacterEncoding(String charset)
设置发送到客户算响应的字符编码,例如UTF-8
6.getOutputStream
public ServletOutputStream getOutputStream() throws IOException
返回ServletOutputStream对象.用于在响应中写入二进制数据.
ServletOutputStream是一个抽象类,继承自java.io.OutputStream.
7.getWriter
public PrintWriter getWriter throws IOException
返回 PringWriter 对象.用于发送字符文本到客户端.
PringWriter对象使用getCharacterEncoding()方法返回的字符编码.如果没有指定响应的字符编码方式,默认使用ISO-8859-1.
8.setContentLength
public void setContentLength(int length)
设置响应内容正文的长度,这个方法会设置HTTP Content-Length字体报头.
9.getContentType
public void getContentType ()
返回在响应中发送的正文所使用的MIME类型.
10.setContentType
public void setContentType(String type)
设定要发送到客户端的响应内容的类型.此时响应应该还没有提交.给出的内容类型可以包含字符编码说明,例如:text/html;charset=UTF-8.如果这个方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置.这个方法如果在getWriter()方法被调用之后或者在响应被提交之后调用,将不会设置响应的字符编码.在使用HTTP协议的情况下,这个方法设置Content_Type实体报头.
11.isCommitted
public boolean isCommitted()
返回一个布尔值,只是都否已经提交了响应.
12.reset
public void reset()
清除在缓存中的任何数据,包括状态代码和消息报头.如果响应已经被提交,这个方法将抛出IllegalStateException异常.
13.resetBuffer
public void resetBuffer()
清除在缓存中的响应内容,包括状态代码和消息报头.如果响应已经被提交,这个方法将抛出IllegalStateException异常.
ServletConfig 接口
定义
public interface ServletConfig
Servlet容器使用ServletConfig对象在Servlet初始化期间向它传递配置信息.一个Servlet只有一个ServletConfig对象.
方法:
1.getInitParameter
public String getInitParameter(String name);
返回名为name的初始化参数的值.如果这个参数不存在,返回null.
初始化参数在web.xml中配置.
2.getInitParameterNames
public Enumeration getInitParameterNames();
返回Servlet所有初始化参数的名字的枚举集合.如果Servlet没有初始化参数,这个方法将返回一个空的枚举集合.
3.getServletContext
public ServletContext getServletContext();
返回Servlet的上下文对象ServletContext 的引用.
4.getServletName
public ServletContext getServletName();
返回Servlet实例的名字.这个名字是在web应用程序的部署描述符中指定的.如果是一个没有注册的Servlet实例,该方法返回Servlet的类名.
ServletContext 接口
ServletContext对象表示了一个Web应用程序的上下文.每一个Web应用程序都有一个与之相关的ServletContext对象.
定义
public interface ServletContext
定义了一个 Servlet上下文对象,通过该对象,容器向Servlet 提供环境信息.ServletContext是Web服务器中的一个已知路径的根.
Servlet容器在Servlet初始化期间,向其传递ServletConfig对象,可以通过ServletConfig对象的getServletContext()方法得到ServletContext对象.也可以通过GenericServlet对象的getServletContext()方法得到ServletContext对象.不过GenericServlet的getServletContext()也是通过ServletConfig()的getServletContext()得到的.
一个 Servlet 的环境对象必须至少与它所在的主机是一一对应的.在一个处理多个虚拟主机的 Servlet 引擎中(例如,使用了 HTTP1.1 的主机 头域),每一个虚拟主机必须被视为一个单独的环境.此外,Servlet 容器还可以创建一组对应的Servlet 的环境对象.
方法:
1.getAttribute
public Object getAttribute(String name);
2.getAttributeNames
public Enumeration getAttributeNames();
3.setAttribute
public void setAttribute(String name, Object o);
4.removeAttribute
public void removeAttribute(String name);
以上四个方法用于读取,移除和设置共享属性,任何一个Servlet都可以设置某个属性,而同一个Web应用程序的另一个Servlet可以读取这个属性,不管这些Servlet是否为同一个客户进行服务.
5.getContext
public ServletContext getContext(String uriPath);
返回服务器上与指定的URL相对应的ServletContext对象.给出uriPath参数必须以斜杠 / 开始,被解释为相对与服务器文档根的路径.为了安全,如果该方法访问一个受限制的ServletContext,则返回null.
6. getContextPath
public String getContextPath();
用于返回Web应用程序的上下文路径.上下文路径总是以斜杠 / 开头,结束没有斜杠.
在默认(根)上下文中,该方法返回空字符串””.
该方法是在Servlet2.5规范中新增的.
7.getMajorVersion
public int getMajorVersion();
返回 Servlet容器支持的 Servlet API 的主版本号.例如对于 2.4 版,这个方法会返回2.
8.getMinorVersion
public int getMinorVersion();
返回 Servlet 容器支持的 Servlet API 的次版本号.例如对于 2.4 版,这个方法会返回4.
9.getMimeType
public String getMimeType(String file);
返回指定文件的MIME 类型,如果这种 MIME 类型未知,则返回null.
MIME 类型由Servlet 引擎的配置决定.也可以在Web应用程序的部署描述符中指定.
10.getRealPath
public String getRealPath(String path);
在一个Web应用程序中,资源用相对于上下文路径的路径来引用,这个方法可以返回资源在服务器文件系统上的真实路径(文件的绝对路径).返回的真实路径的格式应该适合于运行这个Servlet容器的计算机和操作系统(包括正确的路径分隔符).如果Servlet容器不能够将虚拟路径转换为真实路径,这个方法返回null.
11.getResource
public URL getResource(String uripath);
该方法返回被映射到指定路径上的资源的URL.传入的参数path必须以斜杠 / 开始,被解释为相对于当前上下文根的路径.这个方法允许Servlet容器从任何来源为Servlet生成一个可用的资源.资源可以是在本地或远程文件系统上,在数据库中,或者在WAR文件中.如果没有资源映射到指定的路径上,该方法将返回null.
12.getResourcePaths
public java.util.Set getResourcePaths(String uripath);
该方法返回资源的路径列表,参数path必须以斜杠 / 开始,指定用于匹配资源的部分资源路径.例如,一个Web应用程序包含了下列资源:
/webcome.html
/catalog/index.html
/catalog/products.html
/catalog/offers/books.htnl
/catalog/offers/music.html
/customer/login.jsp
/WEB_INF/web.xml
/WEB_INF/classes/com.acme.OrderServlet.class
如果调用getResourcePaths(“/”),将返回[/webcome.html, /catalog/,/customer/,/WEB_INF/].
如果调用getResourcePaths(“/catalog/”),将返回[/catalog/index.html,/catalog/products.html,/catalog/offers/].
13.getResourceAsStream
public InputStream getResourceAsStream(String uripath);
该方法与getResource()方法类似,不同之处在于,该方法返回资源的输入流对象.另外,使用getResourceAsStream()方法,元信息(如内容长度和内容类型)将丢失,而使用getResource()方法,元信息是可用的.
14.getRequestDispatcher
public RequestDispatcher getRequestDispatcher(String path);
该方法返回一个RequestDispatcher对象,作为指定路径上的资源封装.可以使用RequestDispatcher对象将一个请求转发(forword)给其他资源进行处理,或者在响应中包含(include)资源.要注意的是,传入的参数path必须以斜杠 / 开始,被解释为相对于当前上下文根(context root)的路径.
15.getNamedDispatcher
public RequestDispatcher getNamedDispatcher(String name);
该方法与getRequestDispatcher类似,不同之处在于,该方法接收一个在部署描述符中以<servlet-name>元素给出的Servlet(或JSP页面)的名字作为参数.
16.getServerInfo
public String getServerInfo();
返回一个运行Servlet的名称和版本.
17.getServletContextName
public String getServletContextName();
该方法返回在部署描述符中使用<display-name>元素指定的对应于当前ServletContext的Web应用程序的名称.
18.log
public void log(String msg);
记录日志文件.用于记录一般方法.
public void log(String msg, Throwable t);
记录日志文件.用于记录指定异常的站跟踪信息.
public void log(Exception exception, String msg); // 这种用法将被取消
说明:被写入的 log 文件由 Servlet 引擎指定.
RequestDispatcher接口
定义
public interface RequestDispatcher
RequestDispatcher对象由Servlet容器创建,用于封装一个路径所标识的服务器资源.
RequestDispatcher对象可以把客户端的请求转发给服务器的可用资源(如Servlet,CGI,HTML ,JSP).
方法:
1.forward
public void forward(ServletRequest request, ServletReponse response) throws ServletException, IOException;
方法用于将请求从一个Servlet传递给服务器的其他资源.
当一个 Servlet 对响应作了初步的处理,并要求其它的对象对此作出响应时,可以使用这个方法.
当 request 对象被传递到目标对象时,请求的URL 路径和其他路径参数会改为目标资源的URL 路径.
注意:如果已经通过响应返回了ServletOutputStream对象或 PrintWriter 对象,该方法将不能使用.否则,抛出IllegalStateException.
2.include
public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;
该方法用于在响应中包含其他资源的内容.
SingleThreadModel接口
定义
public interface SingleThreadModel;
这是一个空接口,它指定了系统如何处理对同一个 Servlet 的调用.如果一个 Servlet 被这个接口指定,那么在这个 Servlet 中的 service 方法中将不会有两个线程被同时执行.
Servlet 可以通过维持一个各自独立的 Servlet 实例池,或者通过只让 Servlet 的 service中只有一个线程的方法来实现这个保证.
GenericServlet 类
public abstract class GenericServlet implements Servlet,ServletConfig, Serializable;
抽象类.它给出了除service()方法外的其他4个方法的简单实现. GenericServlet类定义了一个通用的.不依赖于具体协议的Servlet,它实现了Servlet接口和ServletConfig接口.
方法
1.init
public void init(ServletConfig config) throws ServletException;
public void init() throws ServletException;
第一个init方法是Servlet接口中的init的实现.在该方法中,首先将ServletConfig对象保存在一个transient实例变量中,然后调用第二个不带参数的init()方法.
通常在编写继承自GenericServlet的Servlet类时,只需要重写第二个不带参数的init()方法即可.如果要覆盖第一个init()方法,那么应该在子类的init方法中包含一句super.init(config).
2.getInitParameter
public String getInitParameter(String name);
调用该方法实际上就是调用 ServletConfig 对象的同名的方法.
3.getInitParameterNames
public Enumeration getInitParameterNames();
调用该方法实际上就是调用 ServletConfig 对象的同名的方法.
4.getServletContext
public ServletContext getServletContext();
调用该方法实际上就是调用 ServletConfig 对象的同名的方法.
5.getServletConfig
public ServletConfig getServletConfig();
返回由该类init方法参数传入的ServletConfig对象的引用.
6.getServletInfo
public String getServletInfo();
返回一个反映 Servlet 版本的String.
7. log
public void log(String msg);
public void log(String msg, Throwable cause);
通过 Servlet content 对象将 Servlet 的类名和给定的信息写入 log 文件中.
8.destroy
public void destroy();
在这里 destroy 方法不做任何其他的工作.
9. service
public abstract void service(ServletRequest request, ServletResponse response) throws ServletException, IOException;
该方法为一个抽象方法,当扩展该类时,执行网络请求,需要调用该方法,所以必须实现该方法.
HttpServlet 类
定义
public class HttpServlet extends GenericServlet implements Serializable
继承自GenericServlet类,用于创建适合Web站点的HTTP Servlet.
虽然该类为抽象类,但是该类中所以方法均已实现.只是在该类中对客户端请求进行处理的方法没有真正实现.
该类的service()方法支持(例如GET,POST)标准的HTTP方法,通过分配到适当的方法(如doGet.doPost)来实现.
方法
1.doDelete
protected void doDelete(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
被这个类的 service 方法调用,用来处理一个 HTTP DELETE 操作.这个操作允许客户
端请求从服务器上删除 URL.这一操作可能有负面影响,对此用户就负起责任.
这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误.当你要处理 DELETE
请求时,你必须重载这一方法.
2.doGet
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
被这个类的 service 方法调用,用来处理一个 HTTP GET 操作.这个操作允许客户端简
单地从一个 HTTP 服务器“获得”资源.对这个方法的重载将自动地支持 HEAD 方法.
GET 操作应该是安全而且没有负面影响的.这个操作也应该可以安全地重复.
这一方法的默认执行结果是返回一个 HTTP BAD_REQUEST 错误.
3.doHead
protected void doHead(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
被这个类的 service 方法调用,用来处理一个 HTTP HEAD 操作.默认的情况是,这个
操作会按照一个无条件的 GET 方法来执行,该操作不向客户端返回任何数据,而仅仅是返
回包含内容长度的头信息.
与 GET 操作一样,这个操作应该是安全而且没有负面影响的.这个操作也应该可以安
全地重复.
这个方法的默认执行结果是自动处理 HTTP HEAD 操作,这个方法不需要被一个子类执
行.
4.doOptions
protected void doOptions(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
被这个类的 service 方法调用,用来处理一个 HTTP OPTION 操作.这个操作自动地决
定支持哪一种 HTTP 方法.例如,一个 Servlet 写了一个 HttpServlet 的子类并重载了 doGet
方法,doOption 会返回下面的头:
Allow: GET,HEAD,TRACE,OPTIONS
你一般不需要重载这个方法.
5.doPost
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
被这个类的 service 方法调用,用来处理一个 HTTP POST 操作.这个操作包含请求体的
数据,Servlet 应该按照他行事.
这个操作可能有负面影响.例如更新存储的数据或在线购物.
这一方法的默认执行结果是返回一个 HTTP BAD_REQUEST 错误.当你要处理 POST
操作时,你必须在 HttpServlet 的子类中重载这一方法.
6.doPut
protected void doPut(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
被这个类的 service 方法调用,用来处理一个 HTTP PUT 操作.这个操作类似于通过 FTP发送文件.
这个操作可能有负面影响.例如更新存储的数据或在线购物.
这一方法的默认执行结果是返回一个 HTTP BAD_REQUEST 错误.当你要处理 PUT 操
作时,你必须在 HttpServlet 的子类中重载这一方法.
7.doTrace
protected void doTrace(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
被这个类的 service 方法调用,用来处理一个 HTTP TRACE 操作.这个操作的默认执行
结果是产生一个响应,这个响应包含一个反映 trace 请求中发送的所有头域的信息.
当你开发 Servlet 时,在多数情况下你需要重载这个方法.
8.getLastModified
protected long getLastModified(HttpServletRequest request);
返回这个请求实体的最后修改时间.为了支持 GET 操作,你必须重载这一方法,以精
确地反映最后修改的时间.这将有助于浏览器和代理服务器减少装载服务器和网络资源,从
而更加有效地工作.返回的数值是自 1970-1-1 日(GMT)以来的毫秒数.
默认的执行结果是返回一个负数,这标志着最后修改时间未知,它也不能被一个有条件的
GET 操作使用.
9.service
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException;
protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
第一个方法是GenericServlet类中service()方法的实现.在该方法中,首先将request, response对象转换为HttpServletRequest, HttpServletResponse类型,然后调用第二个service方法,对客户端进行处理.
HttpServletRequest接口
定义
public interface HttpServletRequest extends ServletRequest;
继承自ServletRequest,用来处理一个对 Servlet 的 HTTP 格式的请求信息.
方法
1.getAuthType
public String getAuthType();
返回这个请求的身份验证模式.
2.getCookies
public Cookie[] getCookies();
返回一个数组,该数组包含这个请求中当前的所有 cookie.如果这个请求中没有 cookie,则返回空数组.
3.getDateHeader
public long getDateHeader(String name);
返回指定的请求头域的值,这个值被转换成一个反映自 1970-1-1 日(GMT)以来的精确到毫秒的长整数.
如果头域不能转换,抛出一个 IllegalArgumentException.如果这个请求头域不存在,这个方法返回-1.
4.getHeader
public String getHeader(String name);
返回名字为name的请求报头值,若请求中没有包含指定名字的报头,则方法返回null.
5.getHeaderNames
public Enumeration getHeaderNames();
返回此次请求包含的所有报头名字的枚举集合.
6.getIntHeader
public int getIntHeader(String name);
返回指定的请求头域的值,这个值被转换成一个整数.
如果头域不能转换,抛出一个 IllegalArgumentException.如果这个请求头域不存在,该方法返回-1.
7.getMethod
public String getMethod();
返回这个请求使用的 HTTP 方法(例如:GET.POST.PUT)
8.getPathInfo
public String getPathInfo();
这个方法返回在这个请求的 URL 的 Servlet 路径之后的请求 URL 的额外的路径信息.
如果这个请求 URL 包括一个查询字符串,在返回值内将不包括这个 查询字符串.这个路径
在返回之前必须经过 URL 解码.如果在这个请求的 URL 的 Servlet 路径之后没有路径信息.
这个方法返回null.
9.getPathTranslated
public String getPathTranslated();
这个方法获得这个请求的 URL 的 Servlet 路径之后的额外的路径信息,并将它转换成一
个真实的路径.在进行转换前,这个请求的 URL 必须经过 URL 解码.如果在这个 URL 的
Servlet 路径之后没有附加路径信息.这个方法返回null.
10.getQueryString
public String getQueryString();
返回这个请求 URL 所包含的查询字符串.一个查询字串符在一个 URL 中由一个“?”
引出.如果没有查询字符串,这个方法返回null.
11.getRemoteUser
public String getRemoteUser()
返回作了请求的用户名,这个信息用来作 HTTP 用户论证.
如果在请求中没有用户名信息,这个方法返回null.
12.getRequestedSessionId
public String getRequestedSessionId();
返回这个请求相应的 session id.如果由于某种原因客户端提供的 session id 是无效的,
这个 session id 将与在当前 session 中的 session id 不同,与此同时,将建立一个新的 session.
如果这个请求没与一个 session 关联,这个方法返回null.
13.getRequestURI
public String getRequestURI();
从HTTP请求的第一行返回请求的 URL 中定义被请求的资源的部分.如果有一个查询
字符串存在,这个查询字符串将不包括在返回值当中. 例如, 一个请求通过/catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books.这个方法的返回值包括了Servlet 路径和路径信息.
如果这个 URL 路径中的的一部分经过了 URL 编码,这个方法的返回值在返回之前必须
经过解码.
14.getServletPath
public String getServletPath();
这个方法返回请求 URL 反映调用 Servlet 的部分.例如,一个 Servlet 被映射到
/catalog/summer 这个 URL 路径,而一个请求使用 了/catalog/summer/casual 这样的路径.所
谓的反映调用 Servlet 的部分就是指/catalog/summer.
如果这个 Servlet 不是通过路径匹配来调用.这个方法将返回一个null.
15.getSession
public HttpSession getSession();
若session已经存在,返回该session。若session不存在,则新建一个 session。
public HttpSession getSession(boolean create);
当参数为true时,等价于getSession()。
当参数为false时,若session已经存在,返回该session。若session不存在,返回null。
16.isRequestedSessionIdValid
public boolean isRequestedSessionIdValid();
这个方法检查与此请求关联的 session 当前是不是有效.如果当前请求中使用的 session
无效,它将不能通过 getSession 方法返回.
17.isRequestedSessionIdFromCookie
public boolean isRequestedSessionIdFromCookie();
如果这个请求的 session id 是通过客户端的一个 cookie 提供的,该方法返回真,否则返
回假.
18.isRequestedSessionIdFromURL
public boolean isRequestedSessionIdFromURL();
如果这个请求的 session id 是通过客户端的 URL 的一部分提供的,该方法返回真,否则
返回假.请注意此方法与 isRequestedSessionIdFromUrl 在 URL 的拼写上不同.
以下方法将被取消.
19.isRequestedSessionIdFromUrl
public boolean isRequestedSessionIdFromUrl();
该方法被 isRequestedSessionIdFromURL 代替.
HttpServletRespons接口
定义
public interface HttpServletResponse extends ServletResponse
描述一个返回到客户端的 HTTP 回应.这个接口允许 Servlet 程序员利用 HTTP 协议规定的头信息.
成员变量
public static final int SC_CONTINUE = 100;
public static final int SC_SWITCHING_PROTOCOLS = 101;
public static final int SC_OK = 200;
public static final int SC_CREATED = 201;
public static final int SC_ACCEPTED = 202;
public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
public static final int SC_NO_CONTENT = 204;
public static final int SC_RESET_CONTENT = 205;
public static final int SC_PARTIAL_CONTENT = 206;
public static final int SC_MULTIPLE_CHOICES = 300;
public static final int SC_MOVED_PERMANENTLY = 301;
public static final int SC_MOVED_TEMPORARILY = 302;
public static final int SC_SEE_OTHER = 303;
public static final int SC_NOT_MODIFIED = 304;
public static final int SC_USE_PROXY = 305;
public static final int SC_BAD_REQUEST = 400;
public static final int SC_UNAUTHORIZED = 401;
public static final int SC_PAYMENT_REQUIRED = 402;
public static final int SC_FORBIDDEN = 403;
public static final int SC_NOT_FOUND = 404;
public static final int SC_METHOD_NOT_ALLOWED = 405;
public static final int SC_NOT_ACCEPTABLE = 406;
public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
public static final int SC_REQUEST_TIMEOUT = 408;
public static final int SC_CONFLICT = 409;
public static final int SC_GONE = 410;
public static final int SC_LENGTH_REQUIRED = 411;
public static final int SC_PRECONDITION_FAILED = 412;
public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
public static final int SC_REQUEST_URI_TOO_LONG = 414;
public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
public static final int SC_INTERNAL_SERVER_ERROR = 500;
public static final int SC_NOT_IMPLEMENTED = 501;
public static final int SC_BAD_GATEWAY = 502;
public static final int SC_SERVICE_UNAVAILABLE = 503;
public static final int SC_GATEWAY_TIMEOUT = 504;
public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
以上 HTTP 产状态码是由 HTTP/1.1 定义的.
方法
1.addCookie
public void addCookie(Cookie cookie);
在响应中增加一个cookie.可多次调用该方法以定义多个cookie.该方法应该在响应被提交之前调用.
2.addHeader
public void addHeader(String name,String value)
用给出的name和value,增加一个响应报头到响应中去.
3.containsHeader
public boolean containsHeader(String name);
检查是否设置了指定的响应头.
4.encodeRedirectURL
public String encodeRedirectURL(String url);
对 sendRedirect 方法使用的指定 URL进行编码.如果不需要编码,就直接返回这个 URL.
之所以提供这个附加的编码方法,是因为在 redirect 的情况下,决定是否对 URL 进行编码
的规则和一般情况有所不同.所给的 URL 必须是一个绝对 URL.相对 URL 不能被接收,
会抛出一个 IllegalArgumentException.
所有提供给 sendRedirect 方法的 URL 都应通过这个方法运行,这样才能确保会话跟踪
能够在所有浏览器中正常运行.
5.encodeURL
public String encodeURL(String url);
对包含 session ID 的 URL 进行编码.如果不需要编码,就直接返回这个 URL.Servlet
引擎必须提供 URL 编码方法,因为在有些情况下,我 们将不得不重写 URL,例如,在响
应对应的请求中包含一个有效的 session,但是这个 session 不能被非 URL 的(例如 cookie)
的手段来维 持.
所有提供给 Servlet 的 URL 都应通过这个方法运行,这样才能确保会话跟踪能够在所有
浏览器中正常运行.
6.sendError
public void sendError(int statusCode) throws IOException;
public void sendError(int statusCode, String message) throws IOException;
用给定的状态码发给客户端一个错误响应.如果提供了一个 message 参数,这将作为响
应体的一部分被发出,否则,服务器会返回错误代码所对应的标准信息.
调用这个方法后,响应立即被提交.在调用这个方法后,Servlet 不会再有更多的输出.
7.sendRedirect
public void sendRedirect(String location) throws IOException;
使用给定的路径,给客户端发出一个临时转向的响应(SC_MOVED_TEMPORARILY).
给 定 的 路 径 必 须 是 绝 对 URL . 相 对 URL 将 不 能 被 接 收 , 会 抛 出 一 个
IllegalArgumentException.
这个方法必须在响应被提交之前调用.调用这个方法后,响应立即被提交.在调用这个
方法后,Servlet 不会再有更多的输出.
8.setDateHeader
public void setDateHeader(String name, long date);
用一个给定的名称和日期值设置响应头,这里的日期值应该是反映自 1970-1-1 日
(GMT)以来的精确到毫秒的长整数.如果响应头已经被设置,新的值将覆盖当前的值.
9.setHeader
public void setHeader(String name, String value);
用一个给定的名称和域设置响应头.如果响应头已经被设置,新的值将覆盖当前的值.
10.setIntHeader
public void setIntHeader(String name, int value);
用一个给定的名称和整形值设置响应头.如果响应头已经被设置,新的值将覆盖当前的
值.
11.setStatus
public void setStatus(int statusCode);
这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值.
以下的几个方法将被取消:
12.encodeRedirectUrl
public String encodeRedirectUrl(String url);
该方法被 encodeRedirectURL 取代.
14.encodeUrl
public String encodeUrl(String url);
该方法被 encodeURL 取代.
15.setStatus
public void setStatus(int statusCode, String message);
这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值.如果
提供了一个 message,它也将会被作为响应体的一部分被发送.
HttpSession接口
定义
public interface HttpSession
这个接口被 Servlet 引擎用来实现在 HTTP 客户端和 HTTP 会话两者的关联.这种关联可能在多外连接和请求中持续一段给定的时间.session 用来在无状态的 HTTP 协议下越过多个请求页面来维持状态和识别用户.
一个 session 可以通过 cookie 或重写 URL 来维持.
方法
1.getAttribute
public Object getAttribute(String name);
2.getAttributeNames
public Enumeration getAttributeNames();
3.setAttribute
public void setAttribute(String name, Object o);
4.removeAttribute
public void removeAttribute(String name);
以上四个方法用于在HttpSession对象中读取,移除和设置属性,利用这些方法,可以在Session中维持客户的状态信息.
5.getCreationTime
public long getCreationTime();
返回建立 session 的时间,该时间是从 1970年1月1日00:00:00(GMT)以来的毫秒数.
6.getId
public String getId();
返回分配给这个session的唯一标识符. 该标识符由Servlet容器分配的,与具体的实现有关.
7.getLastAccessedTime
public long getLastAccessedTime();
返回客户端最后一次发出与这个 session 有关的请求的时间,如果这个session是新建立
的,返回-1. 该时间是从 1970年1月1日00:00:00(GMT)以来的毫秒数.
8.getMaxInactiveInterval
public int getMaxInactiveInterval();
返回以毫秒为单位的时间. 这个时间表示客户端在不发出请求时,session 被Servlet容器维持的最长时间.超过这个时间间隔,Servlet容器将使Session失效. 在这个时间之后,Servlet 引擎可能被 Servlet 引擎终止.如果这个 session 不会被终
当 session 无效后再调用这个方法会抛出一个 IllegalStateException.
9.invalidate
public void invalidate();
该方法用于会话失效.所有绑定在该session上的数据都会被清除.
清除时通过HttpSessionBindingListener接口的valueUnbound 方法发出通告.
10.isNew
public boolean isNew();
返回一个布尔值以判断该session 是不是新的.如果客户端还不知道这个Session或者客户端没有选择加入Session,那么该方法返回true.例,服务器使用基于Cookie的Session,而客户端禁用了Cookie,那么对每个请求,Session都是新的.
当 session 无效后再调用这个方法会抛出一个 IllegalStateException.
11.setMaxInactiveInterval
public int setMaxInactiveInterval(int interval);
设置一个秒数,这个秒数表示客户端在不发出请求时,session 被 Servlet 引擎维持的最长时间.
以下这个方法将被取消
12.getSessionContext
public HttpSessionContext getSessionContext();
返回 session 在其中得以保持的环境变量.这个方法和其他所有 HttpSessionContext 的方
法一样被取消了.
发表评论
-
JSTL核心库常用标签
2013-07-13 15:57 1135JSP标准标签库 —— JSTL JSTL标签库一部分是 ... -
Servlet3新特性学习笔记——异步处理支持
2013-06-13 16:20 13421、传统Servlet处理 Web容器会为每个请求分配一 ... -
Servlet3新特性学习笔记——注解开发
2013-06-09 14:18 10900、 <web-app>的metada ... -
Servlet3新特性学习笔记——使用MyEclipse创建Servlet
2013-06-09 12:14 6828Servlet3从JavaEE6开始支持。 使用M ... -
HTTP会话:cookie
2012-09-02 16:06 2499Cookie是Web服务器保存在用户硬盘上的一段文本,Web服 ... -
学习Servlet
2012-07-25 00:11 1043Servlet:Server let Servlet ... -
Filter过滤器
2012-05-10 17:05 1006过滤器Filter 过滤器,即在源数据和目的数据之间 ... -
Servlet监听器
2012-05-10 16:12 1111Servlet API中定义了8个监听器接口,可以用于 ...
相关推荐
一些常用的 servlet api ,本版本是Word版,不过好用
这份文档描述了 Java Servlet API的最新版本 2.1 版。所以,这本书对于 Servlet 的开 发者及 servlet 引擎的开发者同样适用。 Java Servlet API 的组成 Java Servlet API 由两个软件包组成:一个是对应 HTTP的...
servlet apiservlet apiservlet apiservlet api
Servlet API 中文版 Servlet API 中文版 Servlet API 中文版 Servlet API 中文版
servlet api 官方HTML文档 servlet学习文档
servletAPI2.1中文版.chm servletAPI2.1中文版.txt
Servlet API 中文版.doc Servlet API 中文版.doc
servlet api文档 servlet api说明文档servlet api说明文档
Servlet API官方原版,英文原版,绝对可用。
JSP servlet api 中文 Chm
Java Servlet API 2.5.zip
-------解压即可使用----- Servlet API(中文版) Servlet API(中文版)
Struts2访问ServletAPI
J2EE Servlet API 中文文档,是Java WEB、Servlet JSP开发必备工具文档
Servlet API 文档 中文版,这是目前最好的一个中文版本。
Servlet API 帮助文档,提供了Request,Response
中文版本ServletAPI CHM版本。下载后打开空白。右键->属性 解除锁定 即可使用
Java Servlet Api文档,希望能给大家的学习工作带来帮助!
Servlet API 帮助文档 中文版,CHM格式的,可查询