- 浏览: 238247 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (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 1189JSP标准标签库 —— JSTL JSTL标签库一部分是 ... -
Servlet3新特性学习笔记——异步处理支持
2013-06-13 16:20 13771、传统Servlet处理 Web容器会为每个请求分配一 ... -
Servlet3新特性学习笔记——注解开发
2013-06-09 14:18 11290、 <web-app>的metada ... -
Servlet3新特性学习笔记——使用MyEclipse创建Servlet
2013-06-09 12:14 6866Servlet3从JavaEE6开始支持。 使用M ... -
HTTP会话:cookie
2012-09-02 16:06 2542Cookie是Web服务器保存在用户硬盘上的一段文本,Web服 ... -
学习Servlet
2012-07-25 00:11 1079Servlet:Server let Servlet ... -
Filter过滤器
2012-05-10 17:05 1046过滤器Filter 过滤器,即在源数据和目的数据之间 ... -
Servlet监听器
2012-05-10 16:12 1164Servlet API中定义了8个监听器接口,可以用于 ...
相关推荐
ServletAPI是Java Web开发中非常重要的一个部分,它提供了一系列接口和类,使得开发者能够创建动态、交互式的Web应用程序。这个"ServletAPI.rar"压缩包包含的文档可能是Servlet API的官方Javadoc,这对于理解并使用...
本文将深入解析Servlet API的主要概念、功能以及如何在实际开发中应用。 1. **Servlet的概念** Servlet是一种Java类,它扩展了服务器的功能,尤其是Web服务器。Servlet API是由Java Servlet规范定义的一组接口和类...
Java Servlet API 2.5是Java Web开发中的一个重要组成部分,它是用于构建动态Web应用程序的标准接口和类库。这个版本发布于2006年,是Servlet技术的一个关键里程碑,为开发者提供了更强大和灵活的服务器端编程能力。...
本资源为"ServletAPI 中文 chm版",提供了方便中国开发者阅读的中文文档,解决了原英文文档的语言障碍,使学习和查阅更加便捷。 CHM(Microsoft Compiled HTML Help)文件是一种包含HTML页面的压缩文件格式,通常...
这个"Servlet API官方原版"压缩包很可能包含了Servlet规范的原始文档,这些文档详细阐述了Servlet API的功能、接口和类,以及如何在实际应用中使用它们。 Servlet API是Java Servlet技术的一部分,它定义了一系列的...
这个压缩包文件包含了Servlet API的中文版文档,方便开发者理解和使用Servlet技术。 1. **Servlet概览** - Servlet是Java编程语言中的一种接口,它允许服务器动态扩展其功能,用于生成动态网页内容。 - Servlet ...
虽然它不是直接针对Servlet API,但可以通过`ActionContext`获取到`ServletActionContext`,进一步访问Servlet API。 4. **通过OGNL表达式**: 在Struts2的视图层,例如JSP中,可以使用OGNL(Object-Graph ...
Servlet API JAR是Java Web开发中的核心组件,主要用于构建动态Web应用程序。这个JAR文件包含了Servlet规范定义的所有接口和类,使得开发者能够编写服务器端的Java程序,处理来自客户端(如浏览器)的HTTP请求,并...
`servletapi_jb51.rar`这个压缩包文件显然包含了与Servlet API相关的类库,特别地,它可能是为了帮助开发者解决在项目中导入Servlet API时遇到的问题。在这个压缩包中,最有可能包含的是`javax.servlet`和`javax....
这个`.chm`文件是官方的Java Servlet API文档,通常包含了详细的接口、类、方法和异常的说明,是开发者学习和查阅Servlet API的重要参考资料。 在Java Servlet API中,最重要的几个关键概念包括: 1. **Servlet...
Servlet API中文文档是Java Web开发中的重要参考资料,它详尽地解释了Servlet技术的各种接口、类和方法,为开发者提供了全面的理解和使用指南。Servlet API是J2EE平台的一部分,主要用于构建动态Web应用程序,它是...
Servlet API 2.1是Java Web开发中的一个重要组成部分,它为服务器端的动态网页处理提供了标准接口和类库。这个版本的API详细定义了Servlet和JavaServer Pages (JSP)的交互方式,使得开发者能够创建可扩展且跨平台的...
这个压缩包包含了官方的ServletAPI文档,方便开发者在没有网络的情况下查阅和学习。以下是对ServletAPI及相关知识点的详细解释: 1. **Servlet概念**: Servlet是一种Java类,用于扩展服务器的功能。它们主要用来...
### Java Servlet API 2.1 版说明文档关键知识点总结 #### 一、Java Servlet API 概述 - **版本信息**:此文档为 Java Servlet API 的 2.1 版本,发布于 1998 年 11 月。 - **目标受众**:适用于 Servlet 开发者及 ...
下面将详细介绍Servlet API的相关知识点。 1. **Servlet概念**: Servlet是一个Java类,它扩展了服务器的功能,尤其是用于Web应用。它被部署在Web服务器或应用服务器中,接收并响应来自客户端(如浏览器)的HTTP...
这个压缩包包含Servlet API的中文版和英文版,为开发者提供了方便的学习资源。下面将详细介绍Servlet API的主要内容及其重要性。 1. **Servlet接口**:Servlet API的核心是Servlet接口,它定义了服务器端程序需要...
JSP Servlet API中文CHM文件则提供了关于这个API的中文文档,帮助开发者理解和使用Servlet技术。在Java Web应用程序中,Servlet API扮演着服务器端编程的核心角色,允许开发者创建动态网页并处理来自客户端的请求。 ...
Servlet API 是 Java Web 开发中不可或缺的一部分,它定义了服务器端程序(Servlet)与Web容器之间的交互规范。这个文档是Servlet API的中文版,对于中文使用者来说,更便于理解和学习。 1. **Servlet 接口**:...