http协议和request请求对象

沙海 2018年10月13日13:20:34Java JavaWeb1 187字数 2333阅读7分46秒阅读模式

http协议

概述

协议:规定了被约束对象都需要去遵守的规则文章源自JAVA秀-https://www.javaxiu.com/536.html

http协议:是互联网上运用最为广泛的一种浏览器和服务器之间的协议(合同)文章源自JAVA秀-https://www.javaxiu.com/536.html

这份合同规定了浏览器访问服务器要遵循的内容以及服务器响应浏览器要遵循的内容文章源自JAVA秀-https://www.javaxiu.com/536.html

http协议和request请求对象文章源自JAVA秀-https://www.javaxiu.com/536.html

http协议和request请求对象文章源自JAVA秀-https://www.javaxiu.com/536.html

作用

强制规定了只要浏览器访问服务器就要传递哪些内容以及这些内容传递时的格式文章源自JAVA秀-https://www.javaxiu.com/536.html

强制规定 了只要服务器响应浏览器要响应哪些内容以及这些内容响应时的格式文章源自JAVA秀-https://www.javaxiu.com/536.html

协议规定的内容(抓包工具)

请求内容:浏览器发送给服务器的数据文章源自JAVA秀-https://www.javaxiu.com/536.html

响应内容:服务器响应给浏览器的数据文章源自JAVA秀-https://www.javaxiu.com/536.html

请求内容

请求内容:文章源自JAVA秀-https://www.javaxiu.com/536.html

请求行(第一行)  请求头(key:value)  请求体(表单的的内容)

注意:对于请求内容文章源自JAVA秀-https://www.javaxiu.com/536.html

get提交没有请求体 所有的表单的数据都在请求行中(地址栏中)文章源自JAVA秀-https://www.javaxiu.com/536.html

post提交有请求体 所有的表单数据都在请求体中(不在地址栏中)文章源自JAVA秀-https://www.javaxiu.com/536.html

get提交和post提交的区别?文章源自JAVA秀-https://www.javaxiu.com/536.html

get提交没有请求体 所有的页面数据都在请求行中 会在地址栏中暴露 不安全
post提交有请求体  所有的页面数据都在请求体中 不会地址栏中暴露 安全
get提交有着大小的限制 post没有大小的限制

什么情况下访问服务器是get提交? 什么情况下访问服务器时post提交?文章源自JAVA秀-https://www.javaxiu.com/536.html

浏览器只要和服务器交互 只有将表单的method设置成post才属于post提交,其它的一律是get提交

http请求协议的组成内容

请求行 请求头 请求体

请求行文章源自JAVA秀-https://www.javaxiu.com/536.html

请求方式   请求资源   协议版本   POST /day_02/sd1 HTTP/1.1

请求头文章源自JAVA秀-https://www.javaxiu.com/536.html

数据的格式:    键值对的数据
掌握的头数据:Referer   User-Agent
Referer:        当前页面的来源地址   防盗链
User-Agent: 用户的浏览器版本信息 

请求体文章源自JAVA秀-https://www.javaxiu.com/536.html

只有post提交才有  是页面表单的数据要传递给服务器的内容

问:请求行 请求头 请求体的数据最终都要传递给服务器 服务器如何获取到这些数据?文章源自JAVA秀-https://www.javaxiu.com/536.html

请求行 请求头 请求体会随着请求封装request对象中,所以我们在服务器端只要使用提供好的request对象调用api即可获取到

request请求对象

概述

request对象代表浏览器端的请求,当浏览器端通过HTTP协议访问服务器时,HTTP请求中的所有 信息都封装在这个对象中,开发人员通过这个对象的api,可以获得客户通过浏览器传递过来的数据文章源自JAVA秀-https://www.javaxiu.com/536.html

作用

作用:用来封装所有页面数据(请求行 请求头 请求体)文章源自JAVA秀-https://www.javaxiu.com/536.html

1.获取请求行的数据
2.获取请求头的数据
3.获取请求体的数据

http协议和request请求对象文章源自JAVA秀-https://www.javaxiu.com/536.html

