(13)javaWeb中HttpServletRequest详解
关于HTTP请求和响应,可以参考 HTTP协议 系列文章
导学,请求概述:
a,GET和POST请求报文格式:


b,常见的请求头

在servlet中,相应的doGet方法和doSet方法中的request对象是域对象。后面会详细解释域对象。这里先看看request的常用方法。
1,设置字符编码格式
request.setCharacterEncoding("UTF-8");
2,获取请求方式
request.getMethod()
3,获取请求行中 ,Http协议版本
request.getProtocol()
4,获取请求的URL和URI
request.getRequestURL()
request.getRequestURI()
5,获取请求头字段名列表
request.getHeaderNames() 这里返回的是枚举对象
6,获取请求头字段值
request.getHeader(headerName)
7,获取请求参数名列表
request.getParameterNames() 这里返回的也是枚举对象
8,获取请求参数值
request.getParameter(parameterName)),这里只能获取一个值,假如请求中有多个请求参数名相同,那么这里只获取其中一个。
9,获取某个请求参数的多个值
request.getParameterValues("userName") 这里返回一个数组String[] 假如有三个参数名都是userName,那么这里可以获取有三个元素的数组。
10,获取实体内容,这个适用于POST方法的请求
request.getInputStream()
详细的使用参考代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("UTF-8");
//获取请求方法
System.out.println("Method:"+request.getMethod());
//请求的URL/URI
System.out.println("URL:"+request.getRequestURL() + " URI:"+ request.getRequestURI());
//请求的协议版本比如http1.1
System.out.println("httpProtocolVersion:" + request.getProtocol());
//请求头字段名称
@SuppressWarnings("unchecked")
Enumeration<String> enumeration = (Enumeration<String>)request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String headerName = enumeration.nextElement();
System.out.println("(Header) " + headerName + " : " + request.getHeader(headerName));
}
//获取实体内容
System.out.println("实体内容"+request.getInputStream());
//请求参数
@SuppressWarnings("unchecked")
Enumeration<String> parameterEnumeration = request.getParameterNames();
while (parameterEnumeration.hasMoreElements()) {
String parameterName = parameterEnumeration.nextElement();
System.out.println("(parameter) "+parameterName + " : " + request.getParameter(parameterName));
}
//获取参数名相同的多个值。
String[] userNameStrings = request.getParameterValues("userName");
for (int i = 0; i < userNameStrings.length; i++) {
System.out.println("(parameter) 多个值userName : " + userNameStrings[i]);
} response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("it is OK");
out.flush();
out.close();
}
访问的URL:
http://localhost:8080/Project/register?userName=zhangsan&password=123456&userName=yangzi
console打印如下:
Method:GET
URL:http://localhost:8080/Project/register URI:/Project/register
httpProtocolVersion:HTTP/1.1
(Header) host : localhost:8080
(Header) accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
(Header) upgrade-insecure-requests : 1
(Header) cookie : JSESSIONID=43E9798D7D35D49D6DA29F1B3954A243
(Header) user-agent : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.7
(Header) accept-language : zh-cn
(Header) accept-encoding : gzip, deflate
(Header) connection : keep-alive
实体内容org.apache.catalina.connector.CoyoteInputStream@6eac65f3
(parameter) userName : zhangsan
(parameter) password : 123456
(parameter) 多个值userName : zhangsan
(parameter) 多个值userName : yangzi
(13)javaWeb中HttpServletRequest详解的更多相关文章
- HttpServletResponse和HttpServletRequest详解.RP
HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得 ...
- js课程 1-3 Javascript变量类型详解
js课程 1-3 Javascript变量类型详解 一.总结 一句话总结:js对象点(属性方法),json对象冒号(属性方法).属性和方法区别只有一个括号. 1.json对象中的函数的使用? 函数名 ...
- Web容器中DefaultServlet详解 JspServlet DefaultServlet
Web容器中DefaultServlet详解 https://blog.csdn.net/qq_30920821/article/details/78328608 Web容器中DefaultServl ...
- winxp计算机管理中服务详解
winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blo ...
- cocos2dx常见的46中+22中动作详解
cocos2dx常见的46中+22中动作详解 分类: iOS2013-10-16 00:44 1429人阅读 评论(0) 收藏 举报 bool HelloWorld::init(){ ///// ...
- Android中Context详解 ---- 你所不知道的Context
转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好, ...
- iOS中-Qutarz2D详解及使用
在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...
- 【转】declare-styleable的使用(自定义控件) 以及declare-styleable中format详解
原文网址:http://www.cnblogs.com/622698abc/p/3348692.html declare-styleable是给自定义控件添加自定义属性用的 1.首先,先写attrs. ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
随机推荐
- XTU 二分图和网络流 练习题 J. Drainage Ditches
J. Drainage Ditches Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d Ja ...
- FZU-1881-Problem 1881 三角形问题,打表二分查找~~
B - 三角形问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descripti ...
- PHP建立和删除目录
<?php/*linux中的文件权限filedir 用户 组 其它 rwx rwx rwx 读写执行 6 4 6 读写 读 读写 7 7 7 rw_ r__ rw_ r__ _w_ ___ r ...
- js闭包的用途[转载]
通过使用闭包,我们可以做很多事情.比如模拟面向对象的代码风格:更优雅,更简洁的表达出代码:在某些方面提升代码的执行效率. 1 匿名自执行函数我们知道所有的变量,如果不加上var关键字,则默认的会添加到 ...
- HDU 6390
GuGuFishtion Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- [Bzoj1015][JSOI2008]星球大战starwar(并查集)(离线处理)
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 6849 Solved: 3204[Submit ...
- Java实现简单的图片浏览器
第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...
- HDTVI,HDCVI
HDTVI是海康的同轴高清标准,HDCVI是大华的同轴高清标准,二者互相不兼容.
- 我在使用eclipse配置Tomcat服务器的时候发现,默认情况下Tocmat把我们部署的项目放在了workspaces下面,而不是像Myeclipse默认的那样放在tomcat的安装路径下。
1.我在使用eclipse配置Tomcat服务器的时候发现,默认情况下Tocmat把我们部署的项目放在了workspaces下面,而不是像Myeclipse默认的那样放在tomcat的安装路径下. 2 ...
- CEF3研究(四)之javascript集成
一.介绍 谷歌浏览器和CEF使用V8JavaScript Engine作为内容的JavaScript实现.在浏览器中的每个窗口都有它自己在的JS上下文提供作用域和在窗口中安全的执行JS代码.CEF暴露 ...