• HttpServletRequest接口

定义

public interface HttpServletRequest extends 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);

返回一个请求头域的值。 (注意:与上一个方法不同的是,该方法返回一个字符串)如果这个请求头域不存在,这个方法返回-1。

5、getHeaderNames

public Enumeration getHeaderNames();

该方法返回一个 String 对象的列表,该列表反映请求的所有头域名。有的引擎可能不允许通过这种方法访问头域, 在这种情况下, 这个方法返回一个空的列表。

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 路径之后没有路径信息 。这个方法返回空值。

9、getPathTranslated

public String getPathTranslated();

这个方法获得这个请求的 URL 的 Servlet 路径之后的额外的路径信息, 并将它转换成一个真实的路径。在进行转换前,这个请求的 URL 必须经过 URL 解码。如果在这个 URL 的Servlet 路径之后没有附加路径信息。这个方法返回空值。

10、getQueryString

public String getQueryString();

返回这个请求 URL 所包含的查询字符串。一个查询字串符在一个 URL 中由一个“?”引出。如果没有查询字符串,这个方法返回空值。

11、getRemoteUser

public String getRemoteUser

返回作了请求的用户名,这个信息用来作 HTTP 用户论证。如果在请求中没有用户名信息,这个方法返回空值。

12、getRequestedSessionId

public String getRequestedSessionId();

返回这个请求相应的 session id。如果由于某种原因客户端提供的 session id 是无效的,这个 session id 将与在当前 session 中的 session id 不同,与此同时,将建立一个新的 session 。如果这个请求没与一个 session 关联,这个方法返回空值。

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 不是通过路径匹配来调用。这个方法将返回一个空值。

15、getSession

public HttpSession getSession();

public HttpSession getSession(boolean create);

返回与这个请求关联的当前的有效的 session。如果调用这个方法时没带参数,那么在没有 session 与这个请求关联的情况下,将会新建一个 session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session 才会被建立。为了确保 session 能够被完全维持。Servlet 开发者必须在响应被提交之前调用该方法。如果带入的参数为假,而且没有 session 与这个请求关联。这个方法会返回空值。

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 代替。



  • HttpServletResponse 类

定义

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(Cookiecookie);

在响应中增加一个指定的 cookie。可多次调用该方法以定义多个 cookie。为了设置适当的头域,该方法应该在响应被提交之前调用。

2、containsHeader

public boolean containsHeader(String name);

检查是否设置了指定的响应头。

3、encodeRedirectURL

public String encodeRedirectURL(String url);

对sendRedirect方法使用的指定URL进行编码。 如果不需要编码, 就直接返回这个URL 。之所以提供这个附加的编码方法,是因为在 redirect 的情况下,决定是否对 URL 进行编码的规则和一般情况有所不同。所给的 URL 必须是一个绝对 URL。相对 URL 不能被接收,会抛出一个 IllegalArgumentException。所有提供给 sendRedirect 方法的 URL 都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。

4、encodeURL

public String encodeURL(String url);

对包含 session ID 的 URL 进行编码。如果不需要编码,就直接返回这个 URL。Servlet引擎必须提供 URL 编码方法,因为在有些情况下,我 们将不得不重写 URL,例如,在响应对应的请求中包含一个有效的 session,但是这个 session 不能被非 URL 的(例如 cookie )的手段来维 持。所有提供给 Servlet 的 URL 都应通过这个方法运行, 这样才能确保会话跟踪能够在所有

浏览器中正常运行。

5、sendError

public void sendError(int statusCode) throws IOException;

public void sendError(int statusCode, String message) throws

IOException;

用给定的状态码发给客户端一个错误响应。如果提供了一个 message 参数,这将作为响应体的一部分被发出,否则,服务器会返回错误代码所对应的标准信息。调用这个方法后,响应立即被提交。在调用这个方法后,Servlet 不会再有更多的输出 。

6、sendRedirect

public void sendRedirect(String location) throws IOException;

使用给定的路径,给客户端发出一个临时转向的响应(SC_MOVED_TEMPORARILY )。给 定 的 路 径 必 须 是 绝 对 URL 。 相 对 URL 将 不 能 被 接 收 , 会 抛 出 一 个IllegalArgumentException。这个方法必须在响应被提交之前调用。调用这个方法后,响应立即被提交。在调用这个方法后,Servlet 不会再有更多的输出。



