zoukankan      html  css  js  c++  java
  • 人事管理系统案例

    人事管理系统为你解剖JSP

    前言:

    之前写过两篇学习JSP的博客,《Java匹马行天下之JavaWeb核心技术——JSPhttps://www.cnblogs.com/zyx110/p/10926587.html ,里面详细解说了学习JSP需要的所有知识点。这几天要给身边的两个朋友讲JSP,翻着看了看之前写的博客,知识虽然很全,但太多了,如果是新手,看着会很枯燥,那个只适合学过一遍后的人回头复习的时候查阅,不适合初学者入门学习,为此,我特意找了一篇人事管理系统案例,通过案例去理解和学习JSP,希望能对一些需要的朋友有所帮助。

    案例介绍:

    此篇用纯JSP技术,实现了一个完整且简单的人事管理系统,用Map集合模拟数据库的数据存储,有登录,页面跳转,Session存储,修改等知识的应用,我觉得对于初学者,这是再适合不过的案例了,特作此篇,友情奉献,如有欠缺,忘海涵并指正。

    案例演示:

     

     

    案例讲解

    以上演示的只是其中的一部分,里面有一些细节,我会在后面讲解的时候细说。

    案例结构及案例准备

     

    我用的开发工具是IDEA,如果有不会用IDEA的朋友可以看之前写过的博客《IDEA新手使用教程https://www.cnblogs.com/zyx110/p/10666082.html,我建的这是一个Maven项目,如果有朋友不知道Maven,可以先看一下我之前写的介绍Maven的博客《Mavenhttps://www.cnblogs.com/zyx110/p/10619148.html,不知道如何配置Maven环境的可以看《Maven的安装与配置》https://www.cnblogs.com/zyx110/p/10801666.html不知道如何在IDEA中建Maven项目的朋友可以看《IDEA为新手专业打造https://www.cnblogs.com/zyx110/p/10802098.html,此案例还会用到Tomcat,同样,不会在IDEA中配置Tomcat的朋友可以看《IDEA为新手专业打造https://www.cnblogs.com/zyx110/p/10802098.html,好,完成这些,就可以开始敲代码了。

    实体类

    package entity;
    
    public class Emp {
        private String account;//账号
        private String password;//密码
        private String email;//邮箱
    
        public String getAccount() {
            return account;
        }
    
        public void setAccount(String account) {
            this.account = account;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public Emp(String account, String password, String email) {
            this.account = account;
            this.password = password;
            this.email = email;
        }
    
        public Emp() {
        }
    }
    
     
    

      

    模拟数据库类

    package db;
    
    
    
    import entity.Emp;
    
    
    
    import java.util.HashMap;
    
    import java.util.Map;
    
    
    
    public class DBUtil {
    
        public static Map<String, Emp> map = new HashMap<String, Emp>();
    
    
    
        static {
    
            map.put("101", new Emp("101", "123456", "101@qq.com"));
    
            map.put("102", new Emp("102", "123456", "102@qq.com"));
    
            map.put("103", new Emp("103", "123456", "103@qq.com"));
    
            map.put("104", new Emp("104", "123456", "104@qq.com"));
    
        }
    
    
    
        public static boolean isAccountAndPassword(Emp emp) {
    
            boolean flag = false;
    
            for (String key : map.keySet()) {
    
                Emp emp1 = map.get(key);
    
                if (emp1.getAccount().equals(emp.getAccount()) && emp1.getPassword().equals(emp.getPassword())) {
    
                    flag = true;
    
                    break;
    
                }
    
            }
    
    
    
            return flag;
    
        }
    
    }
    

      

    JSP之登录页面(login.jsp)

     

     
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    <html>
    
    <head>
    
        <title>登录页面</title>
    
    </head>
    
    <body>
    
    <h3 align="center">人事管理系统</h3>
    
    <form action="controller.jsp">
    
        <table align="center" border="1px" bgcolor="#ff8c00" width="500px" height="300px">
    
            <tr>
    
                <td align="center">账号:</td>
    
                <td align="center"><input type="text" name="account"></td>
    
            </tr>
    
            <tr>
    
                <td align="center">密码:</td>
    
                <td align="center"><input type="password" name="password"></td>
    
            </tr>
    
            <tr>
    
                <td colspan="2" align="center"><input type="submit" value="登录"></td>
    
            </tr>
    
        </table>
    
    </form>
    
    </body>
    
    </html>
    

      

     

    JSP之登录判断及数据显示页面(controller.jsp)

     

    <%@ page import="entity.Emp" %>
    
    <%@ page import="db.DBUtil" %>
    
    <%@ page import="java.util.Map" %>
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %>
    
    <html>
    
    <head>
    
        <title>人员判断和显示页面</title>
    
    </head>
    
    <body>
    
    <%
    
        //接收登录页面请求的参数
    
        String account = request.getParameter("account");
    
        String password = request.getParameter("password");
    
        Emp emp = new Emp(account,password,null);
    
        //判断人员信息
    
        boolean flag = DBUtil.isAccountAndPassword(emp);
    
        Map<String,Emp> map = DBUtil.map;
    
        if (flag){
    
            session.setAttribute("account",account);
    
            Object o =application.getAttribute("count");
    
            if (o==null){
    
                application.setAttribute("count",1);
    
            }else {
    
                int count = Integer.parseInt(o.toString());
    
                application.setAttribute("count",count+1);
    
            }
    
    %>
    
    <h3 align="right">访问量:<%=application.getAttribute("count")%></h3>
    
    <h3 align="right">当前账户:<%=session.getAttribute("account")%></h3>
    
    <table align="center" border="1px" bgcolor="#f5f5dc" width="500px" height="500px">
    
        <tr>
    
            <td align="center">账户</td>
    
            <td align="center">密码</td>
    
            <td align="center">邮箱</td>
    
            <td align="center">修改</td>
    
        </tr>
    
        <%for (String key:map.keySet()){
    
            Emp emp1 = map.get(key);
    
        %>
    
        <tr>
    
            <td align="center"><%=emp1.getAccount()%></td>
    
            <td align="center"><%=emp1.getPassword()%></td>
    
            <td align="center"><%=emp1.getEmail()%></td>
    
            <td align="center"><a href="update.jsp?account=<%=emp1.getAccount()%>&password=<%=emp1.getPassword()%>&email=<%=emp1.getEmail()%>">修改</a></td>
    
        </tr>
    
        <%
    
            }
    
            }else {
    
            throw new Exception("账号或密码错误");
    
            }
    
        %>
    
    </table>
    
    </body>
    
    </html>
    

      

    内容解析:

     

     

    如图所示:

    1、Session:主要用于跟踪会话

    什么是会话?

    会话是代表用户第一次进入当前系统直到退出系统或关闭浏览器,在此期间与服务器的一系列交互。

    Session作用域:会话期间

    在这是在session对象中存储一些数据,实现信息共享。

    2、application对象应用

    Application:     提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径方式。是ServletContext类的实例,与应用上下文有关。    

    Application作用域:web容器的生命周期。

    在这用来获取当前系统的访问量。

     

     

    3、exception:异常对象

     

    在JSP中如果一个页面中出现了错误,可以交由另外一个页面处理。在此页面中指定一个错误处理的页面errorPage=”error.jsp”,然后新建一个error.jsp的页面,如下:

     


    <%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
    
    <html>
    
    <head>
    
        <title>报错页面</title>
    
    </head>
    
    <body>
    
        <%=exception.getMessage()%>
    
    </body>
    
    </html>
    

      

     

    在此指定为错误页面。

     

    JSP之修改页面(update.jsp)


    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    <html>
    
    <head>
    
        <title>修改人员信息页面</title>
    
    </head>
    
    <body>
    
    <h3 align="right">当前账户:<%=session.getAttribute("account")%></h3>
    
    <form action="update_controller.jsp">
    
    
    
        <table align="center" border="1px" bgcolor="#ff8c00">
    
            <tr>
    
                <td>账号</td>
    
                <td><input type="text" name="account" value="<%=request.getParameter("account")%>"></td>
    
            </tr>
    
            <tr>
    
                <td>密码</td>
    
                <td><input type="text" name="password" value="<%=request.getParameter("password")%>"></td>
    
            </tr>
    
            <tr>
    
                <td>邮箱</td>
    
                <td><input type="text" name="email" value="<%=request.getParameter("email")%>"></td>
    
            </tr>
    
            <tr>
    
                <td colspan="2"><input type="submit" value="提交"></td>
    
            </tr>
    
        </table>
    
    </form>
    
    </body>
    
    </html>
    

      

    JSP之修改成功并显示页面(update_controller.jsp)

     

    <%@ page import="java.util.Map" %>
    
    <%@ page import="entity.Emp" %>
    
    <%@ page import="db.DBUtil" %>
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    <html>
    
    <head>
    
        <title>修改控制页面</title>
    
    </head>
    
    <body>
    
    <%
    
        Map<String, Emp> map = DBUtil.map;
    
        Emp emp = map.get(request.getParameter("account"));
    
        emp.setPassword(request.getParameter("password"));
    
        emp.setEmail(request.getParameter("email"));
    
    
    
    
    
    %>
    
    <h3 align="right">当前账户:<%=session.getAttribute("account")%></h3>
    
    <h3 align="center">信息修改成功</h3>
    
    <form action="">
    
        <table align="center" border="1px" bgcolor="#ff8c00" width="500px" height="500px">
    
            <tr>
    
                <td>账户</td>
    
                <td>密码</td>
    
                <td>邮箱</td>
    
                <td>修改</td>
    
            </tr>
    
            <%
    
                Map<String,Emp> map1 = DBUtil.map;
    
                for (String key:map1.keySet()){
    
                  Emp emp1 = map1.get(key);
    
    
    
            %>
    
            <tr>
    
                <td><%=emp1.getAccount()%></td>
    
                <td><%=emp1.getPassword()%></td>
    
                <td><%=emp1.getEmail()%></td>
    
                <td><a href="update.jsp?account=<%=emp1.getAccount()%>&password=<%=emp1.getPassword()%>&email=<%=emp1.getEmail()%>">修改</a></td>
    
            </tr>
    
            <%}%>
    
        </table>
    
    </form>
    
    </body>
    
    </html>
    

      

    案例总结

    其实总结这篇博客,虽然案例看着很简单,但我觉得这里面透露着一种学习方法,通过案例去学习知识,有思维有逻辑,适合的才是最好的,避免你在学习迷茫的过程中乱冲乱撞,做一些无用功。到此案例结束,如果想系统学习JSP,就去我的博客园看《Java匹马行天下之JavaWeb核心技术——JSP》,“https://www.cnblogs.com/zyx110/p/10926587.html” 更多精彩等你学习,记住,“越懂得分享,你的价值增值越大”。

     

    *****************************************************************************************************

    我的博客园地址:https://www.cnblogs.com/zyx110/

    转载请说明出处

    我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的技术分享“Java匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,期待我们都有美好的明天!

    支持我的朋友们记得点波推荐哦,您的肯定就是我进步的动力。

     

  • 相关阅读:
    angularJS之路由
    angularJS之ng-repeat
    智能算法之Matlab实现(1)——遗传算法(1)
    如何快速处理线上故障
    测试计划怎么写
    接口测试基础
    HTTP 的一些问题
    DevOps简介
    什么是DevOps?
    HTTPS 如何保证数据传输的安全性
  • 原文地址:https://www.cnblogs.com/zyx110/p/11227837.html
Copyright © 2011-2022 走看看