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对象方法的更多相关文章

  1. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  2. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作

    静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...

  3. HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM

    HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ...

  4. django三板斧与request对象方法与ORM

    目录 django三板斧 HttpResponse() render() redirect() 网页获取静态文件样式 request对象方法 post请求问题 针对get请求和post请求执行不同代码 ...

  5. Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传

    Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存 ...

  6. request对象方法详解

    自己整理的 javax.servlet.http.HttpServletrequest 所有方法,欢迎收藏! 方法名 说明 isUserInRole 判断认证后的用户是否属于某一成员组 getAttr ...

  7. django的request对象方法初识

    1:request.post 拿到的是post请求发送过来的数据,可以将其看作是一个个的键值对 使用get方法可以通过key拿到值,如果该值是一个列表的话,get方法只能拿到列表的最后一个值,使用ge ...

  8. flask中的request对象方法

    'accept_charsets','accept_encodings','accept_languages','accept_mimetypes','access_route','applicati ...

  9. Spring Mvc 在非controller层 实现获取request对象

    一般我们在Controller层,会编写类似这样的方法 @Controller @RequestMapping(value="/detail") public class GetU ...

随机推荐

  1. Oracle PL/SQL学习之基础篇(2)--例外

    1.例外分类:系统例外.自定义例外 (1)系统例外,参见相关API文档 (2)自定义例外 定义自己的例外:就像自定义变量一样,类型为exception 抛出例外:使用raise抛出自定义例外 set ...

  2. CentOS常用命令、快照、克隆大揭秘

    不多说,直接上干货! cat是查看文件内容, cp –cp是连目录及件文件都拷贝 cp是拷贝文件 a.txt里的内容是,   abc   def   ghi cat a.txt |grep –v gh ...

  3. tensorflow语法笔记

    1.如何理解 tf.reduce_max或者 tf.reduce_mean中对Tensor和高维矩阵的坐标轴axis的选择的操作 tf.reduce_mean( input_tensor, axis= ...

  4. PHP 运行相关概念

    web server.cgi.cgi程序.fast-cgi.php-fpm.php-cgi

  5. Tornado简介

    Tornado是一个具有强大异步功能的Python Web框架. Hello World 使用pip安装tornado: pip install tornado 编写控制器: import torna ...

  6. [转]C#进阶系列——WebApi 接口参数不再困惑:传参详解

    本文转自:http://www.cnblogs.com/landeanfen/p/5337072.html#_label1_2 阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作 ...

  7. 使用docker-compose 部署服务 上

    转自:https://www.cnblogs.com/neptunemoon/p/6512121.html 使用docker-compose 大杀器来部署服务 上 使用docker-compose 大 ...

  8. mongodb int型id 自增

    mongo的c#客户端提供了接口IIdGenerator,有guid和objectid等几种实现,但没有int型id的实现 接口主要2个方法,一个IsEmpty返回bool,判断当前id值是否是空(估 ...

  9. ASP.NET Url 重写

    protected void Application_BeginRequest(object sender, EventArgs e) { string url = Request.AppRelati ...

  10. Oracle时间换算:日,月,周数,星期,年

    http://blog.csdn.net/liangweiwei130/article/details/37930383 Oracle时间换算,留做记号!