Java之Spring Boot+Vue+Element UI前后端分离项目

这篇具有很好参考价值的文章主要介绍了Java之Spring Boot+Vue+Element UI前后端分离项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

typeId : this.typeId,

}).then((res) => {

this.$router.push(“/”);

this.$message.success(“文章发布成功!”);

}).catch(() => {

this.$message.error(“文章发布失败!”);

});

},

handleAvatarSuccess(res, file) {

this.imageUrl = URL.createObjectURL(file.raw);

this.thumbnail = “http://localhost:9090/img/” + res;

},

selectType(typename,id) {

this.typeName = typename;

this.typeId = id;

},

beforeAvatarUpload(file) {

const isJPG = file.type === ‘image/jpeg’;

const isLt2M = file.size / 1024 / 1024 < 2;

if (!isJPG) {

this.$message.error(‘上传头像图片只能是 JPG 格式!’);

}

if (!isLt2M) {

this.$message.error(‘上传头像图片大小不能超过 2MB!’);

}

return isJPG && isLt2M;

}

}

}

三、设置Axios发起请求统一前缀的路径


https://code100.blog.csdn.net/article/details/123302546

1、HelloWorld.vue

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

getInfo() {

this.$http.get(‘blog/queryBlogByPage?title=’ + this.title + ‘&page=’ + this.page + ‘&rows=’ + this.rows)

.then(response => (

this.info = response.data,

this.total = this.info.total,

this.totalPage = this.info.totalPage,

this.items = this.info.items

)).catch(function (error) { // 请求失败处理

console.log(error);

});

},

2、Article.vue

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

getInfo() {

this.$http.get(‘/blog/queryBlogArticleById?id=’ + this.id )

.then(response => (

this.info = response.data,

this.title = this.info.title

)).catch(function (error) { // 请求失败处理

console.log(error);

});

},

selectBlog() {

this.page = 1;

this.rows = 10;

let startTime = (new Date(((this.value1+“”).split(“,”)[0]))).getTime();

let endTime = (new Date(((this.value1+“”).split(“,”)[1]))).getTime();

this.startBlogTime = startTime;

this.endBlogTime = endTime;

this.getInfo();

},

like(){

this.$http.get(‘blog/blogLikeId?id=’ + this.id );

this.getInfo();

},

四、实现登录功能


1、创建ConsumerService

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

package cn.itbluebox.springbootcsdn.service.Impl;

import cn.itbluebox.springbootcsdn.domain.Consumer;

import cn.itbluebox.springbootcsdn.enums.ExceptionEnum;

import cn.itbluebox.springbootcsdn.exception.BlException;

import cn.itbluebox.springbootcsdn.mapper.ConsumerMapper;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Propagation;

import org.springframework.transaction.annotation.Transactional;

@Service

@Transactional(propagation = Propagation.REQUIRED)

public class ConsumerService {

@Autowired

private ConsumerMapper consumerMapper;

public Boolean checkData(String data, Integer type) {

Consumer consumer = new Consumer();

//判断数据类型

switch (type) {

case 1:

consumer.setEmail(data);

break;

case 2:

consumer.setPhone(Long.parseLong(data));

break;

default:

return null;

}

return consumerMapper.selectCount(consumer) == 0;

}

public Consumer queryUser(String email, String password) {

// 查询

Consumer consumer = new Consumer();

consumer.setEmail(email);

consumer.setPassword(password);

Consumer consumer1 = this.consumerMapper.selectOne(consumer);

// 校验用户名

if (consumer1 == null) {

return null;

}

// 用户名密码都正确

return consumer1;

}

public String saveConsumer(Consumer consumer) {

int insert = consumerMapper.insert(consumer);

if (insert != 1) {

throw new BlException(ExceptionEnum.CONSUMER_SAVE_ERROR);

}

return insert + “”;

}

public Consumer queryConsumerById(Long id) {

Consumer consumer = new Consumer();

consumer.setId(id);

Consumer consumer1 = consumerMapper.selectOne(consumer);

consumer1.setPassword(“”);

return consumer1;

}

}

2、创建AuthService

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

package cn.itbluebox.springbootcsdn.properties;

import cn.itbluebox.springbootcsdn.utils.RsaUtils;

import lombok.Data;

import lombok.extern.slf4j.Slf4j;

import org.springframework.boot.context.properties.ConfigurationProperties;

import javax.annotation.PostConstruct;

import java.io.File;

import java.security.PrivateKey;

import java.security.PublicKey;

@ConfigurationProperties(prefix = “sc.jwt”)

@Data

@Slf4j

