http请求HttpServletRequest详解
目录
1. HttpServletRequest概述
2. request的运行流程
3. 抓包获取的http请求信息
4. 通过requestd对象获得 "请求行"
5. 通过request 获得请求头
6. 通过request 获得请求体
附加 request 的其他功能:
1. request 是一个域对象
2. request 完成请求转发
3. ServletContext域与Request域的生命周期比较?
4. 转发与重定向的区别?
5. 客户端地址与服务器端的地址的写法?
1. HttpServletRequest概述
我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。 service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口.
2. request的运行流程
3. 抓包获取的http请求信息
request代表请求, 可以通过该对象分别获取http请求的请求行, 请求头, 请求体
4. 通过requestd对象获得 "请求行"
获得请求的资源:String getRequestURI() StringBuffer getRequestURL() String getContextPath() ---web应用的名称String getQueryString() ---- get提交url地址后的参数字符串username=zhangsan&password=123
注:request获得客户机(客户端)的一些信息 request.getRemoteAddr() --- 获得访问的客户端IP地址
5. 通过request 获得请求头
long getDateHeader(String name)String getHeader(String name)Enumeration getHeaderNames()Enumeration getHeaders(String name)int getIntHeader(String name)
注: referer : n. 参照页,引用页; 推荐人
作用: 执行该此访问的来源 , 做防盗链时使用 该信息
6. 通过request 获得请求体
request 请求的概念是 通过post提交的请求参数的, 若果是get 则没有请求体(直接跟在 ? 后边 , 多个参数用 & 连接 )
格式:
username=zhangsan&password=123&hobby=football&hobby=basketball
key ---------------------- value
username [zhangsan]
password [123]
hobby [football,basketball]
以上述为例子: 获取请求参数 (get 和 post 都可以通过以下方式获得) :
String getParameter(String name) String[] getParameterValues(String name)Enumeration getParameterNames()Map<String,String[]> getParameterMap()
注: 乱码处理 (括号内的是我个人拙见) :
• 解决post提交方式的乱码 (参数还在请求体中, 可以先行设置编码,然后通过浏览器处理后 直接就是utf8的编码):
request.setCharacterEncoding("UTF-8");
• 解决get提交的方式的乱码 (因为get方式是直接在链接过边加的不经过浏览器处理, 得到的是原编码, 想要改变编码需要有先解码再编码的过程):
String name = request.getParameter("name");name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
附加 request 的其他功能:
1. request 是一个域对象
request 对象也是一个存储数据的区域对象, 所以也具有如下方法:
setAttribute(String name, Object o)getAttribute(String name)removeAttribute(String name)
注: request 域的作用范围: 一次请求中
2. request 完成请求转发
获得请求转发器-- path是转发的地址RequestDispatcher getRequestDispatcher(String path)通过转发器对象转发requestDispathcer.forward(ServletRequest request, ServletResponse response)
3. ServletContext
域与
Request
域的生命周期比较?
ServletContext : 创建--> 服务器启动 ; 销毁--> 服务器关闭 ; 域的作用范围--> 整个web应用
request : 创建--> 访问时创建request ;
销毁-->响应结束
request销毁 ;
域的作用范围--> 一次请求中
4. 转发与重定向的区别?
• 重定向是 两次请求, 转发是一次请求
• 重定向地址栏的地址变化, 转发地址不发生变化
• 重定向可以访问外部网站 , 转发只能访问内部的网站
• 转发的性能要优于重定向
5. 客户端地址与服务器端的地址的写法?
• 客户端访问服务端需要加上 web应用的名称.
• 服务器内部访问资源 , 内部的跳转地址, 不需要写web应用的名称
18/12/6 18:00 雨
http请求HttpServletRequest详解相关推荐
- java request获取域,Java Web - Servlet(13)HttpServletRequest详解(获取请求数据、请求分派、请求域)(二)...
Java Web -- Servlet(13)HttpServletRequest详解(获取请求数据.请求分派.请求域)(2) HttpServletRequest ----------------- ...
- HttpServletResponse,HttpServletRequest详解
HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求 ...
- 转: Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)
转自: Springboot - 用更优雅的方式发HTTP请求(RestTemplate详解) - Java知音号 - 博客园RestTemplate是Spring提供的用于访问Rest服务的客户端, ...
- 通过CURL请求示例详解HTTPS协议
通过CURL请求示例详解HTTPS协议 基于HTTPS通信是当前互联网最通用便捷的通信方式,简单理解来看可以视为HTTP协议 + SSL/TLS协议,通过一个curl的示例阐述一下HTTPS协议. 特 ...
- java ajax同步请求,成都汇智动力-java ajax实现异步同步请求全面详解
原标题:成都汇智动力-java ajax实现异步同步请求全面详解 对象 var request=new () //兼容IE5 IE6 if (window.) {// code for IE7+, F ...
- python headr方法_对Python发送带header的http请求方法详解
简单的header import urllib2 request = urllib2.Request('http://example.com/') request.add_header('User-A ...
- $.post把表单对象传递过去_第二章 第三节 Request请求对象详解
Request对象和Response对象是必须熟悉的. Request对象负责请求的构造和处理 Response对象负责返回资源的解析和处理 一.Request对象参数 Request(url[, c ...
- NETGEAR拒绝连接请求_详解 Tomcat 的连接数与线程池
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料视频 点击此链接:多套SpringCloud/SpringBoot实 ...
- postman请求参数详解
1. Authorization 身份验证,主要用来填写用户名密码,以及一些验签字段,postman有一个helpers可以帮助我们简化一些重复和复杂的任务.当前的一套helpers可以帮助你解决一些 ...
最新文章
- 余数定理_如何用Java实现余数定理
- 从该函数中确定函数名称(不使用回溯)
- 专家门诊[第258期] 备战2012下半年软考——项目管理、网络工程
- Oracle从零开始04——SQL语句03——单行函数
- 看直播拿证书 | 12 天,0 基础晋级 Serverless 高手
- JavaScript 32位整型无符号操作
- markdown 生成目录_github上如何为markdown文件生成目录
- [css] 怎么让body高度自适应屏幕?为什么?
- Docker 的日志相关整理
- controller 用 map 接收值_一文弄懂apply、map和applymap三种函数的区别
- ggplot2作图4
- 对未来国产操作系统的期望
- TFS 2010安装指南
- 如何用matlab做参数估计,参数估计的MATLAB实现
- Ken Thompson 在餐巾纸上设计的 UTF-8
- 汇智网node学习笔记
- python 获取搜狗输入法里面所有的表情图片
- HIve窗口函数之CUME_DIST,PERCENT_RANK
- Unity抗锯齿,Unity3D模型花闪烁等效果优化。
- 微信小程序 通过 ThorUI 框架 实现 选择城市
热门文章
- springboot+vue项目合同申报系统java
- 随机生成双色球号码判断中奖模拟开奖python代码
- excel画图,折线
- 论文翻译:双端通话频域回声消除中学习速率的调整
- C#汽车租凭(面对对象(封装、继承,多态的应用))
- 2021年美国大学生数学建模竞赛E题思路分析
- php百度指数查询,根据社会保险法律制度规定,经劳动能力鉴定委员会鉴定,评定伤残等级的工伤职工,享受的伤残待遇包括( )。...
- ActiveSync与设备连接
- mysql return more than 1 row_关于mysql错误:Subquery returns more than 1 row
- 论坛数据库设计与性能优化