当前位置: 首页 > news >正文

游戏网站建设与策划上海网站建设多少

游戏网站建设与策划,上海网站建设多少,东莞营销型网站开发,网站开发设计师薪资简单宿舍管理系统#xff08;springbootvue#xff09; 1.创建项目1.前端2.数据库3.后端 2.登陆1.前端1.准备工作2.登陆组件3.配置 2.后端1.链接数据库2.创建用户实体类3.数据操作持久层1.配置2.内容3.测试 4.中间业务层1.异常2.业务实现3.测试 5.响应前端控制层 3.前后对接4… 简单宿舍管理系统springbootvue 1.创建项目1.前端2.数据库3.后端 2.登陆1.前端1.准备工作2.登陆组件3.配置 2.后端1.链接数据库2.创建用户实体类3.数据操作持久层1.配置2.内容3.测试 4.中间业务层1.异常2.业务实现3.测试 5.响应前端控制层 3.前后对接4.效果 3.后台管理 最近看了springboot和vue为了练一下把前后端打通就自己手动写个简单的系统测试一下把代码放在仓库。 1.创建项目 1.前端 我的前端项目名叫Dormitory然后添加插件element-plus页面设计和axios后端交互。 npm init vuelatest#这里插件下载我都选no之后自己会手动下载使用 cd Dormitory npm install npm install element-plus npm install axios npm run dev2.数据库 首先创建库第一个是登陆功能我就顺便创建一个简单的用户表t_user。 mysql -u root -p create database dormitory; use dormitory; use store CREATE TABLE t_user (uid INT AUTO_INCREMENT COMMENT 用户id,username VARCHAR(20) NOT NULL UNIQUE COMMENT 用户名,password CHAR(32) NOT NULL COMMENT 密码,role INT COMMENT 角色,name VARCHAR(20) NOT NULL UNIQUE COMMENT 姓名,gender INT COMMENT 性别:0-女1-男,telephone VARCHAR(50) COMMENT 手机号,PRIMARY KEY (uid) ) ENGINEInnoDB DEFAULT CHARSETutf8;3.后端 创建项目名叫dormitory_b,依赖库我用了三个spring webmybatis framework,mysql driver然后配置一下jdk和maven环境和xml即可。 2.登陆 登陆这里我把uid和role保存到后端session中username保存到前端cookie中而且密码啥的我也没加密就怎么简单怎么来。 1.前端 1.准备工作 这里我用到element-plus和icon而且我是按需引入所以首先下载插件 npm install -D unplugin-vue-components unplugin-auto-import npm install element-plus/icons-vue然后在vite.config.ts按需引入element-plus import { fileURLToPath, URL } from node:url import AutoImport from unplugin-auto-import/vite import Components from unplugin-vue-components/vite import { ElementPlusResolver } from unplugin-vue-components/resolvers import { defineConfig } from vite import vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue(),AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],resolve: {alias: {: fileURLToPath(new URL(./src, import.meta.url))}} });在main.ts里将icon全局注册到App上 import * as ElementPlusIconsVue from element-plus/icons-vue for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component) }就可以使用svg方式使用 el-iconMenu //el-icon然后配置路由用到了router所以先下载 npm install vue-router 然后在src里面建一个router文件夹里面建一个index.js写路由配置文件然后在main.js里面挂载一下 import router from ./router; app.use(router)2.登陆组件 这里登陆页面我写在了LoginView里面后面我会配置路由和组件。 templatediv classlogin-containerdiv classlogin-formel-form reflogin-form :modelloginForm label-width80px :rulesrulesel-form-item label用户名 propusernameel-input v-modelloginForm.username/el-input/el-form-itemel-form-item label密码 proppasswordel-input typepassword v-modelloginForm.password/el-input/el-form-itemel-form-item label角色 proproleel-radio-group v-modelloginForm.roleel-radio labeladmin系统管理员/el-radioel-radio labeldorm宿舍管理员/el-radio/el-radio-group/el-form-itemel-form-item sizelargeel-button typeprimary clicktoLogin登录/el-button/el-form-item/el-form/div/div/templatescriptimport { ref } from vue;import axios from axios;export default {setup() {const loginForm ref({username: ,password: ,role: admin,});const rules {username: [{ required: true, message: 请输入用户名, trigger: blur }],password: [{ required: true, message: 请输入密码, trigger: blur }],role: [{ required: true, message: 请选择角色, trigger: change }],};const performLogin async () {try {const formData new FormData();//axios默认是json格式发送数据但我后端接受的是user所以将数据放到表单formData.append(username, loginForm.value.username);formData.append(password, loginForm.value.password);formData.append(role,loginForm.value.roleadmin?0:1);const response await axios.post(http://localhost:8080/users/login, formData);const data response.data;if (data.state 200) {// 登录成功后保存用户名到cookiedocument.cookie username${loginForm.value.username}; expires; path/;alert(登录成功);} else if (data.state 400) {alert(用户名错误);} else if (data.state 401) {alert(密码错误);}else if (data.state 402) {alert(角色错误);}} catch (error) {console.error(An error occurred:, error);}};const toLogin () {performLogin();};return {loginForm,rules,toLogin,};},};/scriptstyle scoped.login-container {display: flex;align-items: center;justify-content: center;height: 100vh;}.login-form {padding: 80px;border-radius: 10px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);}/style 3.配置 首先是在router/index.js里面写路由配置将这个页面路由配置一下 import { createRouter, createWebHistory } from vue-router import LoginView from /components/LoginView.vue const router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: /login,component: LoginView}] }) export default router然后在App.vue里面写一下这个路由出口 templateRouterView/RouterView /template此时就可以通过http://localhost:5173/login/访问到这个页面。 2.后端 1.链接数据库 在application.properties中配置数据库。 spring.datasource.urljdbc:mysql://localhost:3306/dormitory?useUnicodetruecharacterEncodingutf-8 spring.datasource.usernameroot spring.datasource.passwordroot2.创建用户实体类 在entity/User类里面创建用户实体类和getsetequaltostring方法mac的快捷键是commandn。 public class User {private Integer uid;private String username;private String password;private Integer role;private String name;private Integer gender;private String phone; }3.数据操作持久层 1.配置 首先是配置一下mapper层在启动类里面添加项目的mapper路径让自动扫包。 MapperScan(com.hckj.dormitory_b.mapper)在application.properties中配置mapper地址。 mybatis.mapper-locationsclasspath:mapper/*.xml2.内容 在mapper/UserMapper接口里面写SQL语句的抽象方法(类添加Mapper注解)然后resources/mapper/UserMapper.xml里面写抽象方法的映射文件这里放在resource是因为xml是静态文件。 User findByUsername(String username);//接口 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.hckj.dormitory_b.mapper.UserMapperselect idfindByUsername resultTypecom.hckj.dormitory_b.entity.Userselect * from t_user where username#{username}/select /mapper3.测试 为了登陆测试这里先给数据库里面插入一条数据 INSERT INTO t_user (username, password, name,role, gender, telephone) VALUES (zoe, 111, dz, 0, 0,188);然后测试(测试类加注解SpringBootTest和RunWith(SpringRunner.class)) Autowiredprivate UserMapper userMapper;Testpublic void findByUsername(){System.out.println(userMapper.findByUsername(zoe));}4.中间业务层 1.异常 在登录这个业务里会出现用户没有查询到和密码不匹配所以在service的ex包里面创建UsernameNotFoundException和PasswordNotMatchException异常类还有一个是角色不匹配RoleNotMatchException并都继承RuntimeException然后生成抛出异常的5种构造方法。 2.业务实现 然后写业务层的接口加Service注解并写类实现这个接口。 User login(String username, String password,Integer role);//接口 Service public class UserServiceImpl implements IUserService{Autowiredprivate UserMapper userMapper;Overridepublic User login(String username, String password,Integer role) {User result userMapper.findByUsername(username);if (result null) {throw new UsernameNotFoundException(用户数据不存在);}String password_ result.getPassword();if (!password_.equals(password)) {throw new PasswordNotMatchException(用户密码错误);}Integer role_result.getRole();if (!role_.equals(role)) {throw new RoleNotMatchException(用户角色错误);}User user new User();user.setUid(result.getUid());user.setUsername(result.getUsername());user.setRole(result.getRole());return user;} }3.测试 SpringBootTest RunWith(SpringRunner.class) public class UserServiceTests {Autowiredprivate IUserService userService;Testpublic void login(){User user userService.login(zoe,111,0);System.out.println(user);} }5.响应前端控制层 package com.hckj.dormitory_b.controller;import com.hckj.dormitory_b.entity.User; import com.hckj.dormitory_b.service.IUserService; import com.hckj.dormitory_b.service.ex.PasswordNotMatchException; import com.hckj.dormitory_b.service.ex.RoleNotMatchException; import com.hckj.dormitory_b.service.ex.UsernameNotFoundException; import jakarta.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;import java.util.HashMap; import java.util.Map;RestController RequestMapping(users) public class UserController {Autowiredprivate IUserService userService;PostMapping(login)public MapString, Object login(User user, HttpSession session) {String username user.getUsername();String password user.getPassword();Integer roleuser.getRole();MapString, Object response new HashMap();try {User loggedInUser userService.login(username, password,role);session.setAttribute(uid,loggedInUser.getUid());//将用户的uid和role保存到sessionsession.setAttribute(role,loggedInUser.getRole());response.put(state, 200);response.put(message, 登陆成功);response.put(data, loggedInUser);} catch (UsernameNotFoundException e) {response.put(state, 400);response.put(message, 用户名未找到);response.put(data, null);} catch (PasswordNotMatchException e) {response.put(state, 401);response.put(message, 密码不正确);response.put(data, null);} catch (RoleNotMatchException e){response.put(state,402);response.put(message,角色不正确);response.put(data,null);}return response;} }3.前后对接 对接这里其实就只是一个跨域问题这个就是在后端工程的config/WebMvcConfig类里面加入设置这里我前端的地址是http://localhost:5173 package com.hckj.dormitory_b.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 WebMvcConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**).allowedOrigins(http://localhost:5173).allowedMethods(GET, POST, PUT, DELETE).allowCredentials(true);} }4.效果 3.后台管理
http://www.zqtcl.cn/news/506876/

