2024/2/27日 日志 第一次测试案例分析(4)--登录与注册和仓库方面
1.2024/10/16 日 日志 --》关于MySQL的中 基础操作的整理以及 DQL的初步学习笔记与整理2.2024/10/17日 日志 --》关于MySQL中的 约束、多表查询的初步学习笔记与整理3.2024/10/18日 日志 --》关于MySQL中的 事务 以及JDBC的初步学习笔记与整理4.2024/10/19日 日志--》关于MySQL中 JDBC的API 详解的整理简述5.2024/10/21 日 日志 --》关于Mysql中的数据库连接池 简述笔记整理6.2024/10/22日 日志 --》关于Maven的基础学习 笔记整理7.2024/10/23日 日志--》关于Maven的基础学习--2 坐标与依赖范围8.2024/10/24日 日志 --》关于Mybatis的学习笔记整理 - 环境与性质 以及ResultMap9.2024/10/25日 日志 --》关于使用Mybatis进行增删改查 ---1 查询10.2024/10/26 日 使用Mybatic --》关于Mybatis 进行增删改查 ---2 添加、修改与删除11.2024/10/28日 使用Mybatic --》关于Mybatis 的参数传递与注解开发12.2024/10/29 HTML --》关于HTML的快速入门与标签13.2024/10/30 日 日志 --》关于CSS的学习14.2024/11/1日 日志 关于JavaScript简介&引入方式 以及基础语法的学习15.2024/11/4日 日志 关于JavaScript 变量、数据类型、类型转换和流程控制语句以及对象的学习16.2024/11/5日 日志 关于BOM浏览器对象模型和DOM文档对象模型的学习与笔记整理17.2024/11/6日 日志 正则表达式,web与HTTP18.2024/11/7日 日志 Tomcat简介&基本使用19.2024/11/8日 日志 关于Servlet ----(上)20.2024/11/11日 日志 关于Servlet ----HttpServlet(下)21.2024/11/12日 日志 关于Servlet ---- Request(请求)& Response(响应) 的补充22.2024/11/13日 日志 代码优化 以及 JSP 的快速入门、原理、脚本、缺点 和 EL表达式 以及 JSTL标签23.2024/11/14日 日志 关于 MVC 分层开发模式24.2024/11/15日 日志 关于 会话跟踪技术--- Cookie & Session25.2024/11/20日 日志 关于 Filter & Listener26.2024/11/21日 日志 关于AJAX & Axious异步框架 & JSON27.2024/11/27日 日志 关于Vue && Element28.JavaWeb案例整体分析---》差旅费报销管理信息系统->>题目详情29.JavaWeb案例整体分析---》差旅费报销管理信息系统->>登录与注册30.JavaWeb案例整体分析---》差旅费报销管理信息系统->>数据库操作和Mybatis配置以及pom.xml31.JavaWeb案例整体分析---》差旅费报销管理信息系统->>出差申请与报销部分32.2024/1/13日 日志 关于Vue && Element 的后续---》综合案例(1)33.2024/1/14日 日志 关于Vue && Element 的后续---》综合案例(2)34.2024/1/16日 日志 关于Vue && Element 的后续---》综合案例(4)35.2024/1/17日 日志 关于Vue && Element 的后续---》综合案例(5)36.2024/1/18日 日志 关于Vue && Element 的后续---》综合案例(6)37.2024/1/19日 日志 关于Vue && Element 的后续---》综合案例(7)38.2024/1/20日 日志 关于Vue && Element 的后续---》综合案例(8.1)39.2024/1/21日 日志 关于Vue && Element 的后续---》综合案例(8.2)40.2024/1/22日 日志 期末考试案例回顾与分析---》综合案例(1)41.2024/1/23日 日志 期末考试案例回顾与分析---》综合案例(2)42.2024/1/24日 日志 期末考试案例回顾与分析---》综合案例(3)43.2024/1/25日 日志 期末考试案例回顾与分析---》综合案例(4)44.2024/1/26日 日志 期末考试案例回顾与分析---》综合案例(5)45.2024/1/27日 日志 期末考试案例回顾与分析---》综合案例(6)46.2024/2/3日 日志 期末考试案例回顾与分析---》综合案例(7)47.2024/2/4日 日志 期末考试案例回顾与分析---》综合案例(8)48.2024/2/5日 日志 期末考试案例回顾与分析---》综合案例(9)49.2024/2/6日 日志 期末考试案例回顾与分析---》综合案例(10)50.2024/2/7日 日志 期末考试案例回顾与分析---》综合案例(汇总)51.2024/2/24日 日志 第一次测试案例分析(1)--题目52.2024/2/25日 日志 第一次测试案例分析(2)--数据库层面53.2024/2/26日 日志 第一次测试案例分析(3)--基础准备
54.2024/2/27日 日志 第一次测试案例分析(4)--登录与注册和仓库方面
UserMapper
点击查看代码
package com.Moonbeams.mapper;
import com.Moonbeams.pojo.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
public interface UserMapper {
/**
* 根据用户名和密码查询用户对象
* @param username
* @param password
* @return
*/
@Select("select *from ft_user where username = #{username} and password = #{password}")
@ResultMap("UserResultMap")
User select(@Param("username") String username, @Param("password") String password);
/**
* 根据用户名查询用户对象
*
* @param username
* @return
*/
@Select("select *from ft_user where username = #{username}")
@ResultMap("UserResultMap")
User selectByUsername(@Param("username") String username);
/**
* 添加用户
* @param user
*/
@Insert("insert into ft_user values(null,#{username},#{password},#{identify})")
@ResultMap("UserResultMap")
void add(User user);
/**
* 修改密码
* @param user
*/
@Update("update ft_user set password = #{password} where username = #{username}")
@ResultMap("UserResultMap")
void modifyPassword(User user);
/**
* 重置密码为123456
* @param user
*/
@Update("update ft_user set password = '123456' where username = #{username}")
@ResultMap("UserRe" +
"sultMap")
void resetPassword(User user);
@Update("update ft_user set identify = #{identify} where username = #{username}")
@ResultMap("UserResultMap")
void modifyIdentify(User user);
}
CheckCodeServlet
点击查看代码
package com.Moonbeams.web;
import com.Moonbeams.service.UserService;
import com.Moonbeams.util.CheckCodeUtil;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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;
@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {
private UserService service = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//生成验证码
ServletOutputStream os = response.getOutputStream();
String checkCode = CheckCodeUtil.outputVerifyImage(100,50,os,4);
//存入session
HttpSession session = request.getSession();
session.setAttribute("checkCodeGen",checkCode);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
点击查看代码
package com.Moonbeams.web;
import com.Moonbeams.pojo.User;
import com.Moonbeams.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
private UserService service = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//获取复选框数据
String remembe = request.getParameter("remembe");
//2.调用Service查询
User user = service.login(username, password);
//3.判断
if (user != null) {
//登录成功,存储用户信息到会话
//判断用户是否勾选记住我
if(("1".equals(remembe))) {
//勾选了,发送cookie
//1. 创建cookie 对象
//Cookie cookie = new Cookie("uname",URLEncoder.encode(uname,"UTF-8")); 创建时设置字符集
Cookie c_username = new Cookie("username", username);
Cookie c_password = new Cookie("password", password);
//设置cookie存活时间
c_username.setMaxAge(60*60*24*7);
c_password.setMaxAge(60*60*24*7);
//2. 发送
response.addCookie(c_username);
response.addCookie(c_password);
}
//将登陆成功后的User对象,存储到session
HttpSession session = request.getSession();
session.setAttribute("user", user);
String contextPath = request.getContextPath();
response.sendRedirect(contextPath + "/personalHome.jsp");
} else{
//登录失败
//存储错误信息到request
request.setAttribute("login_msg", "用户名或密码错误");
//跳转到login.jsp
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
点击查看代码
package com.Moonbeams.web;
import com.Moonbeams.pojo.User;
import com.Moonbeams.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.util.Random;
@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
private UserService service = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//1. 获取对应用户名和密码数据
String username = request.getParameter("username");
String password = request.getParameter("password");
String identify = request.getParameter("identify");
//获取用户输入的验证码
String checkCode = request.getParameter("checkCode");
//获取程序生成的验证码,从Session中获取
HttpSession session = request.getSession();
String checkCodeGen =(String) session.getAttribute("checkCodeGen");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setIdentify(identify);
//比对验证码XxXx
if(!checkCodeGen.equalsIgnoreCase(checkCode)){
request.setAttribute("register_msg","验证码错误");
request.getRequestDispatcher("/register.jsp").forward(request, response);
//不允许注册
return;
}
//2. 调用service注册
boolean flag = service.register(user);
//判断注册成功与否
if (flag) {
//注册成功,跳转到登录页面
request.setAttribute("register_msg", "注册成功,请登录");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}else{
//注册失败,跳转到注册页面
request.setAttribute("register_msg", "注册失败,用户名已存在");
request.getRequestDispatcher("/register.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
点击查看代码
<%--
Created by IntelliJ IDEA.
User: 20713
Date: 2024/11/10
Time: 22:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
<link rel="stylesheet" type="text/css" href="css/login.css"> <!-- 可选的样式文件 -->
</head>
<body>
<div id="loginDiv" style="height: 350px">
<form action="loginServlet" id="form">
<h1 id="loginMsg">登 录</h1>
<div id="errorMsg">${login_msg} ${register_msg}</div>
<p>Username:<input id="username" name="username" value= "${cookie.username.value}" type="text"></p>
<p>Password:<input id="password" name="password" value="${cookie.password.value}" type="password"></p>
<p>Remember:<input id="remember" name="remember" value="1" type="checkbox"></p>
<div id="subDiv">
<input type="submit" class="button" value="login up">
<input type="reset" class="button" value="reset">
<a href="register.jsp">没有账号?</a>
</div>
</form>
</div>
</body>
</html>
点击查看代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false" %>
<%
session.invalidate(); // 清除 session
response.sendRedirect("login.jsp"); // 重定向到登录页面
%>
点击查看代码
<%@ page import="com.Moonbeams.pojo.User" %><%--
Created by IntelliJ IDEA.
User: 20713
Date: 2024/11/11
Time: 21:03
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>欢迎注册</title>
<link rel="stylesheet" type="text/css" href="css/register.css"> <!-- 可选的样式文件 -->
</head>
<body>
<div class="form-div">
<div class="reg-content">
<h1>欢迎注册</h1>
<span>已有帐号?</span> <a href="login.jsp">登录</a>
</div>
<form id="reg-form" action="registerServlet" method="post">
<table>
<tr>
<td>用户名</td>
<td class="inputs">
<input required name="username" type="text" id="username">
<br>
<span id="username_err" class="err_msg" >${register_msg}</span>
</td>
</tr>
<tr>
<td>密码</td>
<td class="inputs">
<input required name="password" type="password" id="password">
<br>
<span id="password_err" class="err_msg" style="display: none">密码格式有误</span>
</td>
</tr>
<tr>
<td>身份</td>
<td class="inputs">
<input required name="identify" type="text" id="identify">
<br>
<span id="identify_err" class="err_msg" style="display: none">身份填写有误</span>
</td>
</tr>
<tr>
<td>验证码</td>
<td class="inputs">
<input name="checkCode" type="text" id="checkCode">
<img id ="checkCodeImg" src="/FTest/checkCodeServlet">
<a href="#" id="changeImg">看不清?</a>
</td>
</tr>
</table>
<div class="buttons">
<input value="注 册" type="submit" id="reg_btn">
</div>
<br class="clear">
</form>
</div>
<script>
document.getElementById("changeImg").onclick = function (){
document.getElementById("checkCodeImg").src = "/FTest/checkCodeServlet?"+new Date().getMilliseconds();
}
document.getElementById("checkCodeImg").onclick = function (){
document.getElementById("checkCodeImg").src = "/FTest/checkCodeServlet?"+new Date().getMilliseconds();
}
</script>
</body>
</html>
点击查看代码
<%@ page import="com.Moonbeams.pojo.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false" %>
<%
User currentUser = (User) session.getAttribute("user");
if (currentUser == null) {
response.sendRedirect("login.jsp");
return;
}
String currentUsername = currentUser.getUsername();
%>
<html>
<head>
<title>仓储管理系统-->主页</title>
<link rel="stylesheet" type="text/css" href="css/styles.css"> <!-- 可选的样式文件 -->
</head>
<body>
<h1>仓储管理系统</h1>
<h2>
<%if(currentUser.getIdentify().equalsIgnoreCase("仓库管理人员")){%>
<%=currentUsername%>,仓库管理人员,你好!</h2>
<nav>
<ul>
<li><a href="inStore.jsp">入库</a></li>
<li><a href="outStore.jsp">出库</a></li>
<li><a href="Search.jsp">统计查询</a></li>
</ul>
</nav>
<%}else if(currentUser.getIdentify().equalsIgnoreCase("管理员")){%>
<h2>
<%=currentUsername%>,管理员,你好!</h2>
<nav>
<ul>
<li><a href="insertStorehouse.jsp">新增仓库</a></li>
<li><a href="StoreList.jsp">修改仓库</a></li>
<li><a href="StoreList.jsp">删除仓库</a></li>
<li><a href="StoreList.jsp"> 浏览仓库列表</a></li>
<li><a href="insertMaterial.jsp">新增物资类别</a></li>
<li><a href="MaterialList.jsp">删除物资类别</a></li>
<li><a href="MaterialList.jsp">修改物资类别基本信息</a></li>
<li><a href="MaterialList.jsp"> 浏览物资类别列表</a></li>
</ul>
</nav>
<%}%>
<nav>
<ul>
<li><a href="login.jsp">重新登录</a></li>
</ul>
</nav>
</body>
</html>
新增仓库:增加新的仓库信息;
删除仓库:删除仓库基本信息时,必须验证没有相关物资存储在该仓库中,提示用户不允许删除。
修改仓库:仓库编号唯一不允许修改,并且验证没有相关物资存储在该仓库中,否则不允许修改仓库信息。
StorehouseMapper
点击查看代码
package com.Moonbeams.mapper;
import com.Moonbeams.pojo.Storehouse;
import com.Moonbeams.pojo.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface StorehouseMapper {
/**
* 添加仓库
* @param storehouse
*/
@Insert("insert into ft_storehouse values(null,#{storehouseName},#{description})")
@ResultMap("StorehouseMap")
void addStore(Storehouse storehouse);
/**
* 删除仓库
* @param id
*/
@Delete("delete from ft_storehouse where id=#{id} and description = '空仓'")
@ResultMap("StorehouseMap")
void deleteStoreById(@Param("id") int id);
/**
* 修改仓库
* @param storehouse
*/
@Update("update ft_storehouse set storehouseName=#{storehouseName} where id=#{id} and description = '空仓'")
@ResultMap("StorehouseResultMap")
void modifyStore(Storehouse storehouse);
@Update("update ft_storehouse set description =#{description} where id=#{id}")
@ResultMap("StorehouseResultMap")
void modifyStoreDescription(Storehouse storehouse);
@Select("select *from ft_storehouse where id=#{id}")
@ResultMap("StorehouseResultMap")
Storehouse getStoreById(@Param("id") int id);
@Select("select *from ft_storehouse")
@ResultMap("StorehouseResultMap")
List<Storehouse> getStorehouseList();
}
insertStorehouse.jsp
点击查看代码
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="com.Moonbeams.pojo.User" %>
<%@ page import="java.util.List" %>
<%@ page import="com.Moonbeams.service.AdministratorService" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false" %>
<%
User currentUser = (User) session.getAttribute("user");
if (currentUser == null) {
response.sendRedirect("login.jsp");
return;
}
AdministratorService service = new AdministratorService();
%>
<html>
<head>
<title>新增仓库</title>
<link rel="stylesheet" type="text/css" href="css/styles.css"> <!-- 可选的样式文件 -->
</head>
<body>
<h1>新增仓库</h1>
<form action="administratorServlet" method="post">
<input type="hidden" name="action" value="addStore">
<input type="hidden" id="id" name="id">
<label for="StorehouseName">仓库名:</label><input type="text" id="StorehouseName" name="StorehouseName"required><br><br>
<input type="submit" value="提交">
</form>
<div class="transparent-box">
<a href="personalHome.jsp">返回主界面</a>
</div>
</body>
</html>
StoreList.jsp
点击查看代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.List" %>
<%@ page import="com.Moonbeams.pojo.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.Moonbeams.service.AdministratorService" %>
<%@ page import="com.Moonbeams.pojo.Storehouse" %>
<%@ page isELIgnored="false" %>
<%
User currentUser = (User) session.getAttribute("user");
if (currentUser == null) {
response.sendRedirect("login.jsp");
return;
}
AdministratorService service = new AdministratorService();
List<Storehouse> storehouses = service.getAllStorehouse();
%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/styles.css">
<meta charset="UTF-8">
<title>仓库列表</title>
</head>
<body>
<h1>仓库列表</h1>
<table id="dailyReportsTable" border="1">
<tr>
<th>仓库ID</th>
<th>仓库名</th>
<th>仓库补充信息</th>
</tr>
<%
if (storehouses != null) {
for (Storehouse storehouse : storehouses) {
String rowClass = "row"; // Add this line
if ("空仓".equals(storehouse.getDescription())) {
rowClass = "row-unapproved"; // Add this line
}
%>
<tr class="<%= rowClass %>">
<%-- <tr>--%>
<td><%= storehouse.getId() %></td>
<td><%= storehouse.getStorehouseName() %></td>
<td><%= storehouse.getDescription() %></td>
<td>
<%if(storehouse.getDescription().equalsIgnoreCase("空仓")){%>
<form action="modifyStorehouse.jsp" method="post">
<input type="hidden" name="id" value="<%= storehouse.getId() %>">
<input type="submit" value="修改">
</form>
<form action="administratorServlet" method="post">
<input type="hidden" name="action" value="deleteStore">
<input type="hidden" name="id" value="<%= storehouse.getId() %>">
<input type="submit" value="删除">
</form>
<%}%>
</td>
</tr>
<% }
}
%>
</table>
<br>
<div class="transparent-box">
<a href="insertStorehouse.jsp">新增仓库</a>
</div>
<div class="transparent-box">
<a href="personalHome.jsp">返回主界面</a>
</div>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署