Request通用方式获取请求参数

 ○ 请求参数获取方式:§ GET方式:□ String getQueryString()§ POST方式:□ BufferedReader getReader()○ 通用方式:§ Map<String, String[]> getParameterMap()//获取所有参数Map集合§ String[] getParameterValues(Stringname)//根据名称获取参数值(数组)§ String getParameter(Stringname)//根据名称获取参数值(单个值)
/*** Request获取请求数据*/
@WebServlet("/req1")
public class RequestDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*** 获取请求行数据*/// □ String getMethod()//获取请求方法String method = req.getMethod();System.out.println(method);//GET//□ String getContextPath()//获取虚拟目录(项目访问路径)/request-demoString path = req.getContextPath();System.out.println(path);//□ StringBuffer getRequestURL()//获取URL(统一资源定位符):http://localhost:8080/request-demo/req1StringBuffer url = req.getRequestURL();System.out.println(url);//□ String getRequestURI()//获取URI(统一资源标识符):/request-demo/req1String uri = req.getRequestURI();System.out.println(uri);//□ String getQueryString()//获取请求参数(GET方式):username=zhangsan&password=123String queryString = req.getQueryString();System.out.println(queryString);/*** 获取请求头数据*///获取请求头:user-agent:浏览器版本信息String reqHeader = req.getHeader("user-agent");System.out.println(reqHeader);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/***获取post请求体:请求参数*///获取字符输入流BufferedReader br = req.getReader();//读取数据String line = br.readLine();System.out.println(line);}
}
对应的post表单
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="//localhost:8080/request-demo/req4" method="post"><input type="text" name="username"><input type="password" name="password"><input type="submit"></form>
</body>
</html>
 ○ 使用通用方式获取参数和,屏蔽了GET和POST的请求方式代码的不同,则代码可以定义为如下格式
             @WebServlet("/req3")publicclassRequestDemo2extendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//GET请求逻辑}@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//POST请求逻辑this.doGet(req,resp);}}
 执行流程大致同下面相同

创建 Servlet模板

 可以使用Servlet模板创建Servlet更高效 ,具体步骤如下:


设置Servlet模板的步骤如下

 ○ Request请求参数中文乱码处理§ 请求参数如果存在中文数据,会乱码§ 解决方案:□ POST:设置输入流的编码® request.setCharacterEncoding("UTF-8");□ GET:□ URL编码:® 将字符串按照编码方式转为二进制® 每个字节转为2个16进制数并在前边加上%
/*** 中文乱码问题的解决方案*/
@WebServlet("/req4")
public class RequestDemo4 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/* //1.解决乱码 POST getReader()request.setCharacterEncoding("UTF-8");//设置字符输入流的编码//2.获取usernameString username = request.getParameter("username");System.out.println(username);*///3.GET获取参数的方式底层还是,getQueryString()request.setCharacterEncoding("UTF-8");//设置字符输入流的编码//2.获取usernameString username = request.getParameter("username");System.out.println("乱码:" + username);//乱码原因:tomcat进行URL解码时,默认字符集是ISO-8859-1//3.1先对乱码数据进行编码,转为字节数组//3.2字节数组解码username = new String(username.getBytes("ISO-8859-1"), "utf-8");System.out.println("解决乱码后:" + username);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
 对应的post表单
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="//localhost:8080/request-demo/req4" method="get"><input type="text" name="username"><br><input type="password" name="password"><br><input type="checkbox" name="hobby" value="1">游泳<input type="checkbox" name="hobby" value="2">爬山<br><input type="submit"></form>
</body>
</html>

执行步骤

1.运行tomcat服务器

2.进入链接

 3.输入表单文件

4.在输入框中输入任意中文

 5.回到idea控制台查看

     § Tomcat8.0之后,已将GET请求乱码问题解决,设置默认的解码方式为UTF-8

