springboot + vue_Springboot和Vue-cli

建立springboot项目

1、选择springboot

v2-765601bcba5facd4df1c8b52a9ea61c3_b.jpg

2、选择版本

v2-305500aeb7e421905c68e6eb837cf269_b.jpg

3、选择Lombok、SpringWeb依赖

v2-f974ea8dee274afdca446e0dbcc86827_b.jpg

4、选择代码位置

v2-e2136d6712dbffeceb9eaa8528a21fc1_b.jpg

5、完成后的界面

v2-059c51cc879f3af757b0722c2a0413b8_b.jpg

6、启动

v2-05d335449b839fea778199d4a3d759cc_b.jpg

附加如何更改启动时显示的字符拼成的字母,SpringBoot呢?也就是 banner 图案

转自 狂神说:https://dwz.cn/P1N121RT

只需一步:到项目下的 resources 目录下新建一个banner.txt 即可。图案可以到:https://www.bootschool.net/ascii 这个网站生成,然后拷贝到文件中即可!

v2-11bcd5ae32094b165e0c24c694dfcb65_b.jpg

7、修改文件为yml,写入配置

v2-99c7066bd7513b8b262e209769c4203a_b.jpg

application.yml

# yet another markup language yml -> yaml 更像json文件
spring:
application:
# 当前应用的名称
name: springboot01
profiles:
# 设置当前环境为dev(开发环境)
active: dev

application-dev.yml

# 开发环境的配置文件
# 配置服务的端口号
server:
# 默认8080
port: 8081
spring:
profiles: dev

注意:yml的层级(以空格为准)

v2-6661e25edcfc29a1908080b7d8ebcce0_b.jpg

附加

8、简单运行

v2-825219fc660b247d0dbf91f662d86a85_b.jpg

Springboot01Application.java

package com.zpark.springboot01;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author Celery
* 这个类是当前项目的启动类
* 1、将tomcat集成在springboot中,可以将项目打成.jar包,只要有Java环境就可以运行;
* 2、约定大于配置;
* 3、启动器:如果需要使用spring boot去整合其他框架或工具,只需要在依赖中增加对应的启动器即可;
* 4、自动装配;
*/
@SpringBootApplication
public class Springboot01Application {
public static void main(String[] args) {
SpringApplication.run(Springboot01Application.class, args);
}
}

R.java

package com.zpark.springboot01.util;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* @author Celery
*/
@Data
public class R {
/**
* 状态码
*/
private Integer code;
/**
* 封装的信息
*/
private String message;
/**
* 封装的数据
*/
private Map<String, Object> data = new HashMap<>();
/**
* 操作成功的状态
*
* @param message 信息
* @return R对象
*/
public static R ok(String message) {
R r = new R();
r.setCode(1);
r.setMessage(message);
return r;
}
/**
* 操作失败的状态
*
* @param message 信息
* @return R对象
*/
public static R error(String message) {
R r = new R();
r.setCode(0);
r.setMessage(message);
return r;
}
/**
* 链式增加data数据的方法
*
* @param key 数据的键
* @param value 数据的值
* @return R对象
*/
public R addData(String key, Object value) {
this.data.put(key, value);
return this;
}
}

TestController.java

package com.zpark.springboot01.controller;
import com.zpark.springboot01.util.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author Celery
*/
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("/test1")
public Object test1() {
return R.ok("请求成功!");
}
}

v2-b3ebbdd961fc0e5b7feccf60c351f07d_b.jpg

使用post方法提交数据

v2-ddc1390bf3bac9beb3928e9921fc12d4_b.jpg

TestObject.java

package com.zpark.springboot01.entity;
import lombok.Data;
import java.io.Serializable;
/**
* @author Celery
*/
@Data
public class TestObject implements Serializable {
private Integer a;
private String b;
}

当请求体的类型为application/x-www-form-urlencoded,封装的对象不需要任何注解

v2-aedb8a6d3ff40fb8f3d5a3089ce87ced_b.jpg

/**
* 使用post方法提交数据,数据是存放在'请求体'中的;
* 当请求体的类型为application/x-www-form-urlencoded,封装的对象不需要任何注解;
* 当请求体的类型为application/json,接收参数一定需要添加@RequestBody;
*
* @return
*/
@PostMapping("/test2")
public Object test2(TestObject testObject) {
return R.ok("数据接收成功!").addData("params", testObject);
}

v2-ab8b5cb28517350c2b8697ba25c7b811_b.jpg

v2-afb5be59d9d4d48e09e1f678e248f765_b.jpg

当请求体的类型为application/json,接收参数一定需要添加@RequestBody

v2-c80a9d59efcc5a48b6beda1b79ceb3e8_b.jpg

/**
* 当请求体的类型为application/json,接收参数一定需要添加@RequestBody;
*
* @param testObject
* @return
*/
@PostMapping("/test3")
public Object test3(@RequestBody TestObject testObject) {
return R.ok("数据接收成功!").addData("params", testObject);
}

v2-118072f3e90535f4a307ccc14c9cbb2f_b.jpg

v2-a6bc1b82d10bbee77e3a9127ff637121_b.jpg

9、

建立vue-cli项目

1、建立vue-cli初始模板

创建vue-cli文件夹:vue create vue_cli03

v2-792eaf14f2ebbca2f3070fea8f8bcbec_b.jpg

v2-e10d09a77046ffa961feec824c7a832e_b.jpg

v2-757ddc58a179f162d89d8c3671127759_b.jpg

v2-f639cf3de27f0efb939c3730944b91ae_b.jpg

创建完成

v2-7efcefcfdfd473eec63b1a28a2914314_b.jpg

