JavaEE:http请求 | 过滤器 | 同步与异步请求 | 跨域问题 | axios框架 有这一篇就够!

📃HTTP请求


▐ http超文本传输协议:

 ⦁  http超文本传输协议属于应用层协议,传输内容必须是超文本内容 (网页内容)

 ⦁  例如在网页上点击超链接,提交表单,都可以向后端发送一个http请求

 ⦁  一次http请求中包含请求行、请求头、请求体

请求行:包含请求方式(get/post)请求的资源(地址)...浏览器自动发送的

请求头:包含客户端的一些环境信息(浏览器版本、客户端ip...)

请求体:包含post请求向后端发送的数据

 

 get 请求和post 请求:

 ⦁ http请求分为get请求和post请求:

get:   超链接发送的默认是get 主要用于从后端获取数据,也可以向后端传递少量数据。

 ⦁ 发送的数据在请求地址中包含,不在请求体中,发送的数量会有限制,也不安全

post :表单 method=“post” 主要是从前端向后端发送数据的。

 ⦁ 数据不在地址栏中,在请求体中,可以发送大量数据且相对get方式更安全

▐ 一次请求的流程:

 服务器调我们的第程序这一步不用管,专门写服务器的人员已经写好了

📃过滤器


 过滤器概念:

过滤器是JavaEE中对请求和响应进行拦截的技术,通过定义一个类并实现Filter接口,可以让某些请求地址在到达servlet之前进入到指定的过滤器中,从而实现统一的处理,例如编码过滤、权限验证等进行统一过滤。

 ⦁  一个过滤器可以配置给多个资源使用

 ⦁  一个资源也可以配置多个过滤器,按照配置顺序调用

 

 过滤器的作用:

 ⦁  将前端发送的请求先进入指定过滤器进行“筛选”,或者设置公共的属性、配置、进行公共处理.

    ➱  提高代码复用性,提高可维护性     

 ⦁  可进行逻辑判断,若不满足条件,直接响应前端无需进入Servlet处理程序 " 请求拦截 "

 具体实现步骤:

Servlet 的API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。

第一步:新建一个包,结合类名,让这个类实现 Filter接口.

由于过滤器是一个独立的功能,所以我们需要新建一个包(Filter),这里我们以创建一个编码过滤器为例,注意命名规范,以Filter结尾

< 注意是 java.servlet .* 这个包里的 Filter接口 >

第二步:重写 Filter接口中的抽象方法.

import javax.servlet.*;
import java.io.IOException;public class EncodingFilter implements Filter {/*初始化过滤器*/@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}/*执行过滤器操作的方法*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {}/*过滤器销毁时执行*/@Overridepublic void destroy() {}}

📖补充: 

➱ 这里其实只重写 doFilter方法就可以了,init 和destory是默认方法且我们日常学习阶段很少用到 , init 和 destory会默认调用父类的方法 。

 第三步:在 doFilter方法中设置字符集,并让过滤器继续向后执行.

 ➱ 将下图代码写在 doFilter方法中:

        //设置请求编码集servletRequest.setCharacterEncoding("utf-8");//设置响应编码集servletResponse.setContentType("text/html;charset=utf-8");//让请求离开过滤器继续向下执行,下一个可能是过滤器或目标访问的servletfilterChain.doFilter(servletRequest,servletResponse);

 ➱ 参考下图: 

第四步:在web.xml文件中配置过滤器.

 把 servlet标签换成 filter标签即可,可参考下图代码

