寒假web开发2
表一 User
sql
点击查看代码
CREATE TABLE tb_user(
UserID VARCHAR(12) primary key,
Password VARCHAR(16)
);
pojo: User
点击查看代码
package com.QixunQiu.pojo;
public class User {
String UserID ;
String Password ;
@Override
public String toString() {
return "User{" +
"UserID='" + UserID + '\'' +
", Password='" + Password + '\'' +
'}';
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
public String getUserID() {
return UserID;
}
public void setUserID(String userID) {
UserID = userID;
}
}
UserMapper
点击查看代码
package com.QixunQiu.mapper;
import com.QixunQiu.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapper {
@Select("select * from tb_user where UserID = #{UserID} and Password = #{Password}")
User select(@Param("UserID") String UserID, @Param("Password") String Password);
void addUser(User user);
}
UserService
点击查看代码
package com.QixunQiu.service;
import com.QixunQiu.mapper.UserMapper;
import com.QixunQiu.pojo.User;
import com.QixunQiu.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class UserService {
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
public User selectUser(String UserID, String Password) {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.select(UserID, Password);
sqlSession.close();
return user;
}
public void addUser(User user) {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.addUser(user);
sqlSession.commit();
sqlSession.close();
}
}
UserMapper.xml
点击查看代码
<?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.QixunQiu.mapper.UserMapper">
<insert id="addUser">
insert into tb_user (UserID, Password)
values (#{UserID}, #{Password});
</insert>
<update id="updatePassword" >
update tb_user
<set>
<if test="Password != null and Password != ''">
Password = #{Password},
</if>
</set>
where UserID = #{UserID};
</update>
<delete id="deleteByUserID">
delete from tb_user where UserID = #{UserID}
</delete>
<select id="selectALL" resultType="com.QixunQiu.pojo.User">
select *
from tb_user ;
</select>
</mapper>
login.html
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.form-div {
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
width: 100%;
max-width: 400px;
text-align: center;
}
.form-div h1 {
color: #333;
margin: 0 0 20px;
}
.form-div a {
color: #007BFF;
text-decoration: none;
font-size: 14px;
}
.form-div a:hover {
text-decoration: underline;
}
form {
display: flex;
flex-direction: column;
align-items: center;
}
table {
width: 100%;
margin-bottom: 20px;
border-collapse: collapse;
}
table td {
padding: 10px 0;
text-align: left;
}
table td:first-child {
width: 30%;
font-weight: bold;
}
table td.input {
width: 70%;
}
input[type="text"],
input[type="password"] {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
input[type="text"]:focus,
input[type="password"]:focus {
outline: none;
border-color: #007BFF;
}
.buttons {
display: flex;
justify-content: space-between;
width: 100%;
}
input[type="submit"] {
padding: 10px 20px;
font-size: 16px;
color: #fff;
background-color: #007BFF;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
width: 100%;
}
input[type="submit"]:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="form-div">
<form action="/Older/LoginServlet" method="post" id="form">
<h2>欢迎使用老年人能力评估系统</h2>
<table>
<tr>
<td>用户名:</td>
<td class="input">
<input id="UserID" name="UserID" type="text">
</td>
</tr>
<tr>
<td>密码:</td>
<td class="input">
<input id="Password" name="Password" type="password">
</td>
</tr>
</table>
<div class="buttons">
<input type="submit" value="登录">
<a href="register.html">没有账号?点击注册</a>
</div>
</form>
</div>
</body>
</html>
register.html
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>欢迎注册</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.form-div {
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
width: 100%;
max-width: 400px;
text-align: center;
}
.reg-content {
margin-bottom: 20px;
}
.reg-content h1 {
color: #333;
margin: 0 0 10px;
}
.reg-content a {
color: #007BFF;
text-decoration: none;
font-size: 14px;
}
.reg-content a:hover {
text-decoration: underline;
}
table {
width: 100%;
margin-bottom: 20px;
border-collapse: collapse;
}
table td {
padding: 10px 0;
text-align: left;
}
table td:first-child {
width: 30%;
font-weight: bold;
}
table td.input {
width: 70%;
}
input[type="text"],
input[type="password"] {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
input[type="text"]:focus,
input[type="password"]:focus {
outline: none;
border-color: #007BFF;
}
.err_msg {
color: red;
font-size: 12px;
display: none;
}
.buttons {
display: flex;
justify-content: center;
}
#reg_btn {
padding: 10px 20px;
font-size: 16px;
color: #fff;
background-color: #007BFF;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
#reg_btn:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="form-div">
<div class="reg-content">
<h1>欢迎注册</h1>
<a href="login.html">已有帐号?登录</a>
</div>
<form id="reg-form" action="/Older/RegisterServlet" method="post">
<table>
<tr>
<td>用户ID</td>
<td class="input">
<input name="userID" type="text" id="userID">
<br>
<span id="username_err" class="err_msg">用户名不太受欢迎</span>
</td>
</tr>
<tr>
<td>密码</td>
<td class="input">
<input name="password" type="password" id="password">
<br>
<span id="password_err" class="err_msg">密码格式有误</span>
</td>
</tr>
</table>
<div class="buttons">
<input value="注 册" type="submit" id="reg_btn">
</div>
</form>
</div>
</body>
</html>
LoginServlet
点击查看代码
package com.QixunQiu.web;
import com.QixunQiu.pojo.User;
import com.QixunQiu.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private UserService userService = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String UserID = request.getParameter("UserID");
String Password = request.getParameter("Password");
User user =userService.selectUser(UserID, Password);
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
//3. 判断user释放为null
if(user != null){
// 登陆成功
writer.write("登陆成功");
HttpSession session = request.getSession();
session.setAttribute("user", user);
request.getRequestDispatcher("/index.jsp").forward(request,response);
}else {
// 登陆失败
writer.write("登陆失败");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
RegisterServlet
点击查看代码
package com.QixunQiu.web;
import com.QixunQiu.pojo.User;
import com.QixunQiu.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private UserService userService = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String userID = request.getParameter("userID");
String password = request.getParameter("password");
User user = new User();
user.setPassword(password);
user.setUserID(userID);
userService.addUser(user);
request.getRequestDispatcher("/login.html").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
private int sequenceNumber = 1;
public synchronized String generateID() {
// 获取当前日期
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
String dateStr = sdf.format(now);
// 读取或初始化sequenceNumber
if (sequenceNumber == 1) {
File file = new File("sequenceNumberHouse.txt");
if (file.exists()) {
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
sequenceNumber = Integer.parseInt(line);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 组合房产编号
String sequenceStr = String.format("%04d", sequenceNumber++);
String houseID = dateStr + sequenceStr;
// 更新sequenceNumber到文件
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("sequenceNumberHouse.txt"));
writer.write(String.valueOf(sequenceNumber));
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
return houseID;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能