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

后端服务访问页面:

前端成功拿到后端数据:

相关推荐
backordinary3 分钟前
微服务学习笔记25版
java·java-ee
荣达18 分钟前
koa洋葱模型理解
前端·后端·node.js
ZZHow102422 分钟前
Maven入门_简介、安装与配置
java·笔记·maven
xiaoyan201530 分钟前
Electron38-Winchat聊天系统|vite7+electron38+vue3电脑端聊天Exe
vue.js·electron·vite
小蕾Java31 分钟前
Java 开发工具,最新2025 IDEA使用(附详细教程)
java·ide·intellij-idea
Tans540 分钟前
[小笔记] Java 集合类
java
reembarkation43 分钟前
使用pdfjs-dist 预览pdf,并添加文本层的实现
前端·javascript·pdf
reembarkation1 小时前
vue-pdf 实现blob数据的预览
javascript·vue.js·pdf
李明卫杭州1 小时前
JavaScript中的dispatchEvent方法详解
javascript
KenXu1 小时前
F2C-PTD工具将需求快速转换为代码实践
前端