Servlet学习之(三)Servlet API - javax.servlet.http软件包
Servlet是一个实现了Servlet接口的类,一个与访问协议和平台无关的、运行在Servlet容器中的Java程序。
针对Servlet实现技术,SUN公司提供了一套标准的Java Servlet API以便于更快速、规范地开发Servlet程序。这套Servlet API中,最重要的两个软件包是:javax.servlet、javax.servlet.http。
javax.servlet是一个与通信协议无关的通用软件包;javax.servlet.http是一个支持HTTP访问协议的软件包,这两个软件包的同时存在,使得Servlet API能支持任何协议的请求/响应。
在Servlet API中,包含着一套常用接口,负责承担指定的任务。下表中列出了常用的类和接口:
分类 | 接口(类)名 | 描述 | 所属软件包 |
Servlet实现相关接口和抽象类 | Servlet接口 | Servlet基础接口 | javax.servlet |
GenericServlet抽象类 | 实现Servlet接口的抽象类 | ||
HttpServlet抽象类 | 由GenericServlet派生的抽象子类 | javax.servlet.http | |
请求与响应相关接口 | ServletRequest接口 | 请求对象接口 | javax.servlet |
ServletResponse接口 | 响应对象接口 | ||
HttpServletReques接口 | ServletRequest派生的子接口 | javax.servlet.http | |
HttpServletResponse接口 | ServletResponse派生的子接口 | ||
Servlet配置接口 | ServletConfig接口 | Servlet配置信息接口 | javax.servlet |
Servlet上下文接口 | ServletContext接口 | Servlet上下文环境接口 | |
资源转发接口 | RequestDispatcher接口 | 在服务器内部实现资源转发接口 | |
会话接口 | HttpSession接口 | javax.servlet.http | |
Cookie接口 |
主要类结构图:
一、javax.servlet.http软件包
javax.servlet.http包中定义了支持HTTP访问协议的接口和类。
常用接口:
HttpServletRequest、HttpServletResponse、HttpSession。
常用类:
Cookie、HttpServlet。
1、HttpServletRequest接口
public interface HttpServletRequest extends ServletRequest
HTTP协议的请求对象接口,是ServletRequest的子接口。
当使用HTTP协议的客户请求到来时,Servlet容器创建一个HttpServletRequest对象,封装来自客户的HTTP请求数据。
(1)消息头相关方法
public String getHeader(String name)
根据请求报文中消息头的名称,获取消息头的值。
public Enumeration getHeaderNames()
获取请求报文消息头中所有名称列表。
public int getIntHeader(String name)
根据请求报文中消息头的名称,获取一个整数类型的消息头值。
如果获取的消息头值不能被转换为int类型的整数,则会抛出IllegalArgumentException异常;如果消息头值不存在,则返回-1。
public String getMethod()
获取客户端通过HTTP协议访问资源的请求方式(例如:GET、POST、PUT、DELETE等)。
public String getQueryString()
获取请求URL地址中包含的查询字符串,这个查询字串符在URL地址中由一个问号”?”引出;如果没有查询字符串,则返回空值null。
public String getRequestURI()
获取HTTP请求消息行中访问资源URL地址中的URI部分。如果URL地址中包含查询字符串,则这个查询字符串将不包括在返回的URI中。例如:一个请求的URL地址是:http://127.0.0.1/webApp/study/Servlet01?cname=tom,则返回的URI地址是/study/Servlet01。
public String getAuthType()
获取HTTP请求使用的证书验证模式名称。
public String getServletPath()
获取当前请求的Servlet访问路径,即:Servlet映射的url-pattern路径,一个Servlet可以有多个映射路径,获取的是正在使用的映射路径。
public String getRemoteUser()
获取发起HTTP请求的客户端用户名。
(2)会话相关方法
public Cookie[] getCookies()
获取HttpServletRequest请求对象中的所有Cookie对象,若请求中没有Cookie,则返回空数组。
public HttpSession getSession()
public HttpSession getSession(boolean isCreate)
获取与当前请求关联的有效会话对象Session。
在没有Session对象时,如果方法不带参数,将会新建一个Session对象;如果方法传入一个布尔型的参数,当参数为真true时,Session对象才会被创建;否则,参数为假false时,Session对象不会被创建,并返回空值null。
public String getRequestedSessionId()
获取当前会话ID值,即:SessionID。
public boolean isRequestedSessionIdValid()
检查与此请求关联的当前会话对象Session是否有效,如果当前请求中使用的Session无效,将不能通过getSession()获取。
2、HttpServletResponse接口
public interface HttpServletResponse extends ServletResponse
HTTP协议的响应对象接口,是ServletResponse接口的子接口,描述Servlet容器返回给客户端的HTTP响应。
当客户请求到来时,Servlet容器创建一个HttpServletRequest对象和一个HttpServletResponse对象,HttpServletRequest对象封装来自客户的请求数据,HttpServletResponse对象封装服务器发送给客户的响应数据,并负责响应客户请求。于是,通过ServletResponse响应&