过滤器、同步异步、跨域问题、json数据格式字符串

1、过滤器

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

下面是一个编码过滤的示例

package com.ffyc.dormserver.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(urlPatterns = "/*")
public class EncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("过滤器初始化");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//设置请求编码集servletRequest.setCharacterEncoding("utf-8");//设置响应编码集servletResponse.setContentType("text/html;charset=utf-8");//让请求离开过滤器,继续向下执行,下一个可能是过滤器,也可能是目标访问的servletfilterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {System.out.println("过滤器销毁");}
}

2、同步、异步概念

同步 :同时只能做一件事
同步请求:当前端向后端发送请求时,此时客户端一切操作都会终止,服务器响应回来的内容会覆盖当前网页中的内容,一次只能做一件事,与服务器交互其他事情就不能做了
异步:同时做多件事情
异步请求:当客户端与服务器交互式,不影响客户端页面的其他操作,同时做俩件事情 服务器响应回来的内容不会覆盖整个页面

3、如何发送异步请求

1、原始方式:在前端使用一个js对象,XMLhttpRequest 发送请求,接受响应

//异步请求方式 1、原始方式var httpobj=new XMLHttpRequest();httpobj.open("get","http://127.0.0.1:8088/domServer/checkaccount="+account);httpobj.send(null); //发送请求//2、执行回调函数,接受响应的结果httpobj.onreadystatechange=function(){document.getElementById("msg").innerHTML = httpobj.responseText;//后端响应的内容} 

2、异步框架 axios框架

安装axios:<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js 安装路径

安装到桌面,复制到项目js中,导入html中进行使用

// 2、axios请求框架 get请求调用get方法 post请求调用post方法axios.get("http://127.0.0.1:8088/domServer/check?account="+account).then(function(resp){console.log(resp);if(resp.status==200){document.getElementById("msg").innerHTML = resp.data;//后端响应的内容}})

 在vue项目中axios框架

axios是一个HTTP的网络请求库,打开终端进行安装  npm install axios

在main.js中配置axios,导入axios    import axios from 'axios';

设置访问后台服务器地址:axios.defaults.baseURL="http://127.0.0.1:9999/api/";

9999是服务器端口号,api是后端服务器项目名称,可以根据自己情况进行修改

将axios挂载到vue全局对象中,使用this可以直接访问  Vue.prototype.$http=axios;

$http是给axios起的别名,方便后面使用

使用get或post方法即可发送对应的请求then方法中的回调函数会在请求成功或失败时触发通过回调函数的形参可以获取响应内容,或错误信息

基本语法:

this.$http.get(地址?Key=value&key2=val1).then(function(response){ })

this.$http.post("login",{key:"value",key2:"val2"}).then(function(response){ })

异步请求出现跨域问题

4、前后端异步交互时出现跨域问题

1、跨域问题:不同服务器间进行访问,浏览器不允许js接收来自其他的服务器响应的数据,只要协议,域名,端口,任何一个不同,都属于跨域访问。

2、为什么要跨域访问

前后端分离(前端和后端各自在不同的服务中)同一家公司不同项目要交互

3、浏览器为什么要阻止跨域访问

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

4、如何解决跨域问题:前端解决、后端解决

后端解决:在响应时,告知浏览器允许来自某些指定服务响应的内容。(下面是详细代码)

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);}
}

 5、json数据格式的字符串

是一种同用的数据格式,java和js都认识,是现在前后端交互的一种标配使用方式

{属性:值,属性:值...}

使用前要进行要在pom.xml进行配置

 <!--jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</version></dependency>

 /*不同语言之间进行数据交换json :javaScript object notation js对象表现形式"{key:value,key:name}"  "{id:10,name:"张三"}"在后端将Java对象转为json格式的字符串有很多的第三方组件,可以直接将Java对象转为json格式的字符串*/Student student=new Student(1,name,"男","133333333");String str=new ObjectMapper().writeValueAsString(student);

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

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

相关文章

Java 基础语法教程

1. 类和对象 Java 是一种面向对象的编程语言&#xff0c;它使用类和对象来组织代码。一个 Java 程序可以认为是一系列对象的集合&#xff0c;而这些对象通过调用彼此的方法来协同工作。 1.1 类 类&#xff08;Class&#xff09;是一个模板&#xff0c;它描述一类对象的行为和…

浅聊 Three.js 屏幕空间反射SSR-SSRShader

浅聊 Three.js 屏幕空间反射SSR(2)-SSRShader 前置基础 渲染管线中的相机和屏幕示意图 -Z (相机朝向的方向)||| -------------- <- 屏幕/投影平面| | || | || | (f) | <- 焦距| | ||…

在 Ubuntu 22.04/20.04 安装 CVAT 和 SAM 指南

1. 安装 Docker 和 Docker Compose sudo apt-get update sudo apt-get --no-install-recommends install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-ke…

跨平台游戏引擎 Axmol-2.1.4 发布

2.1.4 版本是用于错误修复和改进的次要 LTS 版本&#xff0c;感谢 axmol 的所有贡献者 相对于 2.1.3 的重大变化&#xff1a; 添加 JobSystem 支持添加 cmake 选项 AX_WASM_INITIAL_MEMORY添加 Linux WebView 实现改进 curl 下载实现 使用curl_multi_poll代替select使用curl_…

