关于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详解的更多相关文章

  1. HttpServletResponse和HttpServletRequest详解.RP

    HttpServletResponse,HttpServletRequest详解 1.相关的接口   HttpServletRequest HttpServletRequest接口最常用的方法就是获得 ...

  2. js课程 1-3 Javascript变量类型详解

    js课程 1-3  Javascript变量类型详解 一.总结 一句话总结:js对象点(属性方法),json对象冒号(属性方法).属性和方法区别只有一个括号. 1.json对象中的函数的使用? 函数名 ...

  3. Web容器中DefaultServlet详解 JspServlet DefaultServlet

    Web容器中DefaultServlet详解 https://blog.csdn.net/qq_30920821/article/details/78328608 Web容器中DefaultServl ...

  4. winxp计算机管理中服务详解

    winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blo ...

  5. cocos2dx常见的46中+22中动作详解

    cocos2dx常见的46中+22中动作详解 分类: iOS2013-10-16 00:44 1429人阅读 评论(0) 收藏 举报 bool HelloWorld::init(){    ///// ...

  6. Android中Context详解 ---- 你所不知道的Context

    转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好,  ...

  7. iOS中-Qutarz2D详解及使用

    在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...

  8. 【转】declare-styleable的使用(自定义控件) 以及declare-styleable中format详解

    原文网址:http://www.cnblogs.com/622698abc/p/3348692.html declare-styleable是给自定义控件添加自定义属性用的 1.首先,先写attrs. ...

  9. Python中dict详解

    from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...

随机推荐

  1. 算法导论 第三章 and 第四章

    第三章 渐进的基本O().... 常用函数 % 和  // 转换 斯特林近似公式 斐波那契数 第四章 分治策略:分解(递归)--解决(递归触底)--合并 求解递归式的3种方法: 1:代入法(替代法): ...

  2. SPOJ LCS2 多个串的最长公共子串

    这里串最多有10个,找所有串的最长公共子串 这里后缀自动机做,以第一个串建立后缀自动机,后面的串一个个去匹配,每次得到当前串在可到达状态上所能得到的最长后缀长度 拿所有串匹配后得到的结果进行计算 #i ...

  3. FZU 1686 dlx重复覆盖

    #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...

  4. 最近切的两题SCC的tarjan POJ1236 POJ2186

    两题都是水题,1236第一问求缩点后入度为0的点数,第二问即至少添加多少条边使全图强连通,属于经典做法,具体可以看白书 POJ2186即求缩点后出度为0的那个唯一的点所包含的点数(即SCC里有多少点) ...

  5. 【树形DP】codeforces K. Send the Fool Further! (medium)

    http://codeforces.com/contest/802/problem/K [题意] 给定一棵树,Heidi从根结点0出发沿着边走,每个结点最多经过k次,求这棵树的最大花费是多少(同一条边 ...

  6. Bzoj 2726 SDOI 任务安排

      Memory Limit: 131072KB   64bit IO Format: %lld & %llu Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务 ...

  7. Codeforces936C. Lock Puzzle

    给个串,只能用操作shift x表示把后面x个字符翻转后放到串的前面.问s串怎么操作能变t串.n<=2000,操作次数<=6100. 打VP时这转来转去的有点晕... 可以想一种逐步构造的 ...

  8. msp430入门编程40

    msp430中C语言的软件工程--前后台程序结构

  9. THUPC2018看题总结

    THUPC2018看题总结 #6387. 「THUPC2018」绿绿与串串 / String 据说是签到题啊. 首先根据题目的意思,我们发现如果能找到那个最后一次选择的对称轴岂不是美滋滋. 自然地,我 ...

  10. 初学总结--------Java修饰符与修饰关键字(且叫修饰关键字)

    Java中有类,有成员变量,有成员方法,有局部变量.他们分别能用什么来修饰? 目前学习到的类,有普通类和内部类. 一.修饰普通类: 1.public  每个文件中只有一个类能被public修饰,表示可 ...