Http

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

传输协议 : 定义了,客户端和服务器端通信时,发送数据的格式

特点:

基于TCP/IP的高级协议

默认端口号:8080

基于请求/响应模型的;一次请求对应一次响应

Http协议是无状态的,每次请求都是相互独立的,不能交互数据

请求消息数据格式:

请求行

请求方式 请求url 请求协议/版本

请求方式:(Http协议有7中请求方式,常用2中)

get:

请求参数在请求行中,在Url后

请求的url是有限度的

不太安全

post:

请求参数在请求体中

请求参数的url长度没有限制

相对安全

请求头 : 客户端浏览器告诉服务器一些信息

请求头名称 : 请求头值

User-Agent : 浏览器告诉服务器, 我访问你使用的浏览器版本信息

可以在服务器端获取该头的信息,解决浏览器的兼容性问题

Referer: 告诉服务器,当前请求从哪里来?

​ 作用:

防盗链:原理:在下载服务器上,来判断一下上一步提交的网址(来源)是不是我要求的,如果是我要求的,那么可以下载,如果不是,不让下载

统计工作

请求空行

空行,就是用于分割POST请求的请求头,和请求体的

请求体 ( 正文 )

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

Request:(获取请求消息)

Request 与 Response 对象的原理

首先我们的浏览器给我发了请求(请求消息),然后我们的请求带着请求消息找我们的资源,因为我们在服务器端配置了 url-pattern 找到这个类后 Tomcat会自动执行这个方法 也就是:tomcat 服务器会根据请求的URL中的资源路径,创建对应的ServletDemo01的对象

tomcat服务器,会创建request和response对象,request对象中封装请求消息数据

将request和response两个对象 传递给service方法,并且调用了Service方法

我们可以通过request对象来获取请求消息数据,通过response对象设置响应消息数据

(浏览器回复响应消息) 服务器给浏览器做出响应之前,会从response对象中拿出程序员设置的响应消息数据

Request 继承体系结构

ServletRequest接口 继承 HttpServletRequest

HttpServletRequest 接口 实现了RequestFacade类(Tomcat)

Request 获取请求行数据

GET /Demo02_war_exploded /sd/demo?name=zhangsan HTTP/1.1

方法 :

获取请求方式 :GET

String getMethod()

获取虚拟目录 :Demo02_war_exploded

String getContextPath()

获取Servlet路径 :sd

String getServletPath()

获取get方式请求参数:name=zhangsan

String getQueryString()

获取请求URI:/Demo02_war_exploded /sd

String getRequestURI(); /Demo02_war_exploded /sd

StringBuffer getRequestURL() http://localhost//Demo02_war_exploded /sd

URI :统一资源标识符 (URI 要比URL小)

URL :统一资源定位符

获取协议及版本 :HTTP/1.1 (了解就好)

String getProtocol()

获取客户机的IP地址: ( 了解就好)

String getRemoteAddr()

代码演示 上面的方法

@WebServlet("/sd")

public class ServiceDemo01 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request,response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取请求方式 GET

System.out.println(request.getMethod());

//获取虚拟目录 Demo02_war_exploded

System.out.println(request.getContextPath());

//获取Servlet路径 sd

System.out.println(request.getServletPath());

//获取get方式请求参数

System.out.println(request.getQueryString());

//获取请求URI

System.out.println(request.getRequestURI());

System.out.println(request.getRequestURL());

//协议和版本

System.out.println(request.getProtocol());

//获取客户机IP

System.out.println(request.getRemoteAddr());

}

}

获取请求头数据

方法:

String getHaeder (String name) :通过请求头的名称获取请求的值

Enumeration getHeaderNames(): 获取所有的请求头的名称

@WebServlet("/sd2")

public class ServiceDemo02 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request,response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取所有的请求头名称

Enumeration headerNames = request.getHeaderNames();

while (headerNames.hasMoreElements()){

String s = headerNames.nextElement();

String header = request.getHeader(s);

System.out.println(s+header);

}

}

}

//演示获取请求头数据:user-agent 来查看当前我们用的什么浏览器

String agent = request.getHeader("user-agent");

if (agent.contains("Chrome")){

System.out.println("谷歌");

}else if (agent.contains("Firefox")){

System.out.println("火狐");

}

防盗链:(演示获取请求头数据 : referer)

第一个项目 模拟官方 就叫Demo02

@WebServlet("/sd4")

public class ServletDemo03 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//演示获取请求头数据 : referer

String referer = request.getHeader("referer");

if(referer != null){

if (referer.contains("/Demo02_war_exploded")){

System.out.println("看电影");

}else {

System.out.println(referer);

System.out.println("来我这里看电影");

}

}

}

}

页面:

官方的电影院

点我上天堂

在新建一个项目 就叫 Demo04(注意 要新建一个Tomcat 还要区分端口号)

