Vue3 Axios网络请求简单应用

news2025/3/13 3:28:01

cd 到项目 安装Axios:cnpm install --save axios

post传递参数 需要安装querystring 用于转换参数格式cnpm install --save querystring

运行示例:

后台接口: GetTestData.java

package com.csdnts.api;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.csdnts.dto.User;    
import com.google.gson.Gson;

/**
 * Servlet implementation class GetTest
 */
@WebServlet("/getTestData.jspx")
public class GetTestData extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public GetTestData() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO doGet() 后台解决跨越问题
		
		//数据
		List<User> users = new ArrayList<>();
		User user = new User();
		user.setName("张三丰");
		user.setAge(25);
		user.setSex("男");
		
		User user2 = new User();
		user2.setName("周芷若");
		user2.setAge(22);
		user2.setSex("女");
		
		users.add(user);
		users.add(user2);
		
		Gson gson = new Gson();
		
		//[{"name":"张三丰","sex":"男","age":25},{"name":"周芷若","sex":"女","age":22}]
		String userString = gson.toJson(users);
		
		/**设置响应头 解决跨越问题
		 * 这样,你的Servlet将允许来自任何域名的跨域请求,并且能够正常返回数据。
		 * 请注意,CORS是一种安全机制,它在浏览器中执行。因此,即使你在后台配置了CORS头信息,
		 * 浏览器仍然会根据这些头信息来判断是否允许跨域请求。
		 * 如果浏览器不支持CORS或者请求中包含不允许的头信息,仍然会被浏览器拦截。
		 * 你可以根据需要修改Access-Control-Allow-Origin头信息的值来指定允许访问的域名,
		 * 如果你希望允许来自任何域名的访问,可以将其设置为"*"。
		 * */
		response.setHeader("Access-Control-Allow-Origin", "*");
		response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
		response.setHeader("Access-Control-Allow-Headers", "Content-Type");
		response.setHeader("Access-Control-Max-Age", "3600");
		//输出到页面
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		out.print(userString);
		out.flush();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO doPost 后台没有解决跨越问题
		
		//数据
		List<User> users = new ArrayList<>();
		User user = new User();
		user.setName("张三");
		user.setAge(25);
		user.setSex("男");
		
		User user2 = new User();
		user2.setName("李四");
		user2.setAge(22);
		user2.setSex("女");
		
		users.add(user);
		users.add(user2);
		
		Gson gson = new Gson();
		
		//[{"name":"张三","sex":"男","age":25},{"name":"李四","sex":"女","age":22}]
		String userString = gson.toJson(users);
		
		//输出到页面
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		out.print(userString);
		out.flush();
	}

}

后台接口: Login.java

package com.csdnts.api;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Login
 */
@WebServlet("/login.jspx")
public class Login extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Login() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO 参数传递  在后台没有解决跨越问题,在前台处理了

		//获取参数
		String userName = request.getParameter("userName");
		String passWord = request.getParameter("passWord");

		System.out.println("userName:"+userName);
		System.out.println("passWord:"+passWord);
		
		if(userName != null && !"".equals(userName) && passWord != null && !"".equals(passWord)){
			//有数据
			if(userName.equals("admin") && passWord.equals("123456")){
				//用户名密码正确
				//输出到页面
				outPrint(response,"恭喜"+userName+"登录成功");
			}else{
				//用户名密码正确错误
				outPrint(response,"用户名或密码错误");
			}
			
		}else{
			//空
			outPrint(response,"用户名或密码为空");
		}
		
	}

	private void outPrint(HttpServletResponse response, String msg) throws IOException {
		// TODO 把结果输出到页面
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		out.print(msg);
		out.flush();
	}

}

前台代码: HelloWorld.vue

<template>
  <div class="hello">
    <h2>Vue Axios网络请求</h2>
    <h3>从网络上获取到的数据get:{{ getmsg }}</h3>
    <h3>从网络上获取到的数据post:{{ postmsg }}</h3>
    <h3>登录状态:{{ loginMsg }}</h3>
  </div>
</template>

<script>
 import axios from "axios"
 import querystring from "querystring"