public class JwtProperties {

private String secret; // 密钥

private String pubKeyPath;// 公钥

private String priKeyPath;// 私钥

private int expire;// token过期时间

private PublicKey publicKey; // 公钥

private PrivateKey privateKey; // 私钥

private String cookieName;

private Integer cookieMaxAge;

// private static final Logger logger = LoggerFactory.getLogger(JwtProperties.class);

/**

  • @PostContruct:在构造方法执行之后执行该方法

*/

@PostConstruct

public void init(){

try {

File pubKey = new File(pubKeyPath);

File priKey = new File(priKeyPath);

if (!pubKey.exists() || !priKey.exists()) {

// 生成公钥和私钥

RsaUtils.generateKey(pubKeyPath, priKeyPath, secret);

}

// 获取公钥和私钥

this.publicKey = RsaUtils.getPublicKey(pubKeyPath);

this.privateKey = RsaUtils.getPrivateKey(priKeyPath);

} catch (Exception e) {

log.error(“初始化公钥和私钥失败!”, e);

throw new RuntimeException();

}

}

}

3、创建AuthController

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

package cn.itbluebox.springbootcsdn.web;

import cn.itbluebox.springbootcsdn.enums.ExceptionEnum;

import cn.itbluebox.springbootcsdn.exception.BlException;

import cn.itbluebox.springbootcsdn.properties.JwtProperties;

import cn.itbluebox.springbootcsdn.service.Impl.AuthService;

import cn.itbluebox.springbootcsdn.utils.CookieUtils;

import cn.itbluebox.springbootcsdn.utils.JwtUtils;

import cn.itbluebox.springbootcsdn.utils.UserInfo;

import lombok.extern.slf4j.Slf4j;

import org.apache.commons.lang3.StringUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.context.properties.EnableConfigurationProperties;

import org.springframework.http.HttpStatus;

import org.springframework.http.ResponseEntity;

import org.springframework.web.bind.annotation.CookieValue;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@RestController

@EnableConfigurationProperties(JwtProperties.class)

@Slf4j

public class AuthController {

@Autowired

private AuthService authService;

@Autowired

private JwtProperties prop;

/**

  • 登录授权

  • @return

*/

@GetMapping(“accredit”)

public ResponseEntity authentication(

@RequestParam(“email”) String email,

@RequestParam(“password”) String password,

HttpServletRequest request,

HttpServletResponse response) {

// 登录校验

System.out.println(" 登录校验 登录校验 登录校验 登录校验");

String token = authService.authentication(email, password);

if (StringUtils.isBlank(token)) {

log.info(“用户授权失败”);

return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);

}

Cookie cookie = CookieUtils.setGetCookie(request, response, prop.getCookieName(), token, prop.getCookieMaxAge(), true);

return ResponseEntity.ok(cookie);

}

@GetMapping(“verify”)

public ResponseEntity verify(

@CookieValue(“SC_TOKEN”) String token,

HttpServletRequest request,

HttpServletResponse response

) {

//解析token

System.out.println(“解析token解析token解析token解析token解析token”);

try {

UserInfo userInfo = JwtUtils.getUserInfo(prop.getPublicKey(), token);

//刷新token,重新生成token

String newToken = JwtUtils.generateToken(userInfo, prop.getPrivateKey(), prop.getExpire());

//写回cookie

CookieUtils.setCookie(request, response, prop.getCookieName(), newToken, prop.getCookieMaxAge(), true);

//返回用户信息

return ResponseEntity.ok(userInfo);

} catch (Exception e) {

//token以过期,或者token篡改

throw new BlException(ExceptionEnum.UN_AUTHORIZED);

}

}

}

5、创建Login.vue

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

登录博客

<el-button type=“primary” @click=“login” style=“margin-top: 80px”>登录

<el-button @click=“register” style=“margin-top: 80px”>注册账号

6、设置访问路径

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

import Vue from ‘vue’

import Router from ‘vue-router’

import HelloWorld from ‘@/components/HelloWorld’

import Article from ‘@/components/Article’

import Write from ‘@/components/Write’

import Login from ‘@/components/Login’

Vue.use(Router)

export default new Router({

routes: [

{

path: ‘/’,

name: ‘HelloWorld’,

component: HelloWorld

},

{

path: ‘/Article’,

name: ‘Article’,

component: Article

},

{

path: ‘/Write’,

name: ‘Write’,

component: Write

},

{

path: ‘/Login’,

name: ‘Login’,

component: Login

},

]

})

访问页面:http://localhost:8080/#/Login

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

五、实现发布文章的功能


1、在HelloWorld.vue 节目添加跳转写文章的功能

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

<el-button @click=“goToWrite”>写文章

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

goToWrite() {

this.$router.push(“/Write”);

},

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

2、在Write.vue设置初始化的时候校验是否登录

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

没有登录跳转回登录页面

created() {//编写构造函数

this.$http.get(“verify/”)

.then((res) => {

}).catch(() => {

this.$router.push({path: “/Login”})

this.$message.error(“没有登录请登录后发布文章!”);

});

},

3、实现文章保存功能

(1)修改Blog实体类用于接收参数

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

package cn.itbluebox.springbootcsdn.domain;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import javax.persistence.Table;

import javax.persistence.Transient;

import java.util.Date;

@Data

@NoArgsConstructor

@AllArgsConstructor

@Table(name = “blog”)

