JSP的客户端请求
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/client-request.html:
当浏览器请求一个网页时,它向Web服务器发送大量的信息,信息不能直接阅读,因为这些信息作为HTTP请求标题的一部分行进。
以下是来自浏览器端的重要的标题,在网络编程中将会频繁的使用:
| 标题 | 描述 |
|---|---|
| Accept | 该标题指定了浏览器或其他客户可以处理的MIME类型。image/png或image/jpeg的值是两种最常见的可能性。 |
| Accept-Charset | 该标题指定了浏览器可以用来显示信息的字符集。例如iso-8859-1。 |
| Accept-Encoding | 这个标题指定了浏览器知道如何处理的编码类型。gzip或compressare的值是两种最常见的可能性。 |
| Accept-Language | 这个标题指定客户的首选语言,以防Servlet可以产生多个语言的结果。例如英语,美语,俄语等。 |
| Authorization | 这个标题是客户访问密码保护的Web页面时用来识别他们自己的。 |
| Connection | 这个标题表明客户端是否能处理持续的HTTP连接。持续连接允许客户端或其他浏览器用单个请求检索多个文件。Keep-Alive的值意味着应该使用持续连接 |
| Content-Length | 该标题只适用于POST请求和以字节形式给出POST数据的大小。 |
| Cookie | 这个标题为之前发送它们到浏览器的服务器返回Cookies。 |
| Host | 这个标题指定主机和端口正如原始URL给出的一样。 |
| If-Modified-Since | 这个标题表明,客户只想得到在指定日期后更改的页面。服务器发送一个代码,304意味着没有修改标题如果没有更新的结果是可用的。 |
| If-Unmodified-Since | 这个标题的作用与if-modified–since是相反的;它指定当且仅当文档比指定的日期要早时,操作应该成功。 |
| Referer | 这个标题表示了引用的Web页面的URL。例如,如果在Web页面1,点击一个链接到Web页面2,当浏览器请求Web页面2时,Web页面1的URL是包含在引用标题中的。 |
| User-Agent | 这个标题标识浏览器或其他做出请求的客户,对应不同类型的浏览器可以返回不同的内容。 |
一、HttpServletRequest对象
该请求对象是javax.servlet.http. HttpServletRequest对象的一个实例。每次客户端请求一个页面时,JSP引擎就会创建一个新的对象来表示这个请求。
请求对象提供方法来获取HTTP标题信息,包括表单数据,Cookies,HTTP方法等。
有以下重要的方法可用于读取JSP程序中的HTTP标题。有了HttpServletRequest对象,这些方法都可用的,该对象代表客户端对网络服务器的请求。
| 方法 | 描述 |
|---|---|
|
Cookie[] getCookies() |
返回一个数组,其中包含客户端用这个请求发送的所有Cookie对象。 |
|
Enumeration getAttributeNames() |
返回一个枚举包含此请求可用的属性的名称。 |
|
Enumeration getHeaderNames() |
返回一个这个请求包含的所有标题名称的枚举。 |
|
Enumeration getParameterNames() |
返回一个字符串对象的枚举,该字符串对象包括包含在此请求中的参数的名称。 |
|
HttpSession getSession() |
返回与此请求相关的当前会话,或者如果该请求没有会话,那么就创建一个。 |
|
HttpSession getSession(boolean create) |
返回与这个请求相关的当前的HttpSession或,如果没有当前会话并且create为真,那么返回一个新的会话。 |
|
Locale getLocale() |
返回客户会接受内容的首选区域设置,基于所包含的accept–language标题 |
|
Object getAttribute(String name) |
作为一个对象返回指定属性的值,如果指定的名称没有属性,返回null。 |
|
ServletInputStream getInputStream() |
使用ServletInputStream将请求的主体作为二进制数据检索。 |
|
String getAuthType() |
返回用于保护Servlet的验证方案的名称,例如,“BASIC”或“SSL”,如果JSP没有被保护,那么返回null |
|
String getCharacterEncoding() |
返回在该请求内部使用的字符编码的名称。 |
|
String getContentType() |
返回该请求主体的MIME类型,如果不知道类型,返回null。 |
|
String getContextPath() |
返回表示请求上下文的请求URI的一部分。 |
|
String getHeader(String name) |
将指定的请求标题的值作为一个字符串返回。 |
|
String getMethod() |
返回生成该请求的HTTP方法的名称,比如GET,POST,或PUT。 |
|
String getParameter(String name) |
将一个请求参数的值作为字符串返回,如果参数不存在,返回null。 |
|
String getPathInfo() |
返回与客户端生成请求时发送的URL相关联的任何额外的路径信息。 |
|
String getProtocol() |
返回请求协议的名称和版本。 |
|
String getQueryString() |
返回在路径后包含在请求URL的查询字符串。 |
|
String getRemoteAddr() |
返回发送请求的客户端的互联网协议(IP)地址。 |
|
String getRemoteHost() |
返回发送请求的客户机的全称。 |
|
String getRemoteUser() |
如果用户已经通过身份验证,就返回发出这一请求的登录用户,如果用户没有被验证,那么返回null。 |
|
String getRequestURI() |
从取决于HTTP请求首行的查询字符串的协议名称中返回请求URL的一部分。 |
|
String getRequestedSessionId() |
返回客户端指定的会话ID。 |
|
String getServletPath() |
返回调用JSP的请求URL的部分。 |
|
String[] getParameterValues(String name) |
返回一个字符串对象数组,其中包含所有的给定的请求参数的值,如果参数不存在,那么返回null。 |
|
boolean isSecure() |
返回一个布尔值表示是否使用一个安全通道发出了这个请求,比如HTTPS。 |
|
int getContentLength() |
以字节为单位,返回请求的主体长度并通过输入流使其可用,如果长度是未知的,那么返回-1。 |
|
int getIntHeader(String name) |
作为int返回指定请求标题的值。 |
|
int getServerPort() |
返回收到这个请求的端口号。 |
二、HTTP标题请求实例
下面是使用HttpServletRequest的getHeaderNames()方法读取HTTP标题信息的实例。该方法返回一个枚举,包含与当前HTTP请求相关的标题信息。
一旦得到一个枚举,可以以标准的方式循环枚举,使用hasMoreElements()方法来确定何时停止,使用nextElement()方法得到每个参数的名字。
<%@ page import="java.io.*,java.util.*" %>
<html>
<head>
<title>HTTP Header Request Example</title>
</head>
<body>
<center>
<h2>HTTP Header Request Example</h2>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>Header Name</th><th>Header Value(s)</th>
</tr>
<%
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>
</center>
</body>
</html>
现在把上述代码添加到main.jsp中并试图访问它。这将产生的如下所示的结果:

