Spring and Vue(前后端分离)
一. 创建一个Vue项目(可以使用webpack创建,也可以使用Vue-cli创建),修改src/components/HelloWorld.vue
<template>
<div class="hello">
<h1>Welcome {
{ title }}</h1>
<p>Id: <span>{
{greeting.id}}</span></p>
<p>Message: <span>{
{greeting.content}}!</span></p>
</div>
</template>
<script>
export default {
name: HelloWorld,
data () {
return {
title: Hello world,
greeting: {
id: XXX,
content: Hello World
}
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1 {
font-weight: normal;
}
</style>
在CMD中进入该项目目录,执行npm run dev,运行之后,在浏览器访问
二. 新建一个Spring项目,添加web依赖(spring-boot-starter-web)。新建HelloController.java
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin(origins="*") //允许跨域请求
public class HelloController {
@GetMapping("/resource")
public Map<String,Object> home() {
Map<String,Object> model = new HashMap<String,Object>();
model.put("id", UUID.randomUUID().toString());
model.put("content", "Hello World");
return model;
}
}
运行Spring项目,在CMD中执行$ curl localhost:8080/resource
三. 在Vue项目中,使用 axios 访问 API
1. 安装axios和vue-axios(npm install --save-dev axios vue-axios)。
2. 修改src/main.js。
//main.js import axios from axios import VueAxios from vue-axios Vue.use(VueAxios, axios);
3. 修改src/components/HelloWorld.vue,使用axios请求数据。
// components/HelloWorld.vue
mounted(){
this.axios.get(resource)
.then(response => {
console.log(response.data)
this.greeting = response.data;
})
.catch(error => {
console.log(error)
})
}
4. 修改config/index.js,设置代理服务器,解决跨域问题。
以上代理服务器内容只能在“开发模式”下才能使用。在生产模式下,只能靠服务器的nginx特性来解决js跨域问题。
5. 运行Vue项目
Spring项目和Vue项目都没有配置端口的话,先运行Spring项目,Spring项目将运行在8080端口。再运行Vue项目(npm run dev),Vue项目将运行在8081端口。
6. 浏览器中访问
参考:
上一篇:
IDEA上Java项目控制台中文乱码
