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. PHP脚本执行超时的解决办法
  2. linux如何使用vim显示行号语法高亮,(.vimrc简单使用)
  3. python getchar_system(“pause”)和getchar()
  4. Revvel如何将视频转码速度提升几十倍?
  5. python plt_python的plt
  6. php横排代码,20行代码原生js实现文字横向轮播
  7. 程序控制发送文件到邮箱_Kindle电子邮箱推送
  8. Functional Programming 资料收集
  9. js60秒倒计时防刷新
  10. CSDN 在线峰会——揭晓阿里云核心技术竞争力
  11. 移动端前端月历日历_前端基础:必须要知道的移动端适配(2)——分辨率
  12. CSS3 Gradient 渐变
  13. office 2003 下载
  14. nginx配置在线播放mp4格式视频
  15. python模拟点击下一页_Python使用selenium模拟点击,进入下一页(三)
  16. typora定制主题分享--绿豆沙背景主题+新night背景主题
  17. Pytorch:VGG16
  18. PHP小V脸蛋白线,HPH小v脸蛋白线好不好用?HPH小v脸蛋白线怎么用
  19. 戴尔高密度服务器性能指标,PowerEdge R630:1U机身下的2U性能
  20. hadoop离线阶段(第十三节)数据仓库、hive简介、hive安装和hive的三种交互模式

热门文章

  1. DB2模拟一个状态是UOW Queued 应用
  2. cmd的发送 mmc_MMC子系统
  3. Cozmo人工智能机器人玩具/教具完整版中文说明书和介绍(附应用下载链接)
  4. 重发布-路由策略实验1(1.8)
  5. Iterative Shrinkage Thresholding Algorithm
  6. r7 5800h和r7 5800hs哪个好 r75800h和r75800hs区别
  7. 基于STM32实现I2C从机的数字数学计算器:用于执行加法、减法和乘法操作的深度解析及应用
  8. 博达站群管理系统后台登录入口选项配置(关闭网站管理仅保留系统管理)
  9. 已移除测试人员怎么恢复_Win7系统运行Word 2007提示已停止工作怎么恢复
  10. LLMs:ColossalChat相关的开源训练数据集简介(SFT指令微调数据集+奖励模型排序数据集+RLHF数据集)、RLHF算法实现的三个阶段(监督指令微调→训练奖励模型→RLHF训练模型→​​​