目录

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详解相关推荐

  1. java request获取域,Java Web - Servlet(13)HttpServletRequest详解(获取请求数据、请求分派、请求域)(二)...

    Java Web -- Servlet(13)HttpServletRequest详解(获取请求数据.请求分派.请求域)(2) HttpServletRequest ----------------- ...

  2. HttpServletResponse,HttpServletRequest详解

    HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求 ...

  3. 转: Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

    转自: Springboot - 用更优雅的方式发HTTP请求(RestTemplate详解) - Java知音号 - 博客园RestTemplate是Spring提供的用于访问Rest服务的客户端, ...

  4. 通过CURL请求示例详解HTTPS协议

    通过CURL请求示例详解HTTPS协议 基于HTTPS通信是当前互联网最通用便捷的通信方式,简单理解来看可以视为HTTP协议 + SSL/TLS协议,通过一个curl的示例阐述一下HTTPS协议. 特 ...

  5. java ajax同步请求,成都汇智动力-java ajax实现异步同步请求全面详解

    原标题:成都汇智动力-java ajax实现异步同步请求全面详解 对象 var request=new () //兼容IE5 IE6 if (window.) {// code for IE7+, F ...

  6. python headr方法_对Python发送带header的http请求方法详解

    简单的header import urllib2 request = urllib2.Request('http://example.com/') request.add_header('User-A ...

  7. $.post把表单对象传递过去_第二章 第三节 Request请求对象详解

    Request对象和Response对象是必须熟悉的. Request对象负责请求的构造和处理 Response对象负责返回资源的解析和处理 一.Request对象参数 Request(url[, c ...

  8. NETGEAR拒绝连接请求_详解 Tomcat 的连接数与线程池

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料视频 点击此链接:多套SpringCloud/SpringBoot实 ...

  9. postman请求参数详解

    1. Authorization 身份验证,主要用来填写用户名密码,以及一些验签字段,postman有一个helpers可以帮助我们简化一些重复和复杂的任务.当前的一套helpers可以帮助你解决一些 ...

最新文章

  1. 余数定理_如何用Java实现余数定理
  2. 从该函数中确定函数名称(不使用回溯)
  3. 专家门诊[第258期] 备战2012下半年软考——项目管理、网络工程
  4. Oracle从零开始04——SQL语句03——单行函数
  5. 看直播拿证书 | 12 天,0 基础晋级 Serverless 高手
  6. JavaScript 32位整型无符号操作
  7. markdown 生成目录_github上如何为markdown文件生成目录
  8. [css] 怎么让body高度自适应屏幕?为什么?
  9. Docker 的日志相关整理
  10. controller 用 map 接收值_一文弄懂apply、map和applymap三种函数的区别
  11. ggplot2作图4
  12. 对未来国产操作系统的期望
  13. TFS 2010安装指南
  14. 如何用matlab做参数估计,参数估计的MATLAB实现
  15. Ken Thompson 在餐巾纸上设计的 UTF-8
  16. 汇智网node学习笔记
  17. python 获取搜狗输入法里面所有的表情图片
  18. HIve窗口函数之CUME_DIST,PERCENT_RANK
  19. Unity抗锯齿,Unity3D模型花闪烁等效果优化。
  20. 微信小程序 通过 ThorUI 框架 实现 选择城市

热门文章

  1. springboot+vue项目合同申报系统java
  2. 随机生成双色球号码判断中奖模拟开奖python代码
  3. excel画图,折线
  4. 论文翻译:双端通话频域回声消除中学习速率的调整
  5. C#汽车租凭(面对对象(封装、继承,多态的应用))
  6. 2021年美国大学生数学建模竞赛E题思路分析
  7. php百度指数查询,根据社会保险法律制度规定,经劳动能力鉴定委员会鉴定,评定伤残等级的工伤职工,享受的伤残待遇包括( )。...
  8. ActiveSync与设备连接
  9. mysql return more than 1 row_关于mysql错误:Subquery returns more than 1 row
  10. 论坛数据库设计与性能优化