export default {
  name: 'HelloWorld',
  data(){
    return{
      getmsg:"",
      postmsg:"",
      loginMsg:""
    }
  },
  // 组件生命周期方法 组件渲染完成执行此方法
  mounted(){
    axios({
      //get 请求 
      method:"get",
      //    http://www.csdnts.com 你的域名  这个是假的
      url: "http://www.csdnts.com/getTestData.jspx"   //get
     // 成功
    }).then(res =>{
      console.log(res);
      console.log(res.data);
     this.getmsg = res.data;
     // 失败
    }).catch(err =>{
      console.log(err);
      this.getmsg =err;
    })

    axios({
      // post请求 由于post请求后台没有解决跨越问题 会发生报错。AxiosError: Network Error
      // 也可以在前台 解决跨越问题 打开vue.config.js 文件 设置proxy  重启服务再次运行就可以了
      method:"post",
      url: "/getTestData.jspx"                                //post
     // 成功
    }).then(res =>{
      console.log(res);
      console.log(res.data);
     this.postmsg = res.data;
     // 失败
    }).catch(err =>{
      console.log(err);
      this.postmsg =err;
    })

  //post 传递参数 需要安装 queryString 转换参数格式   cnpm install --save querystring
    axios({
      // 请求 post
      method:"post",
      //http://www.csdnts.com/login.jspx?userName=admin&passWord=123456
      url: "/login.jspx",
      //.stringify
      data:querystring.stringify({
        userName:"admin",
        passWord:"123456"
      })
     // 成功
    }).then(res =>{
      console.log(res);
      console.log(res.data);
     this.loginMsg = res.data;
     // 失败
    }).catch(err =>{
      console.log(err);
      this.loginMsg =err;
    })

/** 
    //简写get
    axios.get("http://www.csdnts.com/getTestData.jspx")
    .then(res =>{
      console.log(res.data);
     this.getmsg = res.data;
    }).catch(err =>{
      console.log(err);
      this.getmsg =err;
    })

     //简写post
     axios.post("/login.jspx",querystring.stringify({
        userName:"admin",
        passWord:"123456"
      }))
      .then(res =>{
      console.log(res.data);
     this.loginMsg = res.data;
    }).catch(err =>{
      console.log(err);
      this.loginMsg =err;
    })
 */

  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

文件:vue.config.js 

vue.config.js 

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer:{
    proxy:{
      '/api':{
        target:'http://www.csdnts.com', //你的域名 演示用这个是假的
        changeOrigin:true
      }
    }
  }

})

扩展 :全局引用Axios

main.js

import { createApp } from 'vue'
import App from './App.vue'
import './registerServiceWorker'
//引入axios
import axios from 'axios'

// 把Axios 挂载到全局  起的名字 $axios,引用 this.$axios.get()  this.$axios.post()
const app = createApp(App)
app.config.globalProperties.$axios = axios
app.mount('#app')

使用

//引用全局的简写get
    this.$axios.get("http://www.csdnts.com/getTestData.jspx")
    .then(res =>{
      console.log(res.data);
     this.getmsg = res.data;
    }).catch(err =>{
      console.log(err);
      this.getmsg =err;
    })

     //引用全局的简写post
     this.$axios.post("/api/login.jspx",querystring.stringify({
        userName:"admin",
        passWord:"123456"
      }))
      .then(res =>{
      console.log(res.data);
     this.loginMsg = res.data;
    }).catch(err =>{
      console.log(err);
      this.loginMsg =err;
    })

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

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

相关文章

Logic 2逻辑分析器捉到的CAN帧

代码开发环境 逻辑分析仪环境 MCU芯片环境&#xff1a;RH850/U2A16 逻辑分析器(LA)抓到的CAN帧 <完>

ChatGPT与Web3.0:让聊天变得更加有趣和安全

随着数字经济时代的到来&#xff0c;Web3.0应用成为了数字世界的重要组成部分&#xff0c;同时人工智能技术也为Web3.0应用的发展提供了强大的支持。其中&#xff0c;ChatGPT作为一种强大的人工智能技术&#xff0c;在Web3.0应用中发挥着越来越重要的作用。本文将从普通用户的角…

1022.从根到叶的二进制之和

目录 一、题目 二、代码 一、题目 二、代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nu…

CTFHub php://input

1.首先看代码&#xff1a; 这里其实就应该想到的是php://伪协议&#xff1a; php://filter、php://input、php://filter用于读取源码 php://input用于执行php代码 2.其次&#xff0c;判断使用php://input伪协议 而执行php://input伪协议条件是allow_url_include是On 可以先利用…

SAP MM学习笔记24-以评估收货(评价)和非评估收货(非评价)

SAP 中 有评价入库&#xff08;评估收货&#xff09;和非评价入库&#xff08;非评估收货&#xff09;两种入库方式。 一般来说在库品目会采用评价入库&#xff0c;而消费品目&#xff0c;会采用非评价入库。 其实评价入库&#xff0c;非评价入库对外都无所谓的&#xff0c;人…

企业安全体系架构分析:开发安全架构之综合架构

上一期讲述了安全架构的安全性架构。实际上一个综合架构的设计不可能只考虑或者过分的考虑安全性&#xff0c;业务架构与安全架构的综合分析才是一个综合架构应该考虑的事情。那么如何做到鱼与熊掌兼得&#xff1f; 这里涉及一个问题&#xff0c;业务架构应该是什么样子的&…

Redis——Redis.conf详解+Redis持久化(RDB和AOF)+Redis订阅发布

配置文件 redis启动时通过配置文件启动 原生配置文件全文在网上随便搜索一下就能找到了。 单位 配置文件 unit单位 对大小写不敏感 包含 类比import&#xff0c;将其他的配置文件引入 网络 bind 127.0.0.1 // 绑定ip protected-mode yes //是否受保护 po…

4K/8K 超高清实时处理与分发