相关文章:

  • discuz企业网站网站可以做音频线吗
  • 怎样制作网站教程哪家好制作网页的的网站
  • 网站没有织梦后台无锡seo公司网站
  • 哈尔滨住房和城乡建设厅网站公司网站建设 费用入账
  • 网站图片缩略图t恤图案设计网站
  • 对招聘网站页面设计做建议网站流量 转化率
  • 怎么样做网站注册量郴州市北湖区
  • 山东企业展厅设计公司济南网站建设优化公司
  • 什么网站免费做游戏工艺品外贸订单网
  • 免费推广网站制作网站设计的技术有
  • 深圳电商网站建设高校学风建设专栏网站
  • 品牌网站建设 2蝌蚪小三网合一的网站怎么做
  • 对二次网站开发的认识wordpress修改图片大小
  • 电商网站项目建设个人网站空间收费
  • 官方网站制作思路樟木头东莞网站建设
  • 怎么寻找做有益做网站的客户大连网站推广
  • 湖南网站开发企业excel网站建设
  • 安康网站建设技巧腾讯建设网站视频下载
  • 如何能让企业做网站的打算中企动力做网站贵吗
  • wordpress 空间常州seo
  • 网站负责人备案采集照具体要求湛江网吧
  • 长春建站模板制作php网站空间购买
  • 网站域名到期怎么办食品包装设计的介绍
  • 建设网站专栏台州cms模板建站
  • 网站建设套餐方案湛江网站如何制作
  • wordpress网站怎么打开西安企业做网站多少钱
  • 电子商务网站建设的实训报告网页美工设计夏霍
  • 在一呼百应上做网站行吗江西省住房和城乡建设厅的网站
  • 对百度网站进行分析山水人家装饰公司
  • 接网站开发广州仿站定制模板建站