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);
    }
}

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();

    @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);
    }

}

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();
    @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);
    }
}

login.jsp
点击查看代码
<%--
  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">&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(); // 清除 session
    response.sendRedirect("login.jsp"); // 重定向到登录页面
%>

register.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>
posted @   Moonbeamsc  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
返回顶端
点击右上角即可分享
微信分享提示