// 4K/8K超高清时代的来临对于原有系统带来很多新的挑战&#xff0c;存储、带宽、算力成本的大幅增长也是阻碍超高清推广普及的重要原因。LiveVideoStackCon 2023上海站邀请到了腾讯云音视频的刘兆瑞分享在4K/8K超高清视频在实时编码的过程中遇到的困难以及解决方案。 文/刘兆…

构建高性能小程序:优化技巧和最佳实践

第一章&#xff1a;引言 随着移动互联网的快速发展&#xff0c;小程序成为了用户获取信息和进行业务交流的重要平台之一。然而&#xff0c;小程序由于受限于硬件资源和网络环境&#xff0c;开发者需要更加关注性能优化&#xff0c;以提供流畅、高效的用户体验。本文将介绍一些构…

H5前端外包开发框架排名

以下是一些常见的网页前端开发框架以及它们的排名和特点。请注意&#xff0c;随着时间的推移&#xff0c;框架的排名和特点可能会有所变化。不同的项目和团队对于框架的选择会受到多个因素的影响&#xff0c;包括开发团队的技能、项目的规模和要求、性能需求等。北京木奇移动技…

AE使用(一)

打开AE 点击“新建合成” 注意参数&#xff1a;宽度高度是视频是横屏还是竖屏。发布在抖音上&#xff0c;需要做出来竖屏效果&#xff1b;发布在视频网站中需要做出横屏效果。没用特殊需求&#xff0c;默认参数就行。 导入素材&#xff1a;左键双击“导入素材区”的空白部分。 …

将CNKI知网文献条目导出,并导入到Endnote内

将CNKI知网文献条目导出&#xff0c;并导入到Endnote内 目录 将CNKI知网文献条目导出&#xff0c;并导入到Endnote内一、从知网上导出参考文献二、将知网导出的参考文献导入到Endnote 一、从知网上导出参考文献 从知网上导出参考文献过程和步骤如图1所示。 图1 导出的参考文献…

什么是业务敏捷,如何实现业务敏捷?

点击链接了解详情 作者介绍 前言 随着越来越多行业的企业开始关注敏捷&#xff0c;业务敏捷&#xff08;Business Agility&#xff09;成为一个新的热点。毕竟大部分的行业和组织与软件无关&#xff0c;但是依然要实现业务上的敏捷&#xff0c;所以这个系列会主要谈两点&#…

threejs使用gui改变相机的参数

调节相机远近角度 定义相机的配置&#xff1a; const cameraConfg reactive({ fov: 45 }) gui中加入调节fov的方法 const gui new dat.GUI();const cameraFolder gui.addFolder("相机属性设置");cameraFolder.add(cameraConfg, "fov", 0, 100).name(…

Android中的二级列表-ExpandableListView

Android中的二级下拉列表&#xff0c;类似于某Q的分组&#xff0c;采用ExpandableListView实现&#xff0c;适配器方法如下。 先看效果图&#xff1a;有四个分组&#xff0c;每个分组下都有一些子条目&#xff0c;可以跟着父条目展开而显示 实现代码&#xff1a; 一级列表是一…

基于STM32的超声波雷达

视频地址:1.基于STM32的超声波雷达-演示_哔哩哔哩_bilibili 备注:文档最后有所有文件的网盘地址 1. 项目展示 1.1. 最终效果 1.2. 项目硬件 全部必要硬件(左到右): ST-LINK调试器:调试下载程序stm32f103c8t6核心板1.8寸TFT显示器sg90舵机超声波传感器

题解 | #1002.Shortest path# 2023杭电暑期多校9

1002.Shortest path 签到题 记忆化搜索 题目大意 给定一个正整数 n n n &#xff0c;可以对其进行以下操作&#xff1a; 如果 n n n 能被 3 3 3 整除&#xff0c;则可以使 n n / 3 nn/3 nn/3 ;如果 n n n 能被 2 2 2 整除&#xff0c;则可以使 n n / 2 nn/2 nn/2 …

JavaScript(JavaEE初阶系列13)

目录 前言&#xff1a; 1.初识JavaScript 2.JavaScript的书写形式 2.1行内式 2.2内嵌式 2.3外部式 2.4注释 2.5输入输出 3.语法 3.1变量的使用 3.2基本数据类型 3.3运算符 3.4条件语句 3.5循环语句 3.6数组 3.7函数 3.8对象 3.8.1 对象的创建 4.案例演示 4…

【MyBatis】查询数据库

目录 一、什么是MyBatis 二、MyBatis框架的搭建 1、搭建MyBatis框架 2、设置MyBaits项目的配置 三、使用MyBatis完成数据库的操作 1、MyBatis程序中sql语句的即时执行和预编译 1.1、即时执行&#xff08;${}&#xff09; 1.2、预编译&#xff08;#{}&#xff09; 1.3、即…

多态原理解析

一 多态应用 首先&#xff0c;什么是多态呢?很多概念起初我们都是不理解的&#xff0c;就像我们刚接触继承一样&#xff0c;当学完后发现其实也没那么难&#xff0c;也挺容易理解的。 多态详细点就是多种状态&#xff0c;例如游戏中的抽宝箱&#xff0c;每个人难道都是一样的…