vue+iview+axios+spring前后端分离项目登录实例idea创建

最近开始学习vue,从网络上看到很多贴子讲解如何创建,现将过程总结如下,欢迎学习交流。过程中用到网友图或者内容请原谅,再此对各位表示感谢!!

1.项目涉及工具及环境

  • jdk1.8
  • maven
  • spring-boot
  • idea
  • node.js
  • npm

  • vue
  • iview
  • axios

2.前端创建

2.1  node.js安装

下载地址:https://nodejs.org/en/download/

下载完成后安装(直接按默认方式安装就行),如何想选择自己安装位置,可以选择具体安装路径,本文是安装在E:\workdearly\nodejs

打开cmd 输入下面的命令查看是否成功安装

node –v

npm -v

2.2 node.js prefix(全局)和cache(缓存)设置

运行 npm config set cache "E:\workdearly\nodejs\node_cache" 设置缓存文件夹;

运行npm config set prefix "E:\workdearly\nodejs"设置全局模块存放路径;

修改E:\workdearly\nodejs\node_modules\npm\npmrc文件,将默认值改为:

prefix=E:\workdearly\nodejs,如果不做这个修改,则npm在运行 npm ls  -g 的时候,仍然以默认的路径来查找已安装的全局模块;

2.3 vue安装

输入npm i -g cnpm --registry=https://registry.npm.taobao.org,即可安装npm镜像,以后再用到npm的地方直接用cnpm来代替就好了 ,如果权限不够,请使用管理员运行命令提示符

安装vue-cli 脚手架构建工具(必须在全局中进行安装)

在命令行中运行命令 cnpm install -g vue-cli ,然后等待安装完成。

是否安装成功:vue -V

在命令行中运行命令 cnpm install -g webpack ,然后等待安装完成。

在命令行中运行命令 cnpm install -g webpack -cli,然后等待安装完成。

webpack的版本查询:webpack -v

2.4 使用脚手架安装项目

vue init webpack first_vue

提示目录已存在,是否继续:Y

Project name(工程名):回车

Project description(工程介绍):回车

Author:作者名

Vue build(是否安装编译器):回车

Install vue-router(是否安装Vue路由):回车

Use ESLint to lint your code(是否使用ESLint检查代码,我们使用idea即可):n

Set up unit tests(安装测试工具):n

Setup e2e tests with Nightwatch(测试相关):n

Should we run `npm install` for you after the project has been created? (recommended):选择:No, I will handle that myself

进入项目目录

cd firstVue

初始化项目

cnpm i

运行测试  npm run dev

2.5 iview 安装

 

安装:npm install --save iview

在idea中打开项目,按照图示进行设置:

在main.js中加入iview

 

 
  1. import iView from 'iview'

  2. import 'iview/dist/styles/iview.css' // 使用 CSS

  3. Vue.use(iView)

 使用iview

首先,我们在工程目录componets下新建一个Login.vue文件。并且登录iview的官网找到Form表单组件。复制代码到Login.vue中

Login.vue完成后去修改app.vue文件。话不多说,直接上代码。当然,代码内具体的语法需要你自己去了解。

<template>

<div id="app">

<Login></Login>

</div>

</template>

<script>

import Login from '@/components/Login'

export default {

name: 'App',

components: {

'Login': Login

},

data() {

return {}

}

}

</script>

<style>

#app {

text-align: center;

margin-top:400px ;

}

</style>

好了,到此为止,vue的登录页面算是完成了。运行来看看效果。

2.5 修改Login.vue代码并且安装和使用axios

在Login.vue组件中,有一个提交的方法,当校验通过时,会提示“Success!”,失败时会提示“Fail!”,所以我们可以在校验通过的时候提交表单到后台。

handleSubmit(name) {

this.$refs[name].validate((valid) => {

if (valid) {

this.$Message.success('Success!');

} else {

this.$Message.error('Fail!');

}

})

}

vue.js官方推荐我们使用axios来发送异步请求。所以我们就使用axios来发送异步请求。

首先我们引入axios,并且使用axios。
安装axios
在命令行内输入
npm install axios -S
进行安装。
安装完成后在main.js中使用axios,在main.js中加入以下代码
import axios from 'axios'
Vue.prototype.$axios = axios

这样就可以在全局中使用axios做请求了。
我们在表单校验通过的时候使用axios来请求后台。代码如下