1.获取请求行数据的api概述(请求方式 访问的资源 协议版本)文章源自JAVA秀-https://www.javaxiu.com/536.html

1.(了解)String getMethod() 获取请求方式
2.(了解)String getRequestURI() 获取请求行中的资源名部分
3.(掌握)StringBuffer getRequestURL() 获取客户端请求完整URL
4.(了解)String getProtocol() 获取请求协议和版本
5.(了解)int getLocalPort() 获取端口
6.(掌握)String getRemoteAddr() 获取请求者的ip地址 
                Localhost:ipv6
                127.0.0.1:ipv4 
7.(掌握)String getContextPath()     例如:/day_02

2.获取请求头数据的api概述 (键值对key/value的数据)文章源自JAVA秀-https://www.javaxiu.com/536.html

1.getHeader(String key)  根据请求头的key获取value
  例如:Referer可以获取到来源地址(没有来与为null:直接访问)  防盗链
  例如:User-Agent可以获取用户的浏览器版本信息  下载
2.(了解)Enumeration getHeaderNames() 返回此请求包含的所有头名称 

3.获取请求体数据api概述(所有浏览器提交的表单数据)文章源自JAVA秀-https://www.javaxiu.com/536.html

1.String  getParameter("name的属性名")  
2.String[]  getParameterValues("name的属性值")  
3.Map<String,String[]>  getParameterMap() 
注意:key:对应的是表单中name属性名    
在提交表单的过程中,如果有中文 get提交没问题 但是post提交会乱码
解决方案:request.setCharacterEncoding("utf-8");

4.request请求对象的其它作用文章源自JAVA秀-https://www.javaxiu.com/536.html

作为容器数据存取删的方法:(request也被称为域对象)文章源自JAVA秀-https://www.javaxiu.com/536.html

1.void setAttribute(String name, Object o) 存储数据
2.Object getAttribute(String name)            获取数据
3.void removeAttribute(String name)         移除数据

注意:request这3个方法也可以做多个servlet之间的数据传递?文章源自JAVA秀-https://www.javaxiu.com/536.html

问题:当我们浏览器访问2个不同的servlet的时候,发现并不能得到我们想要的获取数据效果文章源自JAVA秀-https://www.javaxiu.com/536.html

原因:请求一次就创建一个request对象,响应就销毁,要想用同一个request对象,得学习请求转发文章源自JAVA秀-https://www.javaxiu.com/536.html

解决:使用请求转发文章源自JAVA秀-https://www.javaxiu.com/536.html

http协议和request请求对象文章源自JAVA秀-https://www.javaxiu.com/536.html

请求转发:可以在一个servlet中访问另外一个servlet文章源自JAVA秀-https://www.javaxiu.com/536.html

request.getRequestDispatcher("/servlet的地址").forward(request,response);

登录案例

http协议和request请求对象文章源自JAVA秀-https://www.javaxiu.com/536.html

http协议和request请求对象文章源自JAVA秀-https://www.javaxiu.com/536.html

http协议和request请求对象文章源自JAVA秀-https://www.javaxiu.com/536.html

beanUtils工具包的使用

需求:在开发的过程中,我们经常性的会有需求将map的数据转给对象属性,如果自己来做转化实现的话过于麻烦,我们可以借助第三方的工具包来实现,操作简单方便文章源自JAVA秀-https://www.javaxiu.com/536.html

BeanUtis工具包的使用文章源自JAVA秀-https://www.javaxiu.com/536.html

1 导包 commons-beanutils-1.8.3 commons-logging-1.1.1
2 调用api方法  BeanUtils.populate(对象,map);
注意:只有map(key)和对象(属性)共同的内容 才会封装
文章源自JAVA秀-https://www.javaxiu.com/536.html
继续阅读
速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html
weinxin
资源分享QQ群
本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
  • 版权声明:本站是JAVA秀团队的技术分享社区,我们会经常分享资源和教程。
  • 转载请注明:http协议和request请求对象 - JAVA秀 ☜(ˆ▽ˆ)
评论:1   其中:访客  1   博主  0
    • bigwater04
      bigwater04 0

      沙发

    匿名

    发表评论

    匿名网友 填写信息

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    确定