Web——Request请求相关推荐

  1. Python Flask Web 第八课 —— request 请求对象

    from flask import request 请求对象包含客户端发出的所有请求信息. 1. request.headers request.headers.get('User-Agent') 获 ...

  2. 微信小程序请求webapi调试抓包工具Fiddler以及wx.request请求webapi时web服务器端解析不到code问题

    参考链接 https://blog.csdn.net/weixin_40188140/article/details/82851315 https://www.cnblogs.com/chenboyi ...

  3. 【OkHttp】OkHttp 源码分析 ( 同步 / 异步 Request 请求执行原理分析 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...

  4. java 微信请求_Java web微信请求拦截器(微信公众号开发)

    Java web微信请求拦截器(微信公众号开发),获取微信用户信息. package com.mvc.interceptor; import com.alibaba.fastjson.JSONObje ...

  5. 如何多次读取request请求里的数据

    问题场景 : 我们一般直接获取request请求里的参数进行数据处理,现在想在过滤器里获取请求参数并打印,方便做日志排查. 但是POST请求中的参数是存储在流中的,只能读一次,无法多次读取. 解决办法 ...

  6. Servlet的学习之Request请求对象(2)

    在上一篇<Servlet的学习(十)>中介绍了HttpServletRequest请求对象的一些常用方法,而从这篇起开始介绍和学习HttpServletRequest的常用功能. 使用Ht ...

  7. Servlet的学习之Request请求对象(3)

    本篇接上一篇,将Servlet中的HttpServletRequest对象获取RequestDispatcher对象后能进行的[转发]forward功能和[包含]include功能介绍完. 首先来看R ...

  8. Web服务请求异步化介绍(概念篇)

    前话 在前面的文章中,先给出了Web服务请求异步处理的压力测试报告,从数据角度描述了支持Web请求异步化的容器在不同并发用户下的处理能力及性能消耗.本文从概念的角度对于应用系统异步化,Web服务请求异 ...

  9. WEB——Request与Response

    **ServletConfig对象** 1.获取初始化参数     2.获取servlet配置文件的名称 **ServletContext对象**          1.一个WEB项目只有一个Serv ...

最新文章

  1. 阿里月薪5万招程序员,招聘要求让人窒息!
  2. java getheight_Java ETC1.getHeight方法代码示例
  3. RAID 01 和RAID 10的区别
  4. 使用C#制作简易的注册表编辑器
  5. 论文浅尝 | 基于多模态关联数据嵌入的知识库补全
  6. 实际工作中,一个完整的可视化大屏项目有哪些步骤?
  7. 吉林省计算机科学与技术专业测评,我校计算机科学与技术、英语两个专业在吉林省专业综合评价中获得可喜成绩...
  8. ubuntu16.04安装zabbix-server3.4
  9. 关于数据库查询时报“query block has incorrect number of result columns”
  10. java类包装器有什么用_Java中的包装器类
  11. python2和3切换_python2和python3切换
  12. TCP UDP 套接字
  13. 软考计算机英语词汇,软考计算机专业英语常用词汇(首字母I-O)
  14. 【游记】CSP2021-试手记
  15. ArcMap制作TPK文件
  16. 同步上下文(SynchronizationContext) 和 C#中跨线程更新UI的方法总结
  17. 【CUDA】C++实现warpaffine仿射变换及其逆变换
  18. 解决查看 Hotmail 电子邮件乱码
  19. 帝国模板变量更新后页面不更新
  20. javascript confirm 确认、取消的选择

热门文章

  1. mysql优化varchar索引_MySQL优化--概述以及索引优化分析
  2. Python数据类型与运算符号
  3. 关于Windows下的访问控制模型
  4. Topshelf创建Windows服务
  5. 设计模式之 里氏替换原则
  6. .NET CORE在ubuntu1604上运行
  7. c++获取sqlite3数据库表中所有字段的方法
  8. 简单的实现RAII封装。
  9. 第七课 循环神经网络与自然语言处理
  10. [Leetcode][第337题][JAVA][打家劫舍3][递归][动态规划]