Http请求和HttpServletRequest中获得对应参数

2024-09-06 02:48

本文主要是介绍Http请求和HttpServletRequest中获得对应参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Enumeration<String> key = request.getParameterNames();  这个能获取到所有前端传过来的参数;其实这篇转来的文字可以深入理解下 servlet 的知识,

Http请求

GET /firstSample/hello HTTP/1.1    请求行
Host: localhost:8080               请求头
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.6
Cookie:  空行name=oncealong&password=123456   (可选)实体内容,在post请求时用于提交
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

一个Http请求可以分为请求行, 请求头, 和可选的实体内容, 我们分别来看下http和HttpServletRequest中的方法如何对应.

请求行

GET /firstSample/hello HTTP/1.1

GET: 请求方式, 其中常见的额有GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE 
/firstSample/hello : 可以使用url和uri. url只能用于网络 
HTTP/1.1: 协议版本. 之前还有http/1.0, 在一次连接中只能发送一次请求. 现在都是使用http1.1, 可以在一次连接中发送多次请求.

HttpServletRequest中用于获取请求行的方法:

request.getMethod();     //请求方式
request.getRequetURI();  //request.getRequetURL()   请求资源
request.getProtocol();   //请求http协议版本
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

请求头

Host: localhost:8080 (必须的)当前请求访问的目标地址(主机:端口) 
Connection: keep-alive 浏览器跟服务器连接状态。close: 连接关闭 keep-alive:保存连接。 
Cache-Control: max-age=0 在0秒内不会重新访问服务器,也就是页面立即失效。 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 
DNT: 1 
Accept-Encoding: gzip, deflate, sdch 浏览器接受的数据压缩格式 
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.6 浏览器接受的语言 
Cookie: 浏览器保存的cookie信息

HttpServletRequest中用于获取请求头的方法:

request.getHeader("name")   //根据name,获取对应请求头数据
request.getHeaderNames()    //获取所有的请求头名称
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

实体内容

name=oncealong&password=123456 
实体内容,在post请求时参数放在实体内容中

HttpServletRequest中用于获取请求实体内容的方法:

request.getInputStream()   //获取实体内容数据
  • 1
  • 1

对于get方式, 要获取提交的参数需要使用request.getQueryString();方法,这样造成API的不一致, 很麻烦. 所以最好使用如下统一方便的获取参数的方式:

request.getParameter("参数名");  //根据参数名获取参数值(注意,只能获取一个值的参数)
request.getParameterValue("参数名“); //根据参数名获取参数值(可以获取多个值的参数)
request.getParameterNames();   //获取所有参数名称列表  
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
举例:

假设客户端请求的地址:http://localhost:8082/TestReq/MyServlet/username=李雷&age=20

request.getRequestURL   http://localhost:8082/TestReq/MyServlet  ---客户请求求的URL,不包括参数数据 request.getRequestURI:   /TestReq/MyServlet  ---将URL的域名和尾随的参数截取掉,剩下的那部分就是URI request.getContextPath:   /TestReq  ---即斜杆加工程名 request.getRealPath("/WEB-INF"):   D:\omc_jboss\server\default\.\deploy\TestReq.war\WEB-INF  ---工程部署的完整路径字符串接上参数中的字符串 request.getMethod:   GET  ---HTTP请求的的方法名,默认是GET,也可以指定PUT或POST

request.getAuthType: null ---返回包含用来保护servlet身份验证方案的名称,如BASIC和SSL,如果是null表示未不受保护

request.getProtocol: HTTP/1.1 ---返回请求的协议名和版本,如HTTP/1.1等

request.getScheme: http ---返回请求的方案名,如http,ftp,https等

request.getServletPath: /MyServlet ---工程之后到参数之前的这部分字符串

request.getPathInfo: null ---字符串包含与客户端发送请求的URL相关的额外信息

request.getContentLength: -1 ---请求体内容的长度,只对POST和PUT类型的请求有效

request.getContentType: null ---请求体内容类型

request.getServerName: localhost ---服务器主机名

request.getServerPort: 8082 ---服务器上web应用的访问端口

request.getRemoteAddr: 127.0.0.1 ---发送请求的客户端主机的IP

request.getRemoteHost: 127.0.0.1 ---发送请求的客户端主机名,如果不确定返回的是IP

request.getRemoteUser: null ---如果对发送请求的客户端主机用户进行了身份验证,则返回登录信息,否则返回null

request.getPathTranslated: null ---返回一个表示在服务器文件系统上的PathInfol转换成路径的字符串

request.getQueryString: username=李雷&age=20 ---返回URL上的参数部分的字符串,必须是GET的请求才有效,不然报错

这里的URL参数中带有中文,是通过字符转码的:String eQuery=new String(request.getQueryString().getBytes("ISO-8859-1"))

response的响应内容:response.setContentType("text/html;charset=gbk"),才可以正常显示页面中文

来自 :http://blog.csdn.net/err118/article/details/78284129

这篇关于Http请求和HttpServletRequest中获得对应参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140785

相关文章

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa