目录
1.搭建vue项目
这个可以根据下面这篇文章完成http://t.csdn.cn/B7K00
搭建好vue项目之后先使用npm install axios指令安装axios,然后在用到axios的地方引入即可
npm install axios
前端结构如下
index.js
修改router文件夹下面的index.js如下
import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import login from "@/views/login";
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'login',
component: login
},
{
path: '/home',
name: 'home',
component: HomeView
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
HomeView.vue
import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import login from "@/views/login";
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'login',
component: login
},
{
path: '/home',
name: 'home',
component: HomeView
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
login.vue
<template>
<div class="login">
<div class="mylogin" align="center">
<el-button onclick="location.href='./public/bigdata/index.html'">跳转</el-button>
<h4>登录</h4>
<el-form
:model="loginForm"
:rules="loginRules"
ref="loginForm"
label-width="0px"
>
<el-form-item label="" prop="account" style="margin-top: 10px">
<el-row>
<el-col :span="2">
<span class="el-icon-s-custom"></span>
</el-col>
<el-col :span="22">
<el-input
class="inps"
placeholder="账号"
v-model="loginForm.account"
>
</el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="" prop="passWord">
<el-row>
<el-col :span="2">
<span class="el-icon-lock"></span>
</el-col>
<el-col :span="22">
<el-input
class="inps"
type="password"
placeholder="密码"
v-model="loginForm.passWord"
></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item style="margin-top: 55px">
<el-button type="primary" round class="submitBtn" @click="submitForm"
>登录
</el-button>
</el-form-item>
<div class="unlogin">
<router-link :to="{ path: '/forgetpwd' }"> 忘记密码? </router-link>
|
<router-link :to="{ path: '/register' }">
<a href="register.vue" target="_blank" align="right">注册新账号</a>
</router-link>
</div>
</el-form>
</div>
</div>
</template>
<script>
import { mapMutations } from "vuex";
export default {
name: "Login",
data: function () {
return {
loginForm: {
account: "",
passWord: "",
},
loginRules: {
account: [{ required: true, message: "请输入账号", trigger: "blur" }],
passWord: [{ required: true, message: "请输入密码", trigger: "blur" }],
},
};
},
methods: {
...mapMutations(["changeLogin"]),
submitForm() {
const userAccount = this.loginForm.account;
const userPassword = this.loginForm.passWord;
if(userAccount==='admin'&&userPassword==='123456'){
this.$router.push('/home');
}
else{
alert('账号或密码错误')
}
// if (!userAccount) {
// return this.$message({
// type: "error",
// message: "账号不能为空!",
// });
// }
// if (!userPassword) {
// return this.$message({
// type: "error",
// message: "密码不能为空!",
// });
// }
console.log("用户输入的账号为:", userAccount);
console.log("用户输入的密码为:", userPassword);
},
},
};
</script>
<style>
.login {
height: 100vh;
background-image: linear-gradient(to bottom right, #3F5EFB, #42b983);
overflow: hidden;
width: 100vw;
padding: 0;
margin: 0;
font-size: 16px;
background-position: left top;
background-color: #242645;
color: #fff;
position: relative;
}
.mylogin {
width: 240px;
height: 280px;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
padding: 50px 40px 40px 40px;
box-shadow: -15px 15px 15px rgba(6, 17, 47, 0.7);
opacity: 1;
background: linear-gradient(
230deg,
rgba(53, 57, 74, 0) 0%,
rgb(0, 0, 0) 100%
);
}
.inps input {
border: none;
color: #fff;
background-color: transparent;
font-size: 12px;
}
.submitBtn {
background-color: transparent;
color: #39f;
width: 200px;
}
</style>
App.vue
<template>
<div id="app">
<router-view/>
</div>
</template>
在终端输入指令npm run serve运行vue项目,点击生成的链接即可
然后输入账号和密码进行登录(账号:admin密码123456),登录后进入主页面
2.后端项目
接着我们搭建后端项目,总体结构如图
首先新建一个springboot工程
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springbootvue</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootvue</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>3.5.3</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
application.yml
application.yml文件(初始文件是application.properties,将其改为application.yml)
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/student?allowMultiQueries=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
server:
port:
8181
mybatis:
type-aliases-package: com.example.springbootvue.entity
mapper-locations: classpath:mapper/*.xml
UserController
package com.example.springbootvue.controller;
import com.example.springbootvue.entity.user;
import com.example.springbootvue.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
UserService userService;
@GetMapping("/findAll")
public List<user> findAll() {
return userService.queryuserList();
}
}
user
package com.example.springbootvue.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class user {
private Integer id;
private String username;
private String password;
}
UserMapper
package com.example.springbootvue.mapper;
import com.example.springbootvue.entity.user;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserMapper {
public List<user> queryuserList();
}
UserService
package com.example.springbootvue.service;
import com.example.springbootvue.entity.user;
import java.util.List;
public interface UserService {
public List<user> queryuserList();
}
UserServiceImpl
package com.example.springbootvue.service;
import com.example.springbootvue.entity.user;
import com.example.springbootvue.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService{
@Autowired
UserMapper userMapper;
@Override
public List<user> queryuserList() {
return userMapper.queryuserList();
}
}
usermapper.xml
<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.springbootvue.mapper.UserMapper">
<select id="queryuserList" resultType="com.example.springbootvue.entity.user">
select * from user
</select>
</mapper>
CrosConfig
package com.example.springbootvue.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CrosConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
.allowCredentials(true)
.maxAge(3600)
.allowedHeaders("*");
}
}
数据库设计
运行结果
运行后端项目和前端项目,发现数据库中的信息传到了前端页面,然后可以自己做样式