ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Design&Bulid 2 总结(上)

2022-07-24 10:05:24  阅读:191  来源: 互联网

标签:总结 Bulid com 2eg Design ._ import servlet javax


1.前言

又到了一年一度的Design&Bulid,这次的项目是和其他专业的同学负责制作一个仓库管理系统。
项目分为两个阶段:第一阶段是与本专业的同学合作,第二阶段才是和其他专业合作。

2.要求

数据库管理和管理员端软件(电子商务专业学生)
与物联网学生共同设计数据库;并创建具有以下功能的web应用程序:
1、允许管理员登录和注销;
2、允许管理员在系统中创建仓库和添加/删除工人
3、显示每个仓库的货物状态(如货物位置)和信息(如货物种类);
额外功能:
1、生成数据分析报告和可视化。
2、自行设计的其他功能。

3.具体功能的实现

3.1 登录

老师手把手教的内容,没什么难度。

package com.example._2eg.servlet;

import java.io.IOException;

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 com.example._2eg.jspservlet.dao.UserDAO;
import com.example._2eg.jspservlet.dao.impl.UserDAOImpl;
import com.example._2eg.vo.User;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet{
    public void doGet(HttpServletRequest req, HttpServletResponse res)
            throws IOException, ServletException{
        this.doPost(req,res);
    }

    public void doPost(HttpServletRequest req, HttpServletResponse res)
            throws IOException, ServletException{
        User user = new User();
        user.setUsername(req.getParameter("username"));
        user.setPassword(req.getParameter("password"));

        UserDAO dao = new UserDAOImpl();
        try {
            user = dao.queryByUsername(user);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(user != null){
            HttpSession session=req.getSession();
            session.setAttribute("username", user.getUsername());
            try {
                dao.updateStatus(user);
            } catch (Exception e) {
                e.printStackTrace();
            }
            req.getRequestDispatcher("./welcome.jsp").forward(req,res);
        } else {
            res.sendRedirect("./error.jsp");
        }
    }
}

queryByUsername:直接与DAO层交互,根据用户名在数据库查找用户,返回一个User对象。
updateStatus:直接与DAO层交互,修改数据库中用户的登录状态,主要是做一个登录验证。
这个方法本来是给注销准备的,但是验收的时候老师提醒了一下,只修改数据库层面的状态是不够的

3.2 注销

这里认为只要在数据库里修改状态就OK,但是注销之后发现按浏览器的回退键就可以回到之前的页面。
所以这功能有啥用啊

package com.example._2eg.servlet;

import java.io.IOException;

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 com.example._2eg.jspservlet.dao.UserDAO;
import com.example._2eg.jspservlet.dao.impl.UserDAOImpl;
import com.example._2eg.vo.User;

@WebServlet("/logoutServlet")
public class LogoutServlet extends HttpServlet{
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       this.doPost(req, resp);
   }

   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

       HttpSession session = req.getSession(true);
       User user = new User();
       user.setUsername((String) session.getAttribute("username"));
       user.setStatus(1);

       UserDAO dao  = new UserDAOImpl();
       try {
           dao.updateStatus(user);
       } catch (Exception e) {
           e.printStackTrace();
       }

       session.invalidate();
       resp.sendRedirect("./login.jsp");
   }
}


3.3 创建仓库

这一部分主要是另一个同学负责的。

package com.example._2eg.servlet;

