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

青岛有做网站的吗asp网站过时

青岛有做网站的吗,asp网站过时,手机编程的app,网站没有在工信部备案网页版Java五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】 在用户模块我们要清楚要完成的任务一、MyBatis后端操作数据库1. 需要在数据库创建用户数据库1. 用户id2. 用户名3. 密码4. 天梯积分5. 总场数6. 获胜场数 2. 创建用户类User和数据库…

网页版Java五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】

  • 在用户模块我们要清楚要完成的任务
  • 一、MyBatis后端操作数据库
    • 1. 需要在数据库创建用户数据库
        • 1. 用户id
        • 2. 用户名
        • 3. 密码
        • 4. 天梯积分
        • 5. 总场数
        • 6. 获胜场数
    • 2. 创建用户类User
        • 和数据库的数据一一对应
    • 3. 用MyBatis操作数据库
      • 1. 连接数据库(application.yml连接数据库)
        • 这个可以直接赋值代码
      • 2. 创建UserMapper的Java接口(interface UserMapper)
        • 创建接口,在UserMapper.xml实现
        • 在model中创建
        • 需要实现@Mapper注释
      • 3. 创建UserMapper.xml 实现数据库操作
        • 实现具体数据库操作
        • 利用标签
        • mapper标签地址要对应好
        • 不同操作 标签不同
  • 二、约定前后端接口
    • 1. 登录接口
        • 前端发送post请求,具体内容是直接对应的
        • 所以后端的参数也是对应的,然后后端返回一个用户类
          • 1. 后端通过前端传的用户名,查询数据库
          • 2. 如果数据库为空,返回一个新的 用户类
          • 3. 否则,把Session置为true
          • 4. 然后返回用户类
    • 2. 注册接口
        • 前端POST请求,参数是一一对应
        • 后端参数接受一个一一对应
          • 1. 创建一个User类
          • 2. 调用userMapper插入
          • 如果创建重复 则抛出异常 返回一个新的User
    • 3. 从服务器获取当前登录的信息
        • 前端GET请求
        • 后端
          • 1. 判断用户是否Session中
          • 2. 查询数据库 返回对应类
          • 如果没有在则返回一个新的user
    • 4. UserAPI
  • 三、实现前端页面
    • 1. 登录页面
    • 2. 注册页面

在用户模块我们要清楚要完成的任务

一、MyBatis后端操作数据库

1. 需要在数据库创建用户数据库

1. 用户id

2. 用户名

3. 密码

4. 天梯积分

5. 总场数

6. 获胜场数

create database if not exists java_gobang;use java_gobang;drop table if exists user;
create table user (userId int primary key auto_increment,username varchar(50) unique,password varchar(50),score int,       -- 天梯积分totalCount int,  -- 比赛总场数winCount int     -- 获胜场数
);insert into user values(null, 'zhangsan', '123', 1000, 0, 0);
insert into user values(null, 'lisi', '123', 1000, 0, 0);
insert into user values(null, 'wangwu', '123', 1000, 0, 0);

2. 创建用户类User

和数据库的数据一一对应

package com.example.java_gobang.model;public class User {private int userId;private String username;private String password;private int score;private int totalCount;private int winCount;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getWinCount() {return winCount;}public void setWinCount(int winCount) {this.winCount = winCount;}
}

3. 用MyBatis操作数据库

1. 连接数据库(application.yml连接数据库)