index.jsp 页面

我自己的电影院

点我上天堂

先启动 Demo04 在启动 Demo02

进入Demo02 后点击 点我上天堂

在 Demo04 里点击

获取请求体数据

请求体:只有POST请求方式才有请求体,在请求体中封装了POST请求的请求参数

获取流对象

BufferedReader getReader( ) ; 获取字符输入流,对应的只能操作字符数据

ServletInputStream getInputStream ( ) : 获取字节输入流,可以操作所有的类型的数据

再从流对象中拿数据

代码演示:

@WebServlet("/std4")

public class ServletDemo04 extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

BufferedReader reader = request.getReader();

response.setContentType("text/html;charset=utf-8");

String len=null;

while ((len=reader.readLine())!=null){

response.getWriter().write(len);

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

}

页面:

注册

用户名:

密 码:

java request获取内容_JavaWeb - Http请求消息 - Request获取请求消息(基础)代码演示 - 小黑电脑...相关推荐

  1. java 屏蔽地域性访问_javaweb利用filter拦截未授权请求

    项目上有个小需求,要限制访问者的IP,屏蔽未授权的请求.该场景使用过滤器来做再合适不过了. SecurityFilter.java: public class SecurityFilter imple ...

  2. java 获得站点地址_JavaWeb项目里面的路径获取方法总结

    仅为资源搬运,个人还未充分理解... request.getRealPath不推荐使用request.getRealPath("") 这个方法已经不推荐使用了,那代替它的是什么方法 ...

  3. vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...

    在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...

  4. php发送get、post请求获取内容的几种方法

    方法1: 用file_get_contents 以get方式获取内容<?php $url='http://www.domain.com/'; $html = file_get_contents( ...

  5. java mediatype属性_基于ServletRequest实现请求获取内容类型的媒体类型MediaType、字符集Charset的工具类ContentTypeUtil...

    一.源码说明 基于springframework的org.springframework.http.MediaType通过ServletRequest对象分别获取到媒体类型.字符集类型,具体工具类Co ...

  6. java 请求响应_java http接口请求响应 request response

    接口类: 1 package org.sunshine.dcda.epg.wechat.controller.niao; 2 3 import javax.servlet.http.HttpServl ...

  7. java获取jsp页面参数_jsp页面中获取servlet请求中的参数方法总结

    jsp页面中获取servlet请求中的参数的办法详解 在JAVA WEB应用中,如何获取servlet请求中的参数,并传递给跳转的JSP页面?例如访问http://localhost:8088/bbs ...

  8. Request —— 获取请求行数据 获取请求头数据 获取请求体数据

    1. request对象和response对象的原理     1. request和response对象是由服务器创建的.我们来使用它们     2. request对象是来获取请求消息,respon ...

  9. java创建response对象_javaweb入门-----request与response的作用

    request对象和request对象的原理 1.request和response对象request对象和request对象的原理时由服务器创建的,我们来使用它们 2.request对象是来获取请求消 ...

最新文章

  1. JAVA逆向反混淆-追查Burpsuite的破解原理(转)
  2. springclould feign客户端添加全局参数
  3. 正则学习小结(1)-基础
  4. 高并发编程基础(java.util.concurrent包常见类基础)
  5. ArrayList与LinkedList的比较
  6. 1.2 位于Shell脚本第一行的#!
  7. 《社交网站界面设计(原书第2版)》——3.9 使用生命周期
  8. java 对数取反_如何理解「对数」?
  9. oracle 操作 卡,oracle 12c 数据库上编写SQL语句时卡顿的问题解决
  10. mac上配置java jdk环境
  11. Orcad CIS本地库添加器件
  12. [翻译] TensorFlow 分布式之论文篇 “TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Syst
  13. 儿童识字量测试3090字(倪铂颖)
  14. 用PS给证件照排版教程
  15. 安卓手机如何设置http代理?
  16. 软件质量保证与测试技术实验报告(三)静态测试
  17. YOLOv5 修改detect模块以方便调用(单类型目标)
  18. HCIE考试考哪些?
  19. 音视频编辑合成,配音合成视频。
  20. 学习设备树之(十一)Backlight

热门文章

  1. python进行windows系统UI自动化之【pyautoit】
  2. 网络模型 工程师必备
  3. 基于python的网络爬虫系统_基于Python对网络爬虫系统的设计与实现.pdf
  4. mangodb 高频数据_【mongoDB高级篇③】综合实战(1): 分析国家地震数据
  5. Android 来电(包括铃声),短信拦截的实现方法
  6. macdown code编辑不能换行的问题
  7. cheerio 笔记
  8. 【线性代数】向量组的秩与最大线性无关向量组
  9. 李开复给中国大学生的七封公开信(其一)
  10. 欺骗的艺术(内容介绍)