public class Blog {

private Long id; //文章id

private String title; //文章标题

private String abstract_text; //文章内容

private String thumbnail; //缩略图

private Date create_time; //创建时间

private Long like_count; //点赞数量

private Long view_count; //浏览量

private Long consumer_id; //用户ID

private String type_id; //类型

private Long blog_article_id; //博客文章ID

@Transient

private String context;

@Transient

private Date last_update_time; //更新时间

@Transient

private Character is_original;

@Transient //Transient声明当前字段不是数据对应的字段

private Long[] typeId;

}

(2)在BlogController当中创建保存的接口

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

@PostMapping(“save”)

public ResponseEntity saveBlogging(

@RequestBody Blog blog,

@CookieValue(“SC_TOKEN”) String token,

HttpServletRequest request, HttpServletResponse response

){

UserInfo userInfo = JwtUtils.getUserInfo(prop.getPublicKey(), token);

//刷新token,重新生成token

String newToken = JwtUtils.generateToken(userInfo, prop.getPrivateKey(), prop.getExpire());

//写回cookie

CookieUtils.setCookie(request, response, prop.getCookieName(), newToken, prop.getCookieMaxAge(), true);

//返回用户信息

blog.setConsumer_id(userInfo.getId());

String blog_code = blogService.saveBlogging(blog);

return ResponseEntity.ok(blog_code);

}

(3)在blogService和对应实现类当中创建对应的方法

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

String saveBlogging(Blog blog);

实现类当中的方法

(4)实现BlogServiceImpl和对应的Mapper

@Transactional

@Override

public String saveBlogging(Blog blog) {

//先插入博客的文章部分

long l = new IdWorker(new Random().nextInt(10), 1).nextId();

String ls = (l + “”);

ls = ls.substring(5, ls.length());

BlogArticle blogArticle = new BlogArticle();

blogArticle.setId(Long.parseLong(ls));

blogArticle.setContext(blog.getContext());

blogArticle.setLast_update_time(new Date());

blogArticle.setIs_original(blog.getIs_original());

//插入博客文章的代码

int insert2 = blogArticleMapper.insertSql(blogArticle);

if (insert2 != 1) {

throw new BlException(ExceptionEnum.BLOG_SAVE_ERROR);

}

//插入博客

blog.setCreate_time(new Date());

blog.setLike_count(1L);

blog.setView_count(1L);

blog.setBlog_article_id(blogArticle.getId());

int insert1 = blogMapper.insert(blog);

if (insert1 != 1) {

throw new BlException(ExceptionEnum.BLOG_SAVE_ERROR);

}

return “success”;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js
vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js
vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js
vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js
vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js
vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

框架相关

原生JS虽能实现绝大部分功能,但要么就是过于繁琐,要么就是存在缺陷,故绝大多数开发者都会首选框架开发方案。现阶段较热门是React、Vue两大框架,两者工作原理上存在共通点,也存在一些不同点,对于校招来说,不需要两个框架都学得特别熟,一般面试官会针对你简历中写的框架进行提问。

在框架方面,生命周期、钩子函数、虚拟DOM这些基本知识是必须要掌握的,在学习的过程可以结合框架的官方文档

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

Vue框架

知识要点:
1. vue-cli工程
2. vue核心知识点
3. vue-router
4. vuex
5. http请求
6. UI样式
7. 常用功能
8. MVVM设计模式

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

React框架

知识要点:
1. 基本知识
2. React 组件
3. React Redux
4. React 路由

vue element spring boot开发小而完整的web前后端分离项目实战,2024年程序员学习,java,spring boot,vue.js

在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-ztmNrmgi-1711916461473)]
[外链图片转存中…(img-gX1bfGqP-1711916461474)]
[外链图片转存中…(img-3MoOL1BU-1711916461474)]
[外链图片转存中…(img-gDfxo3QN-1711916461474)]
[外链图片转存中…(img-xT17kWxM-1711916461475)]
[外链图片转存中…(img-7Yeqlg52-1711916461475)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-Xh7WBZHx-1711916461475)]

框架相关

原生JS虽能实现绝大部分功能,但要么就是过于繁琐,要么就是存在缺陷,故绝大多数开发者都会首选框架开发方案。现阶段较热门是React、Vue两大框架,两者工作原理上存在共通点,也存在一些不同点,对于校招来说,不需要两个框架都学得特别熟,一般面试官会针对你简历中写的框架进行提问。

在框架方面,生命周期、钩子函数、虚拟DOM这些基本知识是必须要掌握的,在学习的过程可以结合框架的官方文档

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

Vue框架

知识要点:
1. vue-cli工程
2. vue核心知识点
3. vue-router
4. vuex
5. http请求
6. UI样式
7. 常用功能
8. MVVM设计模式

[外链图片转存中…(img-FT3QokTX-1711916461476)]

React框架

知识要点:
1. 基本知识
2. React 组件
3. React Redux
4. React 路由

[外链图片转存中…(img-zngYFMHS-1711916461476)]文章来源地址https://www.toymoban.com/news/detail-859706.html

到了这里,关于Java之Spring Boot+Vue+Element UI前后端分离项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包