这个可以直接赋值代码

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_gobang?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/**Mapper.xmllogging:pattern:console: "[%-5level] - %msg%n"

2. 创建UserMapper的Java接口(interface UserMapper)

创建接口,在UserMapper.xml实现

在model中创建

需要实现@Mapper注释

package com.example.java_gobang.model;import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserMapper {// 往数据库里插入一个用户. 用于注册功能.void insert(User user);// 根据用户名, 来查询用户的详细信息. 用于登录功能User selectByName(String username);// 总比赛场数 + 1, 获胜场数 + 1, 天梯分数 + 30void userWin(int userId);// 总比赛场数 + 1, 获胜场数 不变, 天梯分数 - 30void userLose(int userId);
}

3. 创建UserMapper.xml 实现数据库操作

实现具体数据库操作

利用标签

mapper标签地址要对应好

不同操作 标签不同

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.java_gobang.model.UserMapper"><insert id="insert">insert into user values(null, #{username}, #{password}, 1000, 0, 0);</insert><select id="selectByName" resultType="com.example.java_gobang.model.User">select * from user where username = #{username};</select><update id="userWin">update user set totalCount = totalCount + 1, winCount = winCount + 1, score = score + 30where userId = #{userId}</update><update id="userLose">update user set totalCount = totalCount + 1, score = score - 30where userId = #{userId}</update>
</mapper>

二、约定前后端接口

1. 登录接口

在这里插入图片描述

前端发送post请求,具体内容是直接对应的

所以后端的参数也是对应的,然后后端返回一个用户类

1. 后端通过前端传的用户名,查询数据库
2. 如果数据库为空,返回一个新的 用户类
3. 否则,把Session置为true
4. 然后返回用户类
@PostMapping("/login")
@ResponseBody
public Object login(String username, String password, HttpServletRequest req) {// 关键操作, 就是根据 username 去数据库中进行查询.// 如果能找到匹配的用户, 并且密码也一致, 就认为登录成功User user = userMapper.selectByName(username);System.out.println("[login] username=" + username);if (user == null || !user.getPassword().equals(password)) {// 登录失败System.out.println("登录失败!");return new User();}HttpSession httpSession = req.getSession(true);httpSession.setAttribute("user", user);return user;
}

2. 注册接口

在这里插入图片描述

前端POST请求,参数是一一对应

后端参数接受一个一一对应

1. 创建一个User类
2. 调用userMapper插入
如果创建重复 则抛出异常 返回一个新的User
    @PostMapping("/register")@ResponseBodypublic Object register(String username, String password) {try {User user = new User();user.setUsername(username);user.setPassword(password);userMapper.insert(user);return user;} catch (org.springframework.dao.DuplicateKeyException e) {User user = new User();return user;}}

3. 从服务器获取当前登录的信息

在这里插入图片描述

前端GET请求

后端

1. 判断用户是否Session中
2. 查询数据库 返回对应类
如果没有在则返回一个新的user
@GetMapping("/userInfo")
@ResponseBody
public Object getUserInfo(HttpServletRequest req) {try {HttpSession httpSession = req.getSession(false);User user = (User) httpSession.getAttribute("user");// 拿着这个 user 对象, 去数据库中找, 找到最新的数据User newUser = userMapper.selectByName(user.getUsername());return newUser;} catch (NullPointerException e) {return new User();}
}

4. UserAPI

package com.example.java_gobang.api;import com.example.java_gobang.model.User;
import com.example.java_gobang.model.UserMapper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;@RestController
public class UserAPI {@Resourceprivate UserMapper userMapper;@PostMapping("/login")@ResponseBodypublic Object login(String username, String password, HttpServletRequest req) {// 关键操作, 就是根据 username 去数据库中进行查询.// 如果能找到匹配的用户, 并且密码也一致, 就认为登录成功User user = userMapper.selectByName(username);System.out.println("[login] username=" + username);if (user == null || !user.getPassword().equals(password)) {// 登录失败System.out.println("登录失败!");return new User();}HttpSession httpSession = req.getSession(true);httpSession.setAttribute("user", user);return user;}@PostMapping("/register")@ResponseBodypublic Object register(String username, String password) {try {User user = new User();user.setUsername(username);user.setPassword(password);userMapper.insert(user);return user;} catch (org.springframework.dao.DuplicateKeyException e) {User user = new User();return user;}}@GetMapping("/userInfo")@ResponseBodypublic Object getUserInfo(HttpServletRequest req) {try {HttpSession httpSession = req.getSession(false);User user = (User) httpSession.getAttribute("user");// 拿着这个 user 对象, 去数据库中找, 找到最新的数据User newUser = userMapper.selectByName(user.getUsername());return newUser;} catch (NullPointerException e) {return new User();}}
}

三、实现前端页面

1. 登录页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录</title><link rel="stylesheet" href="css/common.css"><link rel="stylesheet" href="css/login.css">
</head>
<body><div class="nav">五子棋对战</div><div class="login-container"><!-- 登录界面的对话框 --><div class="login-dialog"><!-- 提示信息 --><h3>登录</h3><!-- 这个表示一行 --><div class="row"><span>用户名</span><input type="text" id="username"></div><!-- 这是另一行 --><div class="row"><span>密码</span><input type="password" id="password"></div><!-- 提交按钮 --><div class="row"><button id="submit">提交</button></div></div></div><script src="./js/jquery.min.js"></script><script>let usernameInput = document.querySelector('#username');let passwordInput = document.querySelector('#password');let submitButton = document.querySelector('#submit');submitButton.onclick = function() {$.ajax({type: 'post',url: '/login',data: {username: usernameInput.value,password: passwordInput.value,},success: function(body) {// 请求执行成功之后的回调函数// 判定当前是否登录成功~// 如果登录成功, 服务器会返回当前的 User 对象. // 如果登录失败, 服务器会返回一个空的 User 对象. if (body && body.userId > 0) {// 登录成功alert("登录成功!");// 重定向跳转到 "游戏大厅页面".location.assign('/game_hall.html');} else {alert("登录失败!");}},error: function() {// 请求执行失败之后的回调函数alert("登录失败!");}});}</script>
</body>
</html>

2. 注册页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>注册</title><link rel="stylesheet" href="css/common.css"><link rel="stylesheet" href="css/login.css">
</head>
<body><div class="nav">五子棋对战</div><div class="login-container"><!-- 登录界面的对话框 --><div class="login-dialog"><!-- 提示信息 --><h3>注册</h3><!-- 这个表示一行 --><div class="row"><span>用户名</span><input type="text" id="username"></div><!-- 这是另一行 --><div class="row"><span>密码</span><input type="password" id="password"></div><!-- 提交按钮 --><div class="row"><button id="submit">提交</button></div></div></div> <script src="js/jquery.min.js"></script><script>let usernameInput = document.querySelector('#username');let passwordInput = document.querySelector('#password');let submitButton = document.querySelector('#submit');submitButton.onclick = function() {$.ajax({type: 'post',url: '/register',data: {username: usernameInput.value,password: passwordInput.value,},success: function(body) {// 如果注册成功, 就会返回一个新注册好的用户对象. if (body && body.username) {// 注册成功!alert("注册成功!")location.assign('/login.html');} else {alert("注册失败!");}}, error: function() {alert("注册失败!");}});}</script>
</body>
</html>
http://www.yayakq.cn/news/606028/

相关文章:

  • 舆情网站入口室内设计基础知识点
  • 网站建设短信重庆整合网络营销之整站优化
  • 网站建设具体实施方案哪个网站做漂流瓶任务
  • 怎么在阿里云建立网站南宁网站开发招聘
  • 网站建设维护保密协议销售管理系统业务处理流程
  • 网站前端设计与实现嘉兴建设规划网站
  • 那种登录才能查看的网站怎么做优化会议专题网站建设报价单
  • 怎样建设一个游戏网站广告创意设计欣赏
  • 湘潭网站建设 在线磐石网络怎么做出有品牌感的网站
  • 专做中医教学网站如何上传网站模板
  • 网站建设上秦皇岛市地图
  • 广州网站优化渠道网站介绍页面
  • 河北省住建和城乡建设厅网站首页同城小程序怎么推广
  • wordpress适合企业网站模板北京网站公司
  • 湖南网站设计亮点网站设计与建设的参考文献
  • 出站链接对网站有什么影响无人售货机
  • 山西网站开发有限公司中国建设银行网站江苏分行
  • 建设主题网站一般要经历的顺序邯郸建设网站
  • 医疗网站seo怎么做wordpress的文章如何备份
  • 北京正规做网站公司游戏是怎么开发出来的
  • 网页设计网站开发教程淘宝seo排名优化的方法
  • 百度网站回档怎么能恢复企业邮箱域名怎么设置
  • 黄冈网站推广都有哪些渠道12333社保查询网
  • 自助建立网站wordpress模板页
  • 网站footer设计wordpress简易主题
  • 网站建设备案信息做教师知识网站有哪些
  • 免费数据网站用什么软件做商务网站
  • 网络app开发网站建设价格重庆网站排名外包
  • 淳安县建设网站网站备案 怎么建站
  • 怎么提高网站的知名度wordpress文档下载