2024/2/27日 日志 第一次测试案例分析(4)--登录与注册和仓库方面

news/2025/2/27 23:20:29/文章来源:https://www.cnblogs.com/MoonbeamsC/p/18742318

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();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//生成验证码ServletOutputStream os = response.getOutputStream();String checkCode = CheckCodeUtil.outputVerifyImage(100,50,os,4);//存入sessionHttpSession session = request.getSession();session.setAttribute("checkCodeGen",checkCode);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
LoginServlet
点击查看代码
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();@Overrideprotected 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对象,存储到sessionHttpSession session = request.getSession();session.setAttribute("user", user);String contextPath = request.getContextPath();response.sendRedirect(contextPath + "/personalHome.jsp");} else{//登录失败//存储错误信息到requestrequest.setAttribute("login_msg", "用户名或密码错误");//跳转到login.jsprequest.getRequestDispatcher("/login.jsp").forward(request, response);}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}}
RegisterServlet
点击查看代码
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();@Overrideprotected 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);//比对验证码XxXxif(!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);}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
login.jsp
点击查看代码
<%--Created by IntelliJ IDEA.User: 20713Date: 2024/11/10Time: 22:14To 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">&nbsp;&nbsp;&nbsp;<a href="register.jsp">没有账号?</a></div></form>
</div></body>
</html>
logout.jsp
点击查看代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false" %>
<%session.invalidate(); // 清除 sessionresponse.sendRedirect("login.jsp"); // 重定向到登录页面
%>
register.jsp
点击查看代码
<%@ page import="com.Moonbeams.pojo.User" %><%--Created by IntelliJ IDEA.User: 20713Date: 2024/11/11Time: 21:03To 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 lineif ("空仓".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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/890905.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Web的图书管理系统全面解析与实践指南

@目录一、项目背景与目标二、技术选型与开发工具(一)后端技术:Java 与 Servlet(二)前端技术:HTML、CSS 与 JavaScript(三)数据库:MySQL(四)开发工具:Eclipse三、系统架构设计(一)表示层(二)业务逻辑层(三)数据访问层四、功能模块详解(一)用户角色与权限管理…

Juniper SRX1500 防火墙 Internet与SDWAN分流配置

Chassis 管理接口fxp0 大多数SRX设备都有独立的管理接口,名称为fxp0。 低端一些的设备,比如SRX300/320是没有独立的fxp0的。 需要从接口中挑一个作为管理接口。 Interface Renumbering Juniper的堆叠叫Chassis, 堆叠的节点分别叫node0和node1。 堆叠建立以后, 在查看配置的…

逆向软件设计和开发

在软件技术迅猛发展的今天,逆向工程已成为理解、分析和改进现有软件系统的重要手段。旨在深入剖析目标软件的内部结构、功能逻辑和数据流,为软件维护、安全评估和功能扩展提供可靠依据。 在本次实验中,本人基于同学提供的一份C++课程设计的员工信息管理系统进行逆向工程开发…

如何构建多模态AI知识库?

转载:如何构建多模态AI知识库?摘要 在科技飞速发展的当下,人工智能(AI)已成为推动各行业变革的关键力量。其中,多模态 AI 知识库作为 AI 领域的重要创新,正引领我们迈向一个全新的智能时代。它打破了传统数据处理的单一模式,融合文本、图像、音频、视频等多种数据模态,…

使用 DeepSeek R1 和 Ollama 开发 RAG 系统

1.概述 掌握如何借助 DeepSeek R1 与 Ollama 搭建检索增强生成(RAG)系统。本文将通过代码示例,为你提供详尽的分步指南、设置说明,分享打造智能 AI 应用的最佳实践。 2.内容 2.1 为什么选择DeepSeek R1? 在这篇文章中,我们将探究性能上可与 OpenAI 的 o1 相媲美、但成本却…

[NCTF 2022]qrssssssssqrssssssss_revenge WP

[NCTF 2022]qrssssssss&qrssssssss_revenge WP[NCTF 2022]qrssssssss&qrssssssss_revenge WP 本来最近是想练习写 python 脚本的,无意之中刷到了这道题,看到是关于二维码的,于是正好研究一下。 看了官方 WP有些概念没怎么懂,又去借鉴了别人的二维码学习笔记,不过…

昆明理工大学25年材料工程考研预计调剂158人

--材测材料物理与化学材料学材料表征与分析材料工程F001现代材料测试技术F002材料成型技术基础864材料科学基础

7.4.1 Inception 块

白色的\(1\times 1\)卷积层是用来降低通道数的,蓝色的卷积层是用来学习特征的 大致解释一下这些数字是怎么分配的。现在我们的通道数是\(192\),于是我们假设最后输出的通道数是\(256\);考虑这些通道如何分配:我们知道\(3\times 3\)的卷积层性质很好(参数不算太多,学习能力…

Windows安装ollama运行deep seek R1模型+Page Assist浏览器插件本地使用

在Windows系统上安装Ollama并运行DeepSeek R1模型,同时结合Page Assist浏览器插件实现本地使用,可以按照以下步骤操作: 一、安装Ollama 下载Ollama: 访问Ollama官方网站,下载适用于Windows的版本。安装路径默认在c盘创建符号链接 原路径:C:\Users\18368\.ollama目标路径:…

上海海洋大学软件开发与创新课程设计作业

我给上学期其他同学的大作业添加了一些功能,已有的功能只有用户注册并填写账号密码,然后点击登录按钮成功登录 现在添加的新功能如下: 1,添加了一个真正可以选课的页面,添加了一些课程选项 2,可以存储用户选课的历史和方案 3,添加了一个管理员页面用于查看用户账号密码以…

Qwen2.5-0.5B siglip 预训练 / 微调实验

前言视频 | 仓库跟着教程做的,记录学习过程。 环境双卡 3090 24G CUDA 12.2 transformers 4.49概述 通过在 Qwen2.5-0.5B 和 siglip 之间训练一个中间层构造 VLM。作者提到首次微调时,只冻结了视觉模型的参数,导致阶梯状的 loss 曲线,即发生过拟合。应冻结文本和视觉模型的…

2025.2.27(Java的输出换行)

如图输出println,这个ln相当于输出完后自动换一次行。如图输出print,去掉ln不换行。