request对象方法
1、html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="get" action="world">
名称:
<input type="text" name="name"><br>
我喜欢自行车:
<input type="checkbox" name="like" value="Bike"><br>
我喜欢汽车:
<input type="checkbox" name="like" value="Car"><br>
<button>发出 GET 请求</button>
</form><br><br>
<form method="post" action="world">
名称:
<input type="text" name="name"><br>
我喜欢自行车:
<input type="checkbox" name="like" value="Bike"><br>
我喜欢汽车:
<input type="checkbox" name="like" value="Car"><br>
<button>发出 POST 请求</button>
</form>
</body>
</html>
2、servlet
这里doGet和doPost方法里的内容都一模一样,只是为了证明这些方法在doGet和doPost方法里都是通用的。
package com.test; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set; @WebServlet("/world")
public class RequestDemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer = response.getWriter();
// 指定请求参数名称来取得对应的值
String name = request.getParameter("name");
writer.println("name : " + name + "<br><br>");
// 复选框、列表提交后同一个参数名称对应多个值,返回数组
String[] likes = request.getParameterValues("like");
for (String one : likes) {
writer.println("like : " + one + "<br>");
}
writer.println("<br>");
// 获取所有的请求参数名称
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String element = parameterNames.nextElement();
writer.println("参数名称 : " + element + "<br>");
String[] parameters = request.getParameterValues(element);
writer.println("参数值 : " + Arrays.toString(parameters));
writer.println("<br>");
}
writer.println("<br><br>");
/**
* 将请求参数以Map对象返回,Map中的键(Key)是请求参数名称,值(Value)的部分是请求参数值,
* 以字符串数组类型String[]返回(因考虑有同一请求参数有多个值的情况)
*/
Map<String, String[]> parameterMap = request.getParameterMap();
Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
for (Map.Entry<String, String[]> entry : entries) {
writer.println("map key : " + entry.getKey() + "<br>");
String[] values = entry.getValue();
for (String one: values) {
writer.println("map value : " + one + "<br>");
}
}
writer.println("<br><br>");
// 获取所有的请求头名称
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String header = headerNames.nextElement();
writer.println("请求头 : " + header + "<br>");
// 使用方式与getParameterValues()类似,指定标头名称后可返回Enumeration,元素为字符串
Enumeration<String> headers = request.getHeaders(header);
while (headers.hasMoreElements()) {
String one = headers.nextElement();
writer.println("对应值 : " + one + "<br>");
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer = response.getWriter();
String name = request.getParameter("name");
writer.println("name : " + name + "<br><br>");
String[] likes = request.getParameterValues("like");
for (String one : likes) {
writer.println("like : " + one + "<br>");
}
writer.println("<br>");
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String element = parameterNames.nextElement();
writer.println("参数名称 : " + element + "<br>");
String[] parameters = request.getParameterValues(element);
writer.println("参数值 : " + Arrays.toString(parameters) + "<br>");
writer.println();
}
writer.println("<br><br>");
Map<String, String[]> parameterMap = request.getParameterMap();
Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
for (Map.Entry<String, String[]> entry : entries) {
writer.println("map key : " + entry.getKey() + "<br>");
String[] values = entry.getValue();
for (String one: values) {
writer.println("map value : " + one + "<br>");
writer.println();
}
}
writer.println("<br><br>");
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String header = headerNames.nextElement();
writer.println("请求头 : " + header + "<br>");
Enumeration<String> headers = request.getHeaders(header);
while (headers.hasMoreElements()) {
String one = headers.nextElement();
writer.println("对应值 : " + one + "<br>");
}
writer.println();
}
}
}
3、测试结果
name : Mike like : Bike 参数名称 : name
参数值 : [Mike]
参数名称 : like
参数值 : [Bike] 请求头 : host
对应值 : 127.0.0.1:8000
请求头 : user-agent
对应值 : Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
请求头 : accept
对应值 : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
请求头 : accept-language
对应值 : zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
请求头 : referer
对应值 : http://127.0.0.1:8000/hello/index.html
请求头 : content-type
对应值 : application/x-www-form-urlencoded
请求头 : connection
对应值 : keep-alive
请求头 : upgrade-insecure-requests
对应值 : 1
请求头 : accept-encoding
对应值 : gzip, deflate
请求头 : content-length
对应值 : 33
request对象方法的更多相关文章
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作
静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...
- HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM
HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ...
- django三板斧与request对象方法与ORM
目录 django三板斧 HttpResponse() render() redirect() 网页获取静态文件样式 request对象方法 post请求问题 针对get请求和post请求执行不同代码 ...
- Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传
Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV 在Django中存 ...
- request对象方法详解
自己整理的 javax.servlet.http.HttpServletrequest 所有方法,欢迎收藏! 方法名 说明 isUserInRole 判断认证后的用户是否属于某一成员组 getAttr ...
- django的request对象方法初识
1:request.post 拿到的是post请求发送过来的数据,可以将其看作是一个个的键值对 使用get方法可以通过key拿到值,如果该值是一个列表的话,get方法只能拿到列表的最后一个值,使用ge ...
- flask中的request对象方法
'accept_charsets','accept_encodings','accept_languages','accept_mimetypes','access_route','applicati ...
- Spring Mvc 在非controller层 实现获取request对象
一般我们在Controller层,会编写类似这样的方法 @Controller @RequestMapping(value="/detail") public class GetU ...
随机推荐
- windows下python3.6版本安装pygame
参考:http://blog.csdn.net/a380331382/article/details/77063152 首先,进入这个网站:http://www.lfd.uci.edu/~gohlke ...
- HUE配置文件hue.ini 的yarn_clusters模块详解(图文详解)(分HA集群和非HA集群)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- JavacProcessingEnvironment类解读
JavacProcessingEnvironment类的继承体系如下: 其中含有很多内部类,最重要的是迭代注解处理器相关的类,如下:
- 全连接层(FC)与全局平均池化层(GAP)
在卷积神经网络的最后,往往会出现一两层全连接层,全连接一般会把卷积输出的二维特征图转化成一维的一个向量,全连接层的每一个节点都与上一层每个节点连接,是把前一层的输出特征都综合起来,所以该层的权值参数是 ...
- PM2怎么开启ES6?
node版本v6.14.2,无论是用配置文件 { "apps": [{ "name": "server", "script&quo ...
- Nodejs学习笔记(五)—Express安装入门与模版引擎ejs
前言 前面也学习了一些Node.js的基本入门知道,现在开始进入Web开发的部分: Node.js提供了http模块,这个模块中提供了一些底层接口,可以直接使用,但是直接开发网站那还是太累了,所以ht ...
- 开始使用 Vuejs 2.0 --- 组件间数据传递
Vue1.0组件间传递 使用$on()监听事件: 使用$emit()在它上面触发事件: 使用$dispatch()派发事件,事件沿着父链冒泡: 使用$broadcast()广播事件,事件向下传导给所有 ...
- 亿级别记录的mongodb批量导入Es的java代码完整实现
针对mongodb亿级别或者十亿级别的模糊查询,效率不高,解决方式是使用Es查询,这样就需要把数据导入的ES中 完整的代码实现如下所示:(仅供参考) import java.io.IOExceptio ...
- 19.Decorator修饰器
Decorator 修饰器 类的修饰 许多面向对象的语言都有修饰器(Decorator)函数,用来修改类的行为.目前,有一个提案将这项功能,引入了 ECMAScript. @testable clas ...
- SqlServer入门学习
--distinct(去除重复数据)select distinct Time from HightTable--Between select * from HightTable where ID BE ...