2、使用vscode打开此文件夹

打开终端

v2-d4ad8e133a88c6910417b44c3c0f9546_b.jpg

axios

axios中文网:http://axios-js.com/
axios之Github:https://github.com/axios/axios
jsonplaceholder:http://jsonplaceholder.typicode.com/

安装命令:vue add axios

v2-29a75b1be7960f89c43ecc1034c7f8af_b.jpg

对axios.js进行设置

v2-a4362f3fb11467a7e713021bacab8ed3_b.jpg

let config = {
// baseURL: process.env.baseURL || process.env.apiUrl || ""
// 默认url,配置当前路径
// baseURL: 'http:localhost:8080',
baseURL: 'http://jsonplaceholder.typicode.com',
// timeout: 60 * 1000, // Timeout
// 超时时间
timeout: 60 * 1000,
// withCredentials: true, // Check cross-site Access-Control
// 默认携带session,证书一类的事物
withCredentials: true,
};

编写App.vue

v2-17aba78d8d6140e16f2e236775d450d9_b.jpg

// 加入script
<script>
export default {
// 钩子函数
created(){
// Axios的get请求
axios.get('/posts').then(resp => {
console.log(resp.data)
})
}
}
</script>

运行,点击网址,在浏览器中打开是否有值

npm run serve

v2-a4df9503bd90a6d27dce2742c7bb69a2_b.jpg

v2-a3ab9f526496a8a92e03bdaea93688bd_b.jpg

注:两次Ctrl+C可中断服务运行。

之后的类似

// 加入script
<script>
export default {
// 钩子函数
created(){
// // Axios的get请求
// axios.get('/posts').then(resp => {
// console.log(resp.data)
// })
// // Axios的post请求
// axios.post("/posts").then(resp => {
// // 在axios中的then的异步操作传入的箭头函数能不能使用this指代vue的实例呢?可以的
// console.log(resp.data)
// })
// // 带参数的提交Get
// axios.get('/comments',{params:{postId:1}}).then(resp => {
// console.log(resp.data)
// })
// // 带参数的提交Post
// axios.post('/posts',{title:'foo',body:'bar',userId:1}).then(resp => {
// console.log(resp.data)
// })
// axios.get('/comments',{params:{postId:1}}).then(resp => {
// console.log(resp.data)
// })
// axios.post('/posts',{title:'foo',body:'bar',userId:1},{headers:{'Content-Type':'application/x-www-urlencoded'}}).then(resp =>{
// console.log(resp.data)
// })
}
}
</script>

bootstrap和jQuery

bootstrap中文网:https://www.bootcss.com/
bootstrap:https://v3.bootcss.com/
bootstrap:https://getbootstrap.com/
Bootstrap可视化布局系统:https://www.bootcss.com/p/layoutit/
菜鸟Bootstrap可视化布局系统:https://www.runoob.com/try/bootstrap/

<-- 安装bootstrap -->
vue add bootstrap

v2-12430a85b8471e9f2781a7483d7d8e36_b.jpg

去bootstrap网找样式放到App.vue中,运行看效果(可同时查看钩子函数中传参的情况)

v2-7ba3223a4e7cf3cce9e9db8416df9af2_b.jpg

<template>
<div id="app">
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="checkbox" autocomplete="off" checked /> Checkbox 1
(pre-checked)
</label>
<label class="btn btn-primary">
<input type="checkbox" autocomplete="off" /> Checkbox 2
</label>
<label class="btn btn-primary">
<input type="checkbox" autocomplete="off" /> Checkbox 3
</label>
</div>
</div>
</template>

v2-c08b1ccaa812a9f376c0b4cf73200b91_b.jpg

<!-- 安装jQuery -->
cnpm install --save jQuery
npm install --save jsdom location navigator xmlhttprequest
npm install --save bootstrap-vue bootstrap-vue

// 加入script
<script>
// 导入jQuery
import $ from 'jQuery'
export default {
// 钩子函数
created(){
// // Axios的get请求
// axios.get('/posts').then(resp => {
// console.log(resp.data)
// })
// // Axios的post请求
// axios.post("/posts").then(resp => {
// // 在axios中的then的异步操作传入的箭头函数能不能使用this指代vue的实例呢?可以的
// console.log(resp.data)
// })
// // 带参数的提交Get
// axios.get('/comments',{params:{postId:1}}).then(resp => {
// console.log(resp.data)
// })
// // 带参数的提交Post
// axios.post('/posts',{title:'foo',body:'bar',userId:1}).then(resp => {
// console.log(resp.data)
// })
// axios.get('/comments',{params:{postId:1}}).then(resp => {
// console.log(resp.data)
// })
// axios.post('/posts',{title:'foo',body:'bar',userId:1},{headers:{'Content-Type':'application/x-www-urlencoded'}}).then(resp =>{
// console.log(resp.data)
// })
// 导入jQuery后,使用传统方式使用
$.get('http://jsonplaceholder.typicode.com/posts',function (result) {
console.log(result)
})
}
}
</script>

最终效果:

v2-a525178aee307074e711137cd82b2593_b.jpg

:cnpm安装失败时,可换npm,两个可互换使用,最终效果一致

转自HT_Jonson:https://www.jianshu.com/p/261eea9b3f4d

Unexpected end of JSON input while parsing near错误解决办法,安装命令:npm cache clean --force

判断是否形成跨域,要看当前的网页的URL与请求数据的URL的协议、域名、端口号是否一致,三者有一个不一样都会形成跨域

http://localhost:8080
http://localhost:8081

方法一:springboot解决跨域问题

方法二:前台解决前台代理服务器,然后用服务器进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值