HTTP

1. 概念:Hyper Text Transfer Protocol 超文本传输协议

  • 定义了客户端和服务器通信时的数据发送格式
  • 特点:
    1. 基于TCP/IP的高级协议
    2. 默认端口号:80
    3. 基于请求/响应模型:一次请求对应一次响应
    4. 无状态:每次请求之间相互独立,不能实现通讯

2. 请求消息数据格式

2.1 请求行

POST /DemoWeb200826_war_exploded/demo2 HTTP/1.1
其信息格式为:请求方式 请求url 请求协议/版本
HTTP协议中的请求方式共有7种,其中常用的请求方式有2种:

  • GET:请求参数在请求行中,url长度有限,不太安全
  • POST:请求参数在请求体中,请求的url长度无限,相对安全

2.2 请求头

请求头信息

常用请求头:

  • User-Agent:获取浏览器信息,解决兼容问题
  • Referer:告诉服务器当前请求从哪里来。
    可用于防盗链和统计工作

2.3 请求空行

空行,分割Post 请求的请求头和请求体

2.4 请求体

封装POST请求消息的请求参数

3. Request对象

request对象和response对象均由服务器创建,我们来进行使用;
request对象用以获得请求消息,response对象用以设置响应消息;

  • request对象继承体系结构:
    HttpServletRequest的实现类由Tomcat定义。
Request对象继承体系结构图
  • 功能:
    获取请求消息数据:

    1. 获取请求行数据

    其方法如下图所示


    获取请求行数据方法
    2. 获取请求头数据
    • *String getHeader(String name):通过请求头名称获取值
    • Enumeration<String> getHeaderNames():获取所有的请求头名称
    3. 获取请求体数据
    • 获取流对象
      1. BufferedReader getReader():获取字符输入流,只能操作字符数据
      2. ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
    • 从流对象拿取数据

    其他功能:

    1. 获取请求参数通用方式
    • *String getParameter(String name):根据参数名称获取参数值
    • String[] getParameterValues(String name):根据参数名称获取参数值的数组(多用于复选框的传参)
    • Enumeration<String> getParameterNames():获取所有请求参数名称
    • *Map<String,String[]> getParameterMap():获取所有请求参数map集合
      BeanUtils包可简化数据的封装过程
      中文乱码问题:当我们使用get方式时,Tomcat8已经将get方式乱码问题解决;而当我们使用post方式时,请求信息中中文会出现乱码情况。我们需要在获取参数之前设置Request的编码格式使之与前端文本设置的编码格式相一致,代码为request.setCharacterEncoding("UTF-8");
    2. 请求转发:一种在服务器内部的资源跳转方式
    • 步骤:
      I. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
      II. 使用请求转发器对象进行转发:forward(ServletRequest request, SetvletResponse response)
      具体实现代码:request.getRequestDispatcher("/demo2").forward(request,response);
    • 特点:
      I. 浏览器地址栏路径不发生变化;
      II. 只能转发到当前服务器内部资源中;
      III. 转发过程中,只发生一次请求
    3. 共享数据
    • 域对象:一个有作用范围的对象,在范围内数据共享
    • request域:范围为一次请求,一般用于请求时转发的多个资源共享数据
    • 方法:
      void setAttribute(String name, Object obj)//存储数据
      Object getAttribute(String name)//用键取值
      void removeAttribute(String name)//通过键删除一对键值对
      
    4. 获取ServletContext

    ServletContext getServletContext()

4. 响应消息数据格式

其数据格式类似请求数据格式,分为响应行,响应头,响应空行和响应体

4.1 响应行

HTTP/1.1 200 OK
其信息格式为:请求协议/版本 响应状态码 状态码描述

响应状态码

4.2 响应头

其格式也与请求头一致,为键值对
常见响应头:

  • Content-Type:服务器告诉客户端本次响应体数据的本文和编码格式;
  • Content-disposition:告诉服务器以什么格式打开响应体数据。
    I. in-line:默认值,在当前页面内打开
    II. attachment;filename=xxx:以附件形式打开,文件下载。

4.3 响应体:传输的数据

4. Response对象

  • 设置响应行状态码:setStatus(int sc)
  • 设置响应头:setHeader(String name, String value)
  • 设置响应体:


    步骤
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容