测试工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test4
JSP的客户端请求的更多相关文章
- JSP 客户端请求
当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的.您可以查阅HTTP协议来获得更多的信息. 下表列出了浏览器端信息头的一些重要内 ...
- JSP基础知识➣客户端请求与服务端响应(三)
JSP客户端请求 浏览器请求服务器端,信息头的一些重要内容,在以后的网络编程中将会经常见到这些信息: Accept:指定浏览器或其他客户端可以处理的MIME类型.它的值通常为 image/png 或 ...
- JSP-Runood:JSP 客户端请求
ylbtech-JSP-Runood:JSP 客户端请求 1.返回顶部 1. JSP 客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息 ...
- 客户端请求、服务器响应及其HTTP状态码
一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...
- Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码
一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...
- http客户端请求及服务端详解
http客户端请求及服务端详解 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...
- #1126-JSP客户端请求
JSP 客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的.您可以查阅HTTP协议来获得更多的信息. 下表列出了浏览器 ...
- Java Web学习(六)HttpServletRequest(客户端请求)
一.定义 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有 ...
- SpringMVC处理客户端请求的过程
SpringMVC处理客户端请求的过程 以程序部署在Tomcat上为例,网站程序使用SpringMVC框架开发. 1.客户端发起一个访问网站的请求(如: localhost:8080/index). ...
随机推荐
- 461在全志r16平台tinav3.0系统下使用地磁计QMC5883L
461在全志r16平台tinav3.0系统下使用地磁计QMC5883L 2018/9/7 14:08 版本:V1.0 开发板:SC3817R SDK:tina v3.0 (基本确认全志tina v3. ...
- 认识MySQL Replication
MySQL Replication 是 MySQL 非常有特色的一个功能,他能够将一个 MySQL Server 的 Instance 中的数据完整的复制到另外一个 MySQL Server 的 In ...
- 洛谷——P2680 运输计划
https://www.luogu.org/problem/show?pid=2680 题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每 ...
- iOS 对overflow:scroll使用
让子标签的高度在初始化的时候就比父标签大,可以设置height: 101%:这样就出发了内置的scrollview的滚动. -webkit-overflow-scrolling:touch;可以让滚动 ...
- [eclipse]的快捷键的设置
今天新解压了一个eclipse,发现alt+/提示的快捷键不好用了,开始比较犯懒,但是发现开发效率低下,总结几个eclipse下快捷方式的解决办法. 第一个解决没有一点提示的情况. 1.首先通过菜单打 ...
- Java并发——volatile关键字的使用
volatile关键字的使用volatile关键字原理适合使用volatile关键字的情况当且仅当满足以下所有条件时,才==应该==使用volatile关键字:volatile关键字的作用volati ...
- tensorboard及summary data
(新手上路,如果有不对的地方,望指正.另外有没有小伙伴一起学习交流啊?) tensorboard为tensorflow提供了可视化,它的重要性不言而喻. tensorboard是通过读取eve ...
- 使用Latex插入数学公式(二)
初级运算 关系运算符 希腊字母 集合运算符逻辑运算符 空格问题 矩阵格式 矩阵格式有三种: 无括号的矩阵 matrix 是 Latex 的矩阵命令,矩阵命令中每一行以 \\ 结束,矩阵的元素之间用 & ...
- 由于未清除缓存引发的bug
在写页面的时候,首先引入了本地react.js和react-dom.js 16版本(cjs)的文件,出现如下错误 发现bug后,将本地的react.js和react-dom.js文件改成16.2(um ...
- PDO 错误处理模式
异常模式: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 这个模式需要配合 try 使用 :一旦出错,就会: 1. ...