handleSubmit(name) {

this.$refs[name].validate((valid) => {

if (valid) {

this.$axios({

url: '',//请求的地址

method: 'post',//请求的方式

data: this.formInline//请求的表单数据

}).then(res => {

console.info('后台返回的数据', res.data);

}).catch(err => {

console.info('报错的信息', err.response.message);

});

} else {

this.$Message.error('表单校验失败!');

}

})

}

到此为止,前端的搭建算是完成了,我们来搭建springboot作为后端,来实现一个简单的登录请求

3. 后端(springboot)

3.1 新建一个新的spring initializr工程,这里我们使用默认的项目名demo。在第三步的时候选择web

3.2 新建LoginController.java 和User.java

LoginController.java代码如下

package com.example.demo;
import org.springframework.web.bind.annotation.RequestBody;

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

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

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

/**

* Created by 不爱编程的程序猿

* 2018/11/8

*/

@RestController

@RequestMapping("/rest")

public class LoginController {
@RequestMapping(value = "/login", method = RequestMethod.POST)

public Boolean Login(@RequestBody User user) {

System.out.printf("用户名" + user.getUserName());

System.out.printf("用户密码" + user.getPassword());

return Boolean.TRUE;

}
}

User.java代码如下

package com.example.demo;

import javax.persistence.Entity;

/**

* Created by 不爱编程的程序猿

* 2018/11/8

*/

@Entity
public class User {


//用户名
private String user;

//密码
private String password;

public String getUserName() {
return user;
}

public void setUserName(String userName) {
this.userName = user;
}

public String getPassword() 
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

由于springboot默认的端口是8080,但是被前端的项目占用了,所以我们需要修改端口,打开application.properties文件加入 server.port=8081即可修改端口号为8081,修改后启动项目。后端项目已经启动,现在我们去前端来请求后端的系统。我们重新回到Login.vue文件,修改url为localhost:8081/rest/login

handleSubmit(name) {

this.$refs[name].validate((valid) => {

if (valid) {

this.$axios({

url: 'localhost:8081/rest/login',//请求的地址

method: 'post',//请求的方式

data: this.formInline//请求的表单数据

}).then(res => {

console.info('后台返回的数据', res.data);

}).catch(err => {

console.info('报错的信息', err.response.message);

});

} else {

this.$Message.error('表单校验失败!');

}

})

}

打开登录页面输入用户密码以后,发现浏览器的console控制台报错了,查找发现是跨域问题。

具体什么是跨域问题,这里不做讲解,可以自行百度。
既然出现了跨域问题,自然得想办法解决。我们打开
config下的index.js 打开后可以看到

将proxyTable修改为

proxyTable: {

'/rest': {

target: 'http://localhost:8081',//设置你调用的接口域名和端口号 别忘了加http

changeOrigin: true,

pathRewrite: {

'^/rest': '/rest'
}
}
}

并且重新修改提交表单的请求方法为​​​​​​​

handleSubmit(name) {

this.$refs[name].validate((valid) => {

if (valid) {

this.$axios({

url: '/rest/login',//请求的地址

method: 'post',//请求的方式

data: this.formInline//请求的表单数据

}).then(res => {

console.info('后台返回的数据', res.data);

}).catch(err => {

console.info('报错的信息', err.response.message);

});

} else {

this.$Message.error('表单校验失败!');

}

})

}

在登录页面输入账号和密码

 

4.总结

