vue使用axios请求后端数据

前后端分离项目的基础:

前后端跨域访问

vite.config.js中加入

复制代码
  // 1.为什么要跨域
//因为浏览器的同源策略,不同站点之间访问需要跨域
//实现跨域的方式:
  server: {
    proxy: {
      // 假设要跨域访问的后端 API 地址以 /api 开头
      '/api': { //表示拦截以/api开头的请求路径
        target: 'http://localhost:8089/', // 后端服务的实际地址
        changeOrigin: true,           //是否开启跨域
        rewrite: (path) => path.replace(/^\/api/, ''),//把/api变成空字符串
      },
    },
  },

完整vite.config.js文件

复制代码
import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  // 1.为什么要跨域
//因为浏览器的同源策略,不同站点之间访问需要跨域
//实现跨域的方式:
  server: {
    proxy: {
      // 假设要跨域访问的后端 API 地址以 /api 开头
      '/api': { //表示拦截以/api开头的请求路径
        target: 'http://localhost:8089/', // 后端服务的实际地址
        changeOrigin: true,           //是否开启跨域
        rewrite: (path) => path.replace(/^\/api/, ''),//把/api变成空字符串
      },
    },
  },
})

App.vue文件

复制代码
<template>
    <button @click="handleClick">跨域请求</button>
</template>

<script setup>
import axios from 'axios'; // 正确从 'axios' 包导入 axios  
       //将axios请求写在方法里面,通过点击事件调用方法向后端拿数据
       function  handleClick(){
           axios.get("api/Axios").then(Response=>{
               console.log(Response.data);
           })
           .catch(error=>{
               console.log('Error fetching data:',error);
           },
           )
         }
</script>

<style scoped>

</style>

Java中的servlet 服务

需要在maven的pom.xml中导入fastjson

复制代码
  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.76</version>
    </dependency>

package Study.day08;

import com.alibaba.fastjson.JSON;

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 java.io.IOException;

@WebServlet("/Axios")
public class Axios extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Student student=new Student("张三","男",23);
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/json; charset=utf-8");
        resp.getWriter().println(JSON.toJSON(student));
    }
}

后端服务访问页面:

前端成功拿到后端数据:

相关推荐
xiaoye37087 分钟前
某大厂java面试题二面20260313
java·开发语言·spring
Full Stack Developme12 分钟前
Java -jar 命令 可以有哪些参数设置
java·开发语言·jar
a11177617 分钟前
程序化几何背景生成器(html 开源)
前端·开源·html
浮笙若有梦31 分钟前
我开源了一个比 Ant Design Table 更好用的高性能虚拟表格
前端·vue.js
一只程序熊36 分钟前
vite-cool-unix-ctx] Unexpected token l in JSON at position 0
java·服务器·前端
晨晖241 分钟前
idea2017的下载,破解及使用
java·ide·intellij-idea
张元清1 小时前
React Hooks vs Vue Composables:2026 年全面对比
前端·javascript·面试
yuki_uix1 小时前
从三个自定义 Hook 看 React 状态管理的设计思想
前端·javascript
摇滚侠1 小时前
Java 项目教程《黑马商城-MQ 篇》,分布式架构项目,从开发到部署
java·分布式·架构
大漠_w3cpluscom1 小时前
如何在 clamp() 中使用 auto 值
前端·css·html