java-如何打破双亲委派机制

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;双亲委派模型是一种类加载器之间的层次模型&#xff0c;它定义了类加载的规则&#xff0c;即当一个类需要被加载时&#xff0c;JVM默认的行为是首先请求父类加载器加载该类&#xff0c;只有当父类加载器无法加载该类时&a…

【BUG】已解决:error: legacy - install - failure

error: legacy - install - failure 目录 error: legacy - install - failure 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&…

51单片机14(独立按键实验)

一、按键介绍 1、按键是一种电子开关&#xff0c;使用的时候&#xff0c;只要轻轻的按下我们的这个按钮&#xff0c;按钮就可以使这个开关导通。 2、当松开这个手的时候&#xff0c;我们的这个开关&#xff0c;就断开开发板上使用的这个按键&#xff0c;它的内部结构&#xff…

免费分享:2021年度全国城乡划分代码(附下载方法)

《关于统计上划分城乡的规定》指出&#xff1a;“本规定作为统计上划分城乡的依据&#xff0c;不改变现有的行政区划、隶属关系、管理权限和机构编制&#xff0c;以及土地规划、城乡规划等有关规定”。统计用区划代码和城乡划分代码用于统计工作&#xff0c;需要在其他工作中使…

Transforms

深度学习中的Transforms 概述 Transforms在深度学习中起到了关键的作用&#xff0c;主要用于数据预处理、特征提取和数据增强&#xff08;Data Augmentation&#xff09;。通过对数据进行各种变换&#xff0c;能够提升模型的训练效果和泛化能力。 数据增强&#xff08;Data …

回溯题目的套路总结

前言 昨天写完了LeeCode的7&#xff0c;8道回溯算法的题目&#xff0c;写一下总结&#xff0c;这类题目的共同特点就是暴力搜索问题&#xff0c;排列组合或者递归&#xff0c;枚举出所有可能的答案&#xff0c;思路很简单&#xff0c;实现起来的套路也很通用&#xff0c;一…

java题目之抽奖以及优化方式

public class Main9 {public static void main(String[] args) {int[]arr{ 2,588,888,1000,10000};int [] newArrnew int[arr.length];//3.抽奖Random rnew Random();//因为有5个奖项,所以这里循环五次for (int i 0; i <5 ; ) {//获取随机索引int randomIndexr.nextInt(arr…

前端-模拟请求数据mook第三方插件 json-server的使用

大纲 第一步下载第二配置mook的数据源第三配置启动命令第四运行模拟服务第五测试接口如果要进行更复杂的操作 第一步下载 npm install json-server -D"devDependencies": {"json-server": "^1.0.0-beta.1"}第二配置mook的数据源 在项目的根目录…

图纸为什么需要加密?2024超好用的图纸加密软件推荐

图纸通常包含产品的设计细节、规格和技术信息&#xff0c;这些都是公司的核心知识产权。加密可以防止未经授权的访问和复制&#xff0c;避免知识产权被盗用或侵权。 图纸加密软件对于保护企业的知识产权和商业秘密至关重要&#xff0c;特别是在CAD&#xff08;计算机辅助设计&…

内网安全:各类密码的抓取

Mimikatz在线读取SAM文件 离线读取SAM文件 在线读取lsass进程 离线读取lsass进程 BrowserGhost浏览器密码抓取 Sharp-HackBrowserData浏览器密码抓取 SharpDecryptPwd数据库密码抓取 LaZagne各类密码的抓取 Windows其他类型抓NTLM Hash工具 sam文件和lsass进程就是Wind…

员工的成长=公司潜力的发展,最大的误区99.99%机器视觉公司不培训员工

员工成才最好的方式&#xff0c;绝对是培训。 机器视觉公司培训99.99%从来不培训员工的&#xff0c;不训练员工。 员工不变得优秀&#xff0c;如何更好的服务客户&#xff0c;无法搞定客户。 去和客户商务谈判&#xff0c;让自己员工去送死&#xff0c; 不去学习如何搞定客户&a…

谷粒商城-商品上架

1.sku在es中的存储模型分析(spring整和es) es中所有数据存在内存中,内存产品贵,能节省就节省,只保存有用的信息 两种保存方法:(空间换时间,时间换空间): 我们选空间换时间 ES中放这些东西: "mappings": { "properties": { "skuId"…

【C++】deque以及优先级队列

容器适配器 deque的介绍deque的原理介绍 priority_queue的介绍与使用priority_queue的介绍priority_queue的使用constructor&#xff08;构造函数&#xff09;emptypushpoptopsize priority_queue的模拟实现 仿函数何为适配器容器适配器deque的缺陷选择deque作为适配器的理由ST…

使用element UI Cascader 级联选择器实现省/市/区选择

<template><div><label>位置</label><el-cascader:options"pcaTextArr"v-model"selectedOptions"change"handleChangeAddress":props"{expandTrigger: hover,multiple: true,checkStrictly: true,emitPath: fal…

mailcow搭建安装教程:如何搭建专属邮箱!

mailcow搭建安装教程怎么用&#xff1f;怎么有效搭建邮箱服务器&#xff1f; 随着电子邮件在工作和生活中的重要性日益增加&#xff0c;拥有一个专属的电子邮件服务器变得越来越有吸引力。AokSend将详细介绍如何通过mailcow搭建一个专属邮箱&#xff0c;为你提供全方位的邮件管…

看起来很炫酷的科技感登录页面模板HTML

代码下载地址&#xff1a; 炫酷科技感登录页面模板带动画 (bootstrapmb.com)https://www.bootstrapmb.com/item/11891