关于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. 剑指Offer(书):数组中重复的数字

    题目:找出数组中重复的数字. 说明:在一个长度为n的数组里的所有数字都在0~n-1的范围内,数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数 ...

  2. 【51nod 1092】 回文字符串(区间DP)

    回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间添加一些字符,使之变为回文字符串. 例如:abbc 添加2个字符可以变为 acbbca,也可以添加3 ...

  3. MySQL索引与Index Condition Pushdown(二)

    实验 先从一个简单的实验开始直观认识ICP的作用. 安装数据库 首先需要安装一个支持ICP的MariaDB或MySQL数据库.我使用的是MariaDB 5.5.34,如果是使用MySQL则需要5.6版 ...

  4. 图的最小生成树——Prim算法

    Prim算法 Prim算法求最小生成树是采取蓝白点的思想,白点代表已经加入最小生成树的点,蓝点表示未加入最小生成树的点. 进行n次循环,每次循环把一个蓝点变为白点,该蓝点应该是与白点相连的最小边权的是 ...

  5. 1013. Battle Over Cities (25)(DFS遍历)

    For example, if we have 3 cities and 2 highways connecting city1-city2 and city1-city3. Then if city ...

  6. ZOJ - 3781 Paint the Grid Reloaded 题解

    题目大意: 给一个n*m的X O构成的格子,对一个点操作可以使与它相连通的所有一样颜色的格子翻转颜色(X—>O或O—>X),问给定的矩阵最少操作多少次可以全部变成一样的颜色. 思路: 1. ...

  7. [HDU4417]Super Mario(主席树+离散化)

    传送门 又是一道主席树模板题,注意数组从0开始,还有主席树耗费空间很大,数组开大点,之前开小了莫名其妙TLE.QAQ ——代码 #include <cstdio> #include < ...

  8. android L版本AAL新架构

    [DESCRIPTION] 和之前KK版本相比,在L版本上面AAL的架构也有发生一些改变. 拿掉了之前KK平台上使用的MTK LABC,使用Android原生的自动背光功能. AALService内部 ...

  9. linux下mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)的处理方法

    最近登录某台服务器的mysql时候总报错: Access[root@log01 ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Acc ...

  10. msp430入门编程25

    msp430中C语言开发环境搭建 msp430入门学习 msp430入门编程