<!--    注册编码过滤器--><filter><filter-name>encoding</filter-name><filter-class>webserver.filter.EncodingFilter</filter-class></filter>
<!--    配置哪些地址可以进入到编码过滤器--><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern>  <!-- /* 表示所有向后端发送的请求,都进入到编码过滤器中--></filter-mapping>

通过编码过滤器的设置,我们就不需要在每个Servlet接收post请求时都设置解码字符编码了,前端发送的请求会先进入到我们的编码过滤器,可以提高代码的复用性

 

 📃同步与异步请求


同步与异步概述:

➱同步请求:当前端向后端发送请求时,此时客户端一切操作都会终止,服务器响应回来的内容会覆盖当前网页中的内容,等于一次只能做一件事,与服务器交互时其它事情就不能做了。

➱异步请求:当客户端与服务器交互时,不影响客户端页面的其他操作,同时可以做两件事情,服务器响应回来的内容不会覆盖整个页面

简单理解就是,同步 同时只能做一件事,异步 同时可以做多件事

📖 现在的前后端交互都是异步的,由于页面不用覆盖,体验感更好。

如何实现发送异步请求?

原始方式是在前端用一个JS对象: XML httpRequest 发送请求并接受响应,但由于用原始方式发送异步请求十分麻烦,所以实际中我们通常采用 axios异步框架来实现发送异步请求.

🖇️axios下载地址:axios-js.com

在五部分 ' axios框架 ' 会详细讲解 

 📃跨域问题


 什么是跨域?

 •  跨域是指从一个域名的网页去请求另一个域名的资源。

 •  比如从 www.baidu.com页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略 造成的,是浏览器对 JavaScript 施加的安全限制。

 •  跨域的严格一点的定义是:只要协议域名端口有任何一个的不同,就被当作是跨域。

 •  所谓同源是指:域名,协议,端口均相同,只要有一个不同,就是跨域。

▐ 为什么要跨域访问?

由于现在的前后端分离开发,前端和后端各自在不同的服务站,同一家公司不同项目之间要交互,比如一个location.company.com,而应用是放在app.company.com,这时想从app.company.com去访问location.company.com的资源就属于跨域。

▐ 浏览器为什么要阻止跨域访问?

为了安全,不能让其他服务器的内容肆意的响应到自己的服务中

▐ 如何解决跨域问题?

可以在前端解决,也可以在后端解决,这里我将以后端为例解决(毕竟我是后端程序员哈哈哈)

后端解决就是在响应时,告知浏览器允许来自于某些指定服务响应的内容,让浏览器认为其是安全可靠的。

具体操作如下:

在后端添加一个过滤器,这样后端在向前端响应时,告诉浏览器我们本次响应是安全的 

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebFilter(urlPatterns = "/*")
public class CorsFilter implements Filter {public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;//允许携带Cookie时不能设置为* 否则前端报错httpResponse.setHeader("Access-Control-Allow-Origin", httpRequest.getHeader("origin"));//允许所有请求跨域httpResponse.setHeader("Access-Control-Allow-Methods", "*");//允许跨域的请求方法GET, POST, HEAD 等httpResponse.setHeader("Access-Control-Allow-Headers", "*");//允许跨域的请求头httpResponse.setHeader("Access-Control-Allow-Credentials", "true");//是否携带cookiefilterChain.doFilter(servletRequest, servletResponse);}
}

 

  📃axios框架


 •  axios框架是来实现发送异步请求的

🖇️axios下载地址:axios-js.com

如果前端是Vue项目,我们在控制台输入 npm install axios 命令安装即可, 若node_modules中出现axios文件夹就表名安装成功

 • 这里我以一个普通的前端html为例,Vue项目的做法稍后会讲解...

 • 在官网中将axios.min.js 文件下载到桌面,拖到js文件夹下并导入即可。

其他的用法请参考axios官方文档! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/847695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣167. 两数之和 II - 输入有序数组

Problem: 167. 两数之和 II - 输入有序数组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义左、右指针left、right分别指向数组索引为0和索引为nums.length - 1&#xff0c;定义结果数组int[] res new int[2]用于存储索引; 2.查找&#xff1a;当判断numbers[left] nu…

机器视觉——硬件常用基础知识

光源 机器视觉中光源的作用 1&#xff09;强化特征&#xff0c;弱化背景 2&#xff09;光源打得好&#xff0c;图好了&#xff0c;后期算法更简化 3&#xff09;图好了&#xff0c;测试速度更高 各种光源的综合性能对比及为啥使用LED灯 光的颜色的选择 白色光&#xff1a;通常用…

Qwen-VL论文阅读

论文地址 其他同学的详细讲解 模型结构和参数大小 &#xff08;1&#xff09;LLM&#xff1a;Qwen-7B &#xff08;2&#xff09;Vision Encoder&#xff1a;ViT架构&#xff0c;初始化参数是 Openclip’s ViT-bigG。 在训练和推理过程中&#xff0c;输入的图像都被调整到…

C语言函数递归实现汉诺塔问题

汉诺塔问题的大概 汉诺塔问题如图三个柱子&#xff0c;利用B将A上面的盘子移到C上面&#xff0c;但是一次只能移动一个盘子并且大的盘子不可以在小的盘子上面。 当只有三个盘子的时候&#xff0c;就像图片一样移动&#xff0c;当盘子多了起来我们就很难分得清逻辑了。 这个时候…

MySQL之查询性能优化(四)

查询性能优化 MySQL客户端/服务器通信协议 一般来说&#xff0c;不需要去理解MySQL通信协议的内部实现细节&#xff0c;只需要大致理解通信协议是如何工作的。MySQL客户端和服务器之间的通信协议是"半双工"的&#xff0c;这意味着&#xff0c;在任何一个时刻&#…

神经网络与深度学习——第15章 序列生成模型

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第15章 序列生成模型&#xff0c;习题还没做先存在这里。 序列生成模型 序列概率模型 序列生成 N元统计模型 深度序列模型 模型结构 嵌入层 特征层 输出层 参数学习 评价方法 困惑度 BLEU算法 ROUGE算法 序…

Aethir: 破局算力瓶颈,构建AI时代去中心化云基础设施

科技的每一次飞跃都在重新塑造世界&#xff0c;而近年来&#xff0c;跨越式的技术革新再次引发了深刻的变革&#xff0c;那就是人工智能&#xff08;AI&#xff09;。 人工智能已然超越了此前的所有技术概念&#xff0c;成为了继互联网之后的下一个巨大浪潮。从自动驾驶汽车到…

每天复习一点小CTF知识(6.4)

NSSCTF/[FSCTF 2023]夜深人静的时候也会偷偷emo 直接爆破压缩包&#xff0c;先来数字 解压好&#xff0c;一个flag.mp3 mp3隐写&#xff0c;直接干 得一个txt文件直接开

宇泰485中继器光电隔离防雷 工业级RS485信号放大器 UT-2209正品

品牌&#xff1a;other/其他 型号&#xff1a;UT-2209 上市时间&#xff1a;2018-01-01 颜色分类&#xff1a;蓝色 信号延长器,工业级,高性能,RS-485光电隔离中继器,兼容RS-485标准,延长通信距离,即插即用. 性能特点: 内置光电隔离器及DC/DC隔离模块. 采用TVS瞬态电…

读书-《蛤蟆先生去看心理医生》

书名蛤蟆先生去看心理医生作者罗伯特戴博德状态阅读中简介该书借用《柳林风声》的故事主角蛤蟆先生&#xff0c;讲述了他接受心理咨询的故事。作者通过陷入抑郁的蛤蟆先生和心理咨询师苍鹭的互动&#xff0c;探索蛤蟆先生爱炫耀、自卑性格和抑郁情绪的来源&#xff0c;指出童年…

【Python】 如何在Python中使用小数步长值的`range()`函数?

在Python编程中&#xff0c;range()函数是一个非常常用的工具&#xff0c;它用于生成一个整数序列。然而&#xff0c;标准的range()函数只能接受整数作为步长值&#xff0c;这在某些情况下可能会限制其应用。幸运的是&#xff0c;Python提供了一些方法来实现使用小数步长的rang…

优思学院|六西格玛绿带与黑带知识体系的比较,哪个更适合你?

六西格玛作为一种广泛应用的质量管理方法&#xff0c;通过减少缺陷和变异来提高输出质量。为了实现这些目标&#xff0c;六西格玛采用数据驱动的DMAIC&#xff08;定义、测量、分析、改进、控制&#xff09;方法。在六西格玛的实施过程中&#xff0c;绿带和黑带是两个关键角色。…

【代码随想录】【算法训练营】【第28天】 [93]复原IP地址 [78]子集 [90]子集II

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 28&#xff0c;工作的周二~ 题目详情 [93] 复原 IP 地址 题目描述 93 复原 IP 地址 解题思路 前提&#xff1a;分割问题 思路&#xff1a;回溯算法&#xff0c;确定每次递归回溯的分割位置…

小短片创作-理论知识(五)

1、网格体绘制 1.UE5打开Megascan插件的材质混合器&#xff0c;创建混合材质&#xff0c;最多选择3个材质进行混合&#xff0c; 2.通过模式->网格体绘制&#xff0c;进入网格体绘制模式&#xff0c;通过select选择一个平面进行绘制&#xff0c;然后通过paint进行绘制&am…

【Mac】Keyboard Maestro for Mac(键盘大师)软件介绍及安装教程

软件介绍 Keyboard Maestro for mac&#xff08;键盘大师&#xff09;是目前Mac OS平台上功能最为齐全的Mac键盘增强工具&#xff0c;它能将你的Keyboard作用发挥到极致&#xff0c;可以根据命令或计划自动执行简单或复杂的应用程序或网站&#xff0c;文本或图像。使用Keyboar…

【TPAMI-2024】EfficientTrain++帮你降低网络训练的成本

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言论文更容易学习的模式:频域易于学习的模式:空间域统一的训练课程 EFFICIENTTRAIN计…

RIP v2路由安全认证综合实验

RIP v2路由安全认证综合实验 实验拓扑&#xff1a; 实验要求&#xff1a;通过认证防范攻击者获得通信设备的相关信息。 实验步骤&#xff1a; 1.完成基本配置 sys Enter system view, return user view with CtrlZ. [Huawei]sys AR1 [AR1]undo in e Info: Information center…

【电子书赠送福利】蘇小沐电子数据取证实务教程!风吹哪页读哪页,哪页不会撕哪页!

【电子书赠送福利】蘇小沐电子数据取证实务教程&#xff01;风吹哪页读哪页&#xff0c;哪页不会撕哪页&#xff01; 合并文章的时候才发现自己写了那么多&#xff0c;受限于时间&#xff0c;第一次合集版本只收录了已发博客的三分之二左右&#xff0c;暂时先这样&#xff01;…

外汇天眼:Bitpanda 扩大与德意志银行的合作

金融科技独角兽Bitpanda正在扩大与德意志银行的合作&#xff0c;为德国用户提供实时支付解决方案&#xff0c;以处理进出交易。 这种基于API的账户解决方案将使Bitpanda能够访问德国的IBAN账户&#xff0c;优化和增强用户体验&#xff0c;同时确保信任、速度和效率。 这只是Bi…

七大战略性新兴产业崭露头角:新能源电燃灶或将成为未来厨房新宠

近日&#xff0c;在国家发布的七大战略性新兴产业名单中&#xff0c;新能源产业赫然在列&#xff0c;作为其中的重要组成部分&#xff0c;华火新能源电燃灶凭借其独特的优势&#xff0c;正逐渐走进人们的视野&#xff0c;有望成为未来厨房的新宠。 华火新能源电燃灶作为清洁能源…