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 ...
随机推荐
- svn新增文件时自动给文件设置强制只读属性needs-lock
1.从SVN客户端的“设置”->常规设置-> Subversion->Subversion 配置文件-> 编辑按钮 -> 打开配置文件 2.找到[miscellany], ...
- 【数组】Find Peak Element
题目: A peak element is an element that is greater than its neighbors. Given an input array where num[ ...
- AttrContext
info属性类型为AttrContext或AttrContextEnv.主要看AtrContext即可.定义了如下关键参数: /** Contains information specific to ...
- SQL脚本文件执行器
处于项目需求,需要能够批量执行SQL脚本文件,需要由前台页面操作触发执行. 查找相关资料,发现 Ant 提供了 SQLExec 组件可以支持SQL文件的执行,测试效果不错. 以下是对 SQLExec ...
- c++ ‘nullptr’ 在此作用域中尚未声明
编译加上如下选项:-std=c++11 g++ 1.cpp -o k -std=c++11
- 根据模板导出excel
@RequestMapping(value = "/export", method = RequestMethod.GET) public void exportApprovals ...
- redis High Availability---Redis Sentinel翻译
注意,本文档为最新(11月21日),旧版本的可以参考:http://redis.io/topics/sentinel-old 不鼓励使用旧版本的文档. Redis Sentinel是一个用来管理Red ...
- MySQL中You can't specify target table for update in FROM clause异常
mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值 ...
- wcf win7+iis7 异常消息为: 可能证书“CN=PmsWcfServer”没有能够进行密钥交换的私钥
原因是证书没有用户权限,解决方法: 1.开始-运行-mmc 2.添加[证书]管理单元 3.选择[证书(本地计算机)]-[个人]-[证书],右击PmsWcfServer证书-[所有任务]-[管理密钥] ...
- 关于发布程序之后js文件存在缓存问题
把js文件加上版本号即可解决 如: <script src="../Static/js/Contract/ContractRateEdit.js?t=20181210"> ...