日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

登录页面test记录

發(fā)布時(shí)間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 登录页面test记录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

登錄頁(yè)面

前端

登錄頁(yè)面

login.html 登錄頁(yè)面

<!DOCTYPE html> <html lang="en"> <head><title>學(xué)籍管理登錄</title><!-- Bootstrap core CSS --><link href="style.css" rel="stylesheet"></head><body><div class="sign-up-from"><img src="default.jpg"><h1>系統(tǒng)登錄</h1><form><input type="email" class="input-box" placeholder="請(qǐng)輸入賬號(hào)"><input type="password" class="input-box" placeholder="請(qǐng)輸入密碼"><p><span><input type="checkbox" checked ='checked'></span> 我同意服務(wù)條款</p><button type="button" class="signUp-btn">登錄</button><hr><p class="or">OR</p><!-- <button type="button" class="twitter-btn">注冊(cè)</button> --><p>沒(méi)有賬號(hào)點(diǎn)擊這里 <a href="register.html" >注冊(cè)</a></p><p class="cyjt">? 創(chuàng)業(yè)錦泰信息科技2020-20xx</p></form></div> </body> </html>

register.html 注冊(cè)頁(yè)面

<!DOCTYPE html> <html lang="en"> <head><title>注冊(cè)</title><!-- Bootstrap core CSS --><link href="style.css" rel="stylesheet"></head><body><div class="sign-up-from"><h1>系統(tǒng)用戶注冊(cè)</h1><form><input type="email" class="input-box" placeholder="請(qǐng)輸入賬號(hào)"><input type="frist-password" class="input-box2" placeholder="請(qǐng)輸入密碼"><input type="last-password" class="input-box3" placeholder="再輸入密碼"><p><span><input type="checkbox" checked ='checked'></span> 我同意服務(wù)條款</p><!-- <button type="button" class="signUp-btn">登錄</button><hr><p class="or">OR</p> --><button type="button" class="twitter-btn">注冊(cè)</button><p>聯(lián)系管理員 <a href="##" >點(diǎn)擊這里</a></p><p class="cyjt">? 創(chuàng)業(yè)錦泰信息科技2020-20xx</p></form></div> </body> </html>

style.css 頁(yè)面調(diào)用CSS

body {margin: 0;padding: 0;font-family: sans-serif;background-image: url(background1.jpg);background-size: cover;background-position: center; }.sign-up-from {width: 300px;box-shadow: 0 0 3px 0 rgba(0,0,0,0.3);background: #fff;padding: 20px;margin: 8% auto 0;text-align: center;} .sign-up-from h1 {color: #1c8abc;margin-bottom: 30px; } .input-box {border-radius: 20px;padding: 10px;margin: 10px 0;width: 90%;border: 1px solid #999;outline: none;} .input-box2 {border-radius: 20px;padding: 10px;margin: 10px 0;width: 90%;border: 1px solid #999;outline: none;} .input-box3 {border-radius: 20px;padding: 10px;margin: 10px 0;width: 90%;border: 1px solid #999;outline: none;} button {color: #fff;width: 100%;padding: 10px;border-radius: 20px;font-size: 15px;margin: 10px 0;border: none;outline: none;cursor: pointer;} .signUp-btn {background-color: #1c8abc; } .twitter-btn {background-color: #21afde; } a {text-decoration: none;} hr {margin-top: 20px;width: 80%; } .or {background: #fff;width: 30px;margin: -19px auto 10px; } img {width: 70px;border-radius: 30px;margin-top: -70px; } .cyjt {font-size: 15px;color: #aaa; }

數(shù)據(jù)庫(kù)

環(huán)境springboot, web

用戶-創(chuàng)建數(shù)據(jù)表

創(chuàng)建數(shù)據(jù)庫(kù):

CREATE DATABASE store;

使用該數(shù)據(jù)庫(kù):

USE store;

再創(chuàng)建用戶數(shù)據(jù)表:

CREATE TABLE t_user (uid INT AUTO_INCREMENT COMMENT '用戶id',username VARCHAR(20) NOT NULL UNIQUE COMMENT '用戶名',password CHAR(32) NOT NULL COMMENT '密碼',salt CHAR(36) COMMENT '鹽值',gender INT COMMENT '性別:0-女,1-男',phone VARCHAR(20) COMMENT '電話號(hào)碼',email VARCHAR(30) COMMENT '電子郵箱',avatar VARCHAR(100) COMMENT '頭像',is_delete INT COMMENT '是否刪除:0-未刪除,1-已刪除',created_user VARCHAR(20) COMMENT '日志-創(chuàng)建人',created_time DATETIME COMMENT '日志-創(chuàng)建時(shí)間',modified_user VARCHAR(20) COMMENT '日志-最后修改執(zhí)行人',modified_time DATETIME COMMENT '日志-最后修改時(shí)間',PRIMARY KEY (uid) ) DEFAULT CHARSET=utf8mb4;

springboot

創(chuàng)建實(shí)體類

因?yàn)楹罄m(xù)還會(huì)有更多的實(shí)體類,也都會(huì)有日志相關(guān)的4個(gè)屬性,所以,在創(chuàng)建實(shí)體類之前,應(yīng)該先創(chuàng)建這些實(shí)體類的基類,將4個(gè)日志屬性聲明在基類中:

