java request获取内容_JavaWeb - Http请求消息 - Request获取请求消息(基础)代码演示 - 小黑电脑...
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获取请求消息(基础)代码演示 - 小黑电脑...相关推荐
- java 屏蔽地域性访问_javaweb利用filter拦截未授权请求
项目上有个小需求,要限制访问者的IP,屏蔽未授权的请求.该场景使用过滤器来做再合适不过了. SecurityFilter.java: public class SecurityFilter imple ...
- java 获得站点地址_JavaWeb项目里面的路径获取方法总结
仅为资源搬运,个人还未充分理解... request.getRealPath不推荐使用request.getRealPath("") 这个方法已经不推荐使用了,那代替它的是什么方法 ...
- vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...
在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...
- php发送get、post请求获取内容的几种方法
方法1: 用file_get_contents 以get方式获取内容<?php $url='http://www.domain.com/'; $html = file_get_contents( ...
- java mediatype属性_基于ServletRequest实现请求获取内容类型的媒体类型MediaType、字符集Charset的工具类ContentTypeUtil...
一.源码说明 基于springframework的org.springframework.http.MediaType通过ServletRequest对象分别获取到媒体类型.字符集类型,具体工具类Co ...
- java 请求响应_java http接口请求响应 request response
接口类: 1 package org.sunshine.dcda.epg.wechat.controller.niao; 2 3 import javax.servlet.http.HttpServl ...
- java获取jsp页面参数_jsp页面中获取servlet请求中的参数方法总结
jsp页面中获取servlet请求中的参数的办法详解 在JAVA WEB应用中,如何获取servlet请求中的参数,并传递给跳转的JSP页面?例如访问http://localhost:8088/bbs ...
- Request —— 获取请求行数据 获取请求头数据 获取请求体数据
1. request对象和response对象的原理 1. request和response对象是由服务器创建的.我们来使用它们 2. request对象是来获取请求消息,respon ...
- java创建response对象_javaweb入门-----request与response的作用
request对象和request对象的原理 1.request和response对象request对象和request对象的原理时由服务器创建的,我们来使用它们 2.request对象是来获取请求消 ...
最新文章
- JAVA逆向反混淆-追查Burpsuite的破解原理(转)
- springclould feign客户端添加全局参数
- 正则学习小结(1)-基础
- 高并发编程基础(java.util.concurrent包常见类基础)
- ArrayList与LinkedList的比较
- 1.2 位于Shell脚本第一行的#!
- 《社交网站界面设计(原书第2版)》——3.9 使用生命周期
- java 对数取反_如何理解「对数」?
- oracle 操作 卡,oracle 12c 数据库上编写SQL语句时卡顿的问题解决
- mac上配置java jdk环境
- Orcad CIS本地库添加器件
- [翻译] TensorFlow 分布式之论文篇 “TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Syst
- 儿童识字量测试3090字(倪铂颖)
- 用PS给证件照排版教程
- 安卓手机如何设置http代理?
- 软件质量保证与测试技术实验报告(三)静态测试
- YOLOv5 修改detect模块以方便调用(单类型目标)
- HCIE考试考哪些?
- 音视频编辑合成,配音合成视频。
- 学习设备树之(十一)Backlight