这个方法很有必要说一下,注意了这里接口里面说明的是:一定要是绝对路径。

但是在实际开发中,我们既可以写相对路径,也可以写绝对路径,这是为什么呢?

打开tomcat里面response的源码一看就明白了:

public void sendRedirect(String location)
throws IOException { if (isCommitted())
throw new IllegalStateException
(sm.getString("coyoteResponse.sendRedirect.ise")); // Ignore any call from an included servlet
if (included)
return; // Clear any data content that has been buffered
resetBuffer(); // Generate a temporary redirect to the specified location
try {
String absolute = toAbsolute(location);
setStatus(SC_FOUND);
setHeader("Location", absolute);
} catch (IllegalArgumentException e) {
setStatus(SC_NOT_FOUND);
} // Cause the response to be finished (from the application perspective)
setSuspended(true); }
 /**
* Convert (if necessary) and return the absolute URL that represents the
* resource referenced by this possibly relative URL. If this URL is
* already absolute, return it unchanged.
*
* @param location URL to be (possibly) converted and then returned
*
* @exception IllegalArgumentException if a MalformedURLException is
* thrown when converting the relative URL to an absolute one
*/
private String toAbsolute(String location) { if (location == null)
return (location); boolean leadingSlash = location.startsWith("/"); if (leadingSlash || !hasScheme(location)) { redirectURLCC.recycle(); String scheme = request.getScheme();
String name = request.getServerName();
int port = request.getServerPort(); try {
redirectURLCC.append(scheme, 0, scheme.length());
redirectURLCC.append("://", 0, 3);
redirectURLCC.append(name, 0, name.length());
if ((scheme.equals("http") && port != 80)
|| (scheme.equals("https") && port != 443)) {
redirectURLCC.append(':');
String portS = port + "";
redirectURLCC.append(portS, 0, portS.length());
}
if (!leadingSlash) {
String relativePath = request.getDecodedRequestURI();
int pos = relativePath.lastIndexOf('/');
relativePath = relativePath.substring(0, pos); String encodedURI = null;
final String frelativePath = relativePath;
if (SecurityUtil.isPackageProtectionEnabled() ){
try{
encodedURI = (String)AccessController.doPrivileged(
new PrivilegedExceptionAction(){
public Object run() throws IOException{
return urlEncoder.encodeURL(frelativePath);
}
});
} catch (PrivilegedActionException pae){
IllegalArgumentException iae =
new IllegalArgumentException(location);
iae.initCause(pae.getException());
throw iae;
}
} else {
encodedURI = urlEncoder.encodeURL(relativePath);
}
redirectURLCC.append(encodedURI, 0, encodedURI.length());
redirectURLCC.append('/');
}
redirectURLCC.append(location, 0, location.length());
} catch (IOException e) {
IllegalArgumentException iae =
new IllegalArgumentException(location);
iae.initCause(e);
throw iae;
} return redirectURLCC.toString(); } else { return (location); } }

7、setDateHeader

public void setDateHeader(String name, long date);

用一个给定的名称和日期值设置响应头,这里的日期值应该是反映自 1970-1-1 日(GMT)以来的精确到毫秒的长整数。如果响应头已经被设置,新的值将覆盖当前的值。

8、setHeader

public void setHeader(String name, String value);

用一个给定的名称和域设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。

9、setIntHeader

public void setIntHeader(String name, int value);

用一个给定的名称和整形值设置响应头。 如果响应头已经被设置, 新的值将覆盖当前的值。

10、setStatus

public void setStatus(int statusCode);

这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值。以下的几个方法将被取消\

11、encodeRedirectUrl

public String encodeRedirectUrl(String url);

该方法被 encodeRedirectURL取代。

12、encodeUrl

public String encodeUrl(String url);

该方法被 encodeURL 取代。

13、setStatus

public void setStatus(int statusCode, String message);

这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值。如果提供了一个 message,它也将会被作为响应体的一部分被发送。

