【原创】Servlet学习之(三)Servlet API - javax.servlet.http包

2020-05-22 18:09发布

Servlet学习之(三)Servlet API - javax.servlet.http软件包

Servlet是一个实现了Servlet接口的类,一个与访问协议和平台无关的、运行在Servlet容器中的Java程序。

针对Servlet实现技术,SUN公司提供了一套标准的Java Servlet API以便于更快速、规范地开发Servlet程序。这套Servlet API中,最重要的两个软件包是:javax.servletjavax.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访问协议的接口和类。

常用接口:

HttpServletRequestHttpServletResponseHttpSession

常用类:

CookieHttpServlet

1HttpServletRequest接口

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协议访问资源的请求方式(例如:GETPOSTPUTDELETE等)。

      

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对象才会被创建;否则,参数为假falseSession对象不会被创建,并返回空值null

 

public String getRequestedSessionId()

获取当前会话ID值,即:SessionID

     

public boolean isRequestedSessionIdValid()

检查与此请求关联的当前会话对象Session是否有效如果当前请求中使用的Session无效,将不能通过getSession()获取

 

2HttpServletResponse接口

public interface HttpServletResponse extends ServletResponse

HTTP协议的响应对象接口,是ServletResponse接口的子接口,描述Servlet容器返回给客户端的HTTP响应。

客户请求到来时,Servlet容器创建一个HttpServletRequest对象和一个HttpServletResponse对象HttpServletRequest对象封装来自客户的请求数据HttpServletResponse对象封装服务器发送给客户的响应数据,并负责响应客户请求。于是,通过ServletResponse响应&