import com.example._2eg.service.WarehouseService;
import com.example._2eg.service.impl.WarehouseServiceImpl;
import com.example._2eg.vo.Warehouse;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "WarehouseAddServlet", value = "/warehouseAddServlet")
public class WarehouseAddServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Warehouse warehouse = new Warehouse();
        warehouse.setWid(Integer.parseInt(request.getParameter("Id")));
        warehouse.setWname(request.getParameter("Name"));
        WarehouseService service = new WarehouseServiceImpl();
        try {
            if(service.add(warehouse)){
                response.sendRedirect(request.getContextPath()+"/warehouseListServlet");
            }else {
                request.setAttribute("isExist","True");
                request.getRequestDispatcher("/addWarehouse.jsp").forward(request,response);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

这里用isExist判断是否有id重复的仓库,如果isExist=True,表示ID重复,在页面显示"This employee id already exists"。

    <% String isExistStr = "";%>
    <%if(request.getAttribute("isExist")!=null){ %>

    <%if(request.getAttribute("isExist").equals("True")){%>
    <%isExistStr = "This employee id already exists";%>
    <%}%>
    <%}%>
    <h5 style="text-align: center;"><span style="color: red; "><%= isExistStr %></span></h5>

3.4 展示仓库

这里也主要是另一个同学负责的。

package com.example._2eg.servlet;

import com.example._2eg.service.WarehouseService;
import com.example._2eg.service.impl.WarehouseServiceImpl;
import com.example._2eg.vo.Warehouse;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet(name = "WarehouseListServlet", value = "/warehouseListServlet")
public class WarehouseListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //查询
        WarehouseService wservice = new WarehouseServiceImpl();
        List warehouses = null;
        try {
            warehouses = wservice.findAll();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //将查到的存入request域
        request.setAttribute("warehouses", warehouses);
        //转发
        request.getRequestDispatcher("/list.jsp").forward(request, response);

    }
}

findAll:查找数据库中所有仓库,将其存储到warehouses,之后遍历。


<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<!-- 网页使用的语言 -->
<html lang="en-US">
<head>
    <!-- 指定字符集 -->
    <meta charset="utf-8">
    <!-- 使用Edge最新的浏览器的渲染方式 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
    width: 默认宽度与设备的宽度相同
    initial-scale: 初始的缩放比,为1:1 -->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Warehouse Management</title>

    <!-- 1. 导入CSS的全局样式 -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
    <script src="js/jquery-2.1.0.min.js"></script>
    <!-- 3. 导入bootstrap的js文件 -->
    <script src="js/bootstrap.min.js"></script>
    <style type="text/css">
        td, th {
            text-align: center;
        }
    </style>

    <script>
        function deleteWarehouse(id){
            //安全提示
            if(confirm("Are you sure to delete?")){
                //访问路径
                location.href="${pageContext.request.contextPath}/warehouseDeleteServlet?uid="+id;
            }
        }

        window.onload = function(){
            //给删除选中按钮添加单击事件
            document.getElementById("delSelected").onclick = function(){
                if(confirm("Are you sure to delete?")){

                    var flag = false;
                    //判断是否有选中条目
                    var cbs = document.getElementsByName("uid");
                    for (var i = 0; i < cbs.length; i++) {
                        if(cbs[i].checked){
                            //有一个条目选中了
                            flag = true;
                            break;
                        }
                    }

                    if(flag){//有条目被选中
                        //表单提交
                        document.getElementById("form").submit();
                    }

                }

            }
            //1.获取第一个cb
            document.getElementById("firstCb").onclick = function(){
                //2.获取下边列表中所有的cb
                var cbs = document.getElementsByName("uid");
                //3.遍历
                for (var i = 0; i < cbs.length; i++) {
                    //4.设置这些cbs[i]的checked状态 = firstCb.checked
                    cbs[i].checked = this.checked;

                }

            }


        }


    </script>
</head>
<body>
<div class="container">
    <h3 style="text-align: center">Warehouse Information</h3>


    <div style="float: right;margin: 5px;">

        <a class="btn btn-primary" href="${pageContext.request.contextPath}/addWarehouse.jsp">Add</a>
        <a class="btn btn-primary" href="javascript:void(0);" id="delSelected">Delete</a>

    </div>
    <form id="form" action="${pageContext.request.contextPath}/warehouseDeleteServlet" method="post">
        <table border="1" class="table table-bordered table-hover">
        <tr class="success">
            <th><input type="checkbox" id="firstCb"></th>
            <th>Id</th>
            <th>Name</th>
        </tr>

        <c:forEach items="${warehouses}" var="warehouse" varStatus="s">
            <tr>
                <td><input type="checkbox" name="uid" value="${warehouse.warehouse_id}"></td>
                <td>${warehouse.warehouse_id}</td>
                <td>${warehouse.warehouse_name}</td>
                <td><a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/findWarehouseServlet?id=${warehouse.warehouse_id}">Edit</a>&nbsp;
                    <a class="btn btn-default btn-sm" href="javascript:deleteWarehouse(${warehouse.warehouse_id});">Delete</a>
                    <a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/productListServlet?id=${warehouse.warehouse_id}">Check</a>
                </td>
            </tr>

        </c:forEach>


    </table>
        <input class="btn btn-default" type="button" value="back" onclick="javascript:history.go(-1)">
    </form>
</div>


</body>
</html>

3.5 删除仓库

删除数据库中的对应仓库。

package com.example._2eg.servlet;

import com.example._2eg.service.WarehouseService;
import com.example._2eg.service.impl.WarehouseServiceImpl;
import com.example._2eg.vo.Warehouse;

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.IOException;

@WebServlet("/warehouseDeleteServlet")
public class WarehouseDeleteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //1. 获取id
        String[] ids = req.getParameterValues("uid");
        //2. 调用service删除
        WarehouseService service =new WarehouseServiceImpl();
        try {
            service.deleteById(ids);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //3. 跳转到查询所有用户记录的Servlet
        resp.sendRedirect(req.getContextPath()+"/warehouseListServlet");

    }
}

标签:总结,Bulid,com,2eg,Design,._,import,servlet,javax
来源: https://www.cnblogs.com/LindholmX/p/16512988.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有