/* *實(shí)體類的基類 */ public class BaseEntity implements Serializable {private static final long serialVersionUID = 6613396591482385844L;private String createdUser;//創(chuàng)建改人private Date createdTime;//創(chuàng)建時(shí)間private String modifiedUser;//修改人private Date modifiedTime;//修改時(shí)間@Overridepublic String toString() {return "BaseEntity [createdUser=" + createdUser + ", createdTime=" + createdTime + ", modifiedUser="+ modifiedUser + ", modifiedTime=" + modifiedTime + "]";}public String getCreatedUser() {return createdUser;}public void setCreatedUser(String createdUser) {this.createdUser = createdUser;}public Date getCreatedTime() {return createdTime;}public void setCreatedTime(Date createdTime) {this.createdTime = createdTime;}public String getModifiedUser() {return modifiedUser;}public void setModifiedUser(String modifiedUser) {this.modifiedUser = modifiedUser;}public Date getModifiedTime() {return modifiedTime;}public void setModifiedTime(Date modifiedTime) {this.modifiedTime = modifiedTime;}

然后,再創(chuàng)建cn.tedu.store.entity.User用戶數(shù)據(jù)的實(shí)體類,繼承自以上BaseEntity,聲明與數(shù)據(jù)表中對(duì)應(yīng)的屬性,添加SET/GET方法,基于唯一標(biāo)識(shí)uid生成hashCode()和equals()方法:

package cn.cyjt.shoot.entity; public class User extends BaseEntity{/*** 用戶數(shù)據(jù)的實(shí)體類*/private static final long serialVersionUID = 3414303419311561404L;private Integer uid;private String username;private String password;private String salt;private Integer gender;private String phone;private String email;private String avatar;private Integer isDelete;public Integer getUid() {return uid;}public void setUid(Integer uid) {this.uid = uid;}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 String getSalt() {return salt;}public void setSalt(String salt) {this.salt = salt;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getAvatar() {return avatar;}public void setAvatar(String avatar) {this.avatar = avatar;}public Integer getIsDelete() {return isDelete;}public void setIsDelete(Integer isDelete) {this.isDelete = isDelete;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((uid == null) ? 0 : uid.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;User other = (User) obj;if (uid == null) {if (other.uid != null)return false;} else if (!uid.equals(other.uid))return false;return true;}@Overridepublic String toString() {return "User [uid=" + uid + ", username=" + username + ", password=" + password + ", salt=" + salt + ", gender="+ gender + ", phone=" + phone + ", email=" + email + ", avatar=" + avatar + ", isDelete=" + isDelete+ ", toString()=" + super.toString() + "]";}}

首先,需要在application.properties中配置連接數(shù)據(jù)庫(kù)的相關(guān)信息:

spring.datasource.url=jdbc:mysql://localhost:3306/shoot?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=rootmybatis.mapper-locations=classpath:mappers/*.xml#解決返回亂碼問(wèn)題 #spring.http.encoding.charset=UTF-8 #spring.http.encoding.force=true #spring.http.encoding.enabled=true server.servlet.encoding.charset=UTF-8 server.servlet.encoding.force=true server.servlet.encoding.enabled=true

單元測(cè)試

配置完成后,應(yīng)該在src/test/java下的cn.cyjt.shoot.StoreApplicationTests類中編寫并執(zhí)行“獲取數(shù)據(jù)庫(kù)連接”的單元測(cè)試:

@Autowired public DataSource dataSource;@Test public void getConnection() throws SQLException {Connection conn = dataSource.getConnection();System.err.println("dataSource.getConnection() conn:::"+conn); }

設(shè)計(jì)接口與抽象方法
創(chuàng)建cn.cyjt.shoot.mapper.UserMapper接口,并在接口中添加抽象方法:

/*** 處理用戶數(shù)據(jù)的持久層接口*/ public interface UserMapper {/*** 插入用戶數(shù)據(jù)* @param user 用戶數(shù)據(jù)* @return 受影響的行數(shù)*/ Integer insert(User user);/*** 根據(jù)用戶名查詢用戶數(shù)據(jù)* @param username 用戶名* @return 匹配的用戶數(shù)據(jù),如果沒(méi)有匹配的數(shù)據(jù),則返回null*/ User findByUsername(String username);}

由于這是第1次創(chuàng)建接口,還應(yīng)該配置接口的位置,所以,需要在啟動(dòng)類(StoreApplication)的聲明之前添加配置

@MapperScan("cn.cyjt.store.mapper") @SpringBootApplication public class StoreApplication { ...

在src/main/resources下創(chuàng)建mappers文件夾,在該文件夾下粘貼得到UserMapper.xml文件,并進(jìn)行配置:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><mapper namespace="cn.cyjt.shoot.mapper.UserMapper"><resultMap id="UserEntityMap"type="cn.cyjt.shoot.entity.User"><id column="uid" property="uid" /><result column="is_delete" property="isDelete" /><result column="created_user" property="createdUser" /><result column="created_time" property="createdTime" /><result column="modified_user" property="modifiedUser" /><result column="modified_time" property="modifiedTime" /></resultMap><!-- 插入用戶數(shù)據(jù) --><!-- Integer insert(User user) --><insert id="insert" useGeneratedKeys="true" keyProperty="uid">INSERTINTO t_user (username, password,salt, gender,phone, email,avatar, is_delete,created_user, created_time,modified_user, modified_time) VALUES (#{username}, #{password},#{salt}, #{gender},#{phone}, #{email},#{avatar}, #{isDelete},#{createdUser}, #{createdTime},#{modifiedUser}, #{modifiedTime})</insert><!-- 根據(jù)用戶id更新用戶密碼 --><!-- Integer updatePasswordByUid( @Param("uid") Integer uid, @Param("password") String password, @Param("modifiedUser") String modifiedUser, @Param("modifiedTime") Date modifiedTime) --><update id="updatePasswordByUid">UPDATEt_userSETpassword=#{password},modified_user=#{modifiedUser},modified_time=#{modifiedTime}WHEREuid=#{uid}</update><!-- 根據(jù)用戶id查詢用戶數(shù)據(jù) --><!-- User findByUid(Integer uid) --><select id="findByUid" resultMap="UserEntityMap">SELECT*FROMt_userWHEREuid=#{uid}</select><!-- 根據(jù)用戶名查詢用戶數(shù)據(jù) --><!-- User findByUsername(String username) --><select id="findByUsername" resultMap="UserEntityMap">SELECT*FROMt_userWHEREusername=#{username}</select> </mapper>

由于是第1次使用,所以,需要在application.properties中配置XML文件的位置:

mybatis.mapper-locations=classpath:mappers/*.xml

最后,在src/test/java下,創(chuàng)建cn.cyjt.shoot.mapper.UserMapperTests測(cè)試類,在測(cè)試類的聲明之前添加@RunWith(SpringRunner.class)和@SpringBootTest注解,并在測(cè)試類中聲明持久層對(duì)象,通過(guò)自動(dòng)裝配來(lái)注入值:

@RunWith(SpringRunner.class) @SpringBootTest public class UserMapperTests {@AutowiredUserMapper userMapper;}

總結(jié)

以上是生活随笔為你收集整理的登录页面test记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。