Servlet--HttpServletRequest接口,HttpServletResponse接口的更多相关文章

  1. Servlet,HttpServletRequest 和 HttpServletResponse

    今天是周六,老子加班,还可吧, 哈哈哈哈哈哈哈哈哈哈哈哈哈 此次更新的内容是HttpServletRequest 和 HttpServletResponse 昨天复习了一部分内容,今天又把剩下的看完. ...

  2. java HttpServletRequest和HttpServletResponse詳解

    這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 java HttpServletRequest和HttpS ...

  3. HttpServletRequest和HttpServletResponse详解

    请求与响应相关的类和接口非常多,下表是主要的与请求和接口相关的类以及接口. 主要的与请求和接口相关的类及接口 方    法 说    明 ServletInputStream Servlet的输入流 ...

  4. HttpServletRequest与HttpServletResponse

    一. 简介:每当客户端给Web服务器发送一个http请求,web服务器就会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和respons ...

  5. HttpServletRequest 和 HttpServletResponse详解

    用HttpServletRequest,现在整理如下,以便以后查阅 请求与响应相关的类和接口非常多,下表是主要的与请求和接口相关的类以及接口. 主要的与请求和接口相关的类及接口 方    法 说    ...

  6. Servlet(6)—HttpServletRequest接口和HttpServletResponse接口

    HttpServletRequest接口和HttpServletResponse接口是继承ServletRequest和ServletResponse接口,是他们的子接口,但是我们在程序中进程看到Se ...

  7. HttpServletRequest 接口、HttpServletResponse 接口、请求转发与重定向

    上篇文章我们讲了servlet的基本原理,这章将讲一下剩余的部分. HttpServletRequest 接口 该接口是 ServletRequest 接口的子接口,封装了 HTTP 请求的相关信息, ...

  8. HttpServletRequest HttpServletResponse接口详解

    HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据.同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求 ...

  9. HttpServletResponse接口

    public interface HttpServletResponse extends ServletResponse 描述一个返回到客户端的HTTP回应.这个接口允许Servlet程序员利用HTT ...

  10. JavaWeb知识回顾-Servlet常用类、接口及其方法

    今天主要把servlet的一些常用的类.接口和方法简单回顾一下. javax.servlet包 1.javax.servlet.Servlet接口 接口用于开发servlet,所有的servlet都要 ...

随机推荐

  1. Proof of Elapsed Time--Hyperledger Sawtooth 共识算法

    这一片文章中我们介绍一下Hyperledger Sawtooth项目中所提出的PoET共识算法, 现有的区块链共识算法大概可以分为两种: Nakamoto consensus:通过乐透的方式选择出一个 ...

  2. Markdown 常用语法

    1.标题 # 一级标题 ## 二级标题 ### 三级标题 2.字体 *斜体* **粗体** ~~删除线~~<u>下划线</u> 3.引用 > 引用文字 4.无序列表 - ...

  3. 配置不同环境下启用swagger,在生产环境关闭swagger

    前言 Swagger使用起来简单方便,几乎所有的API接口文档都采用swagger了.使用示例:http://www.cnblogs.com/woshimrf/p/swagger.html, 现在开发 ...

  4. Jerry的UI5框架代码自学教程

    SAP UI5对View元素基于jQuery的操作方式,使得其学习曲线相对Angular/React来说比较平缓,至少对于我个人而言是这样.对于已经有jQuery经验的前端开发人员来说很容易上手. 使 ...

  5. Spring框架入门之基于xml文件配置bean详解

    关于Spring中基于xml文件配置bean的详细总结(spring 4.1.0) 一.Spring中的依赖注入方式介绍 依赖注入有三种方式 属性注入 构造方法注入 工厂方法注入(很少使用,不推荐,本 ...

  6. java基础概述

    写代码: 1,明确需求. 2,分析思路. 3,确定步骤. 4,代码实现. Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用 ...

  7. MATLAB数字图像处理学习笔记

    我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 %im ...

  8. MySQL(九)之数据表的查询详解(SELECT语法)一

    这一篇是MySQL中的重点也是相对于MySQL中比较难得地方,个人觉得要好好的去归类,并多去练一下题目.MySQL的查询也是在笔试中必有的题目.希望我的这篇博客能帮助到大家! 重感冒下的我,很难受!k ...

  9. noi 2016 游记

    先挖个坑..这回大概不会太监吧(大雾 day -2 下午起飞的飞机,晚上到了成都..把东西扔到旅馆后就组队外出觅食了... 街上人不多,逛了半天才发现一家卖本地小吃的小店. KPM:诶诶给我来碗酸辣粉 ...

  10. android下载管理、理财、浏览器、商品筛选、录音源码等

    Android精选源码 android仿美拍直播的点赞动画   android视频播放器完美切换全屏.小窗口源码   android类似随手记理财类源码   android简单浏览器源码   andr ...