  1. 过程中遇到好多问题,webpack 安装过程就出现问题,这个需要在百度下就可以解决
  2. axios发送请求过程中出问题,在引入时要注意,一定要保证成功,否则是发不错任何请求
  3. 在请求发送成功后,后端程序获取用户名为空,json传输字段名称不统一,且注意。
  4. 本文中用到一些网友的图片及内容,在此表示感谢!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个简单的示例: ### 后端部分 #### 1. 创建Spring Boot项目 使用Spring Initializr创建一个基于Maven的Spring Boot项目,勾选Web、MyBatis、MySQL、Lombok等依赖。 #### 2. 配置数据库连接 在`application.properties`文件中配置数据库连接信息: ``` spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=123456 ``` #### 3. 创建数据库表 创建一个名为`user`的表,包含`id`、`username`、`password`三个字段。 #### 4. 创建实体类和Mapper 创建一个名为`User`的实体类,对应数据库中的`user`表。同时,创建一个名为`UserMapper`的Mapper接口,用于操作数据库中的`user`表。 #### 5. 创建Controller 创建一个名为`UserController`的Controller类,用于处理用户相关的请求。 ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @PostMapping("/register") public Result register(@RequestBody User user) { userService.register(user); return Result.success(); } @PostMapping("/login") public Result login(@RequestBody User user) { User result = userService.login(user.getUsername(), user.getPassword()); if (result != null) { return Result.success(result); } else { return Result.error("用户名或密码错误"); } } } ``` #### 6. 创建Service 创建一个名为`UserService`的Service接口,包含用户注册和登录的方法。 ```java public interface UserService { void register(User user); User login(String username, String password); } ``` 创建一个名为`UserServiceImpl`的Service实现类,实现`UserService`接口中的方法。 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public void register(User user) { userMapper.insert(user); } @Override public User login(String username, String password) { return userMapper.selectByUsernameAndPassword(username, password); } } ``` #### 7. 创建返回结果类 创建一个名为`Result`的类,用于封装接口的返回结果。 ```java @Data @NoArgsConstructor @AllArgsConstructor public class Result { private int code; private String msg; private Object data; public static Result success() { return new Result(200, "success", null); } public static Result success(Object data) { return new Result(200, "success", data); } public static Result error(String msg) { return new Result(500, msg, null); } } ``` ### 前端部分 #### 1. 创建Vue项目 使用Vue CLI创建一个基于Vue.js项目。 #### 2. 安装Axios 使用npm安装Axios。 ``` npm install axios --save ``` #### 3. 创建登录和注册组件 创建一个名为`Login`的组件,包含用户名和密码输入框、登录按钮和注册链接。 ```html <template> <div class="login"> <h2>登录</h2> <form> <div class="form-group"> <label>用户名:</label> <input type="text" class="form-control" v-model="username"> </div> <div class="form-group"> <label>密码:</label> <input type="password" class="form-control" v-model="password"> </div> <button type="button" class="btn btn-primary" @click="login">登录</button> </form> <div class="register-link"> <a href="javascript:void(0)" @click="goRegister">没有账号?去注册</a> </div> </div> </template> <script> import axios from 'axios' export default { data () { return { username: '', password: '' } }, methods: { login () { axios.post('/user/login', { username: this.username, password: this.password }).then(res => { if (res.data.code === 200) { alert('登录成功') } else { alert(res.data.msg) } }).catch(err => { console.error(err) }) }, goRegister () { this.$router.push('/register') } } } </script> ``` 创建一个名为`Register`的组件,包含用户名、密码和确认密码输入框、注册按钮和登录链接。 ```html <template> <div class="register"> <h2>注册</h2> <form> <div class="form-group"> <label>用户名:</label> <input type="text" class="form-control" v-model="username"> </div> <div class="form-group"> <label>密码:</label> <input type="password" class="form-control" v-model="password"> </div> <div class="form-group"> <label>确认密码:</label> <input type="password" class="form-control" v-model="confirmPassword"> </div> <button type="button" class="btn btn-primary" @click="register">注册</button> </form> <div class="login-link"> <a href="javascript:void(0)" @click="goLogin">已有账号?去登录</a> </div> </div> </template> <script> import axios from 'axios' export default { data () { return { username: '', password: '', confirmPassword: '' } }, methods: { register () { if (this.password !== this.confirmPassword) { alert('两次输入密码不一致') return } axios.post('/user/register', { username: this.username, password: this.password }).then(res => { if (res.data.code === 200) { alert('注册成功,请登录') this.$router.push('/login') } else { alert(res.data.msg) } }).catch(err => { console.error(err) }) }, goLogin () { this.$router.push('/login') } } } </script> ``` #### 4. 配置路由 在`router/index.js`文件中配置路由。 ```javascript import Vue from 'vue' import Router from 'vue-router' import Login from '@/components/Login' import Register from '@/components/Register' Vue.use(Router) export default new Router({ routes: [ { path: '/', redirect: '/login' }, { path: '/login', component: Login }, { path: '/register', component: Register } ] }) ``` #### 5. 运行项目 启动Spring Boot项目Vue项目后,访问`http://localhost:8080`即可看到登录页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值