人事管理系统为你解剖JSP
人事管理系统为你解剖JSP
前言:
之前写过两篇学习JSP的博客,《Java匹马行天下之JavaWeb核心技术——JSP》https://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的博客《Maven》https://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匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,期待我们都有美好的明天!
支持我的朋友们记得点波推荐哦,您的肯定就是我进步的动力。
人事管理系统为你解剖JSP的更多相关文章
- Java Web 开发进阶案例之人事管理系统的完整实现
技术:Java+ jsp + servlet+ javabeans +sql+tomcat 概述 本系统的主要任务是实现人事管理系统的系统化和自动化管理, 主要包括招聘入 职.到期离职和员工调动信 ...
- 基于Spring MVC + Spring + MyBatis的【人事管理系统】
资源下载:https://download.csdn.net/download/weixin_44893902/33163160 一.语言和环境 实现语言:JAVA语言 环境要求:IDEA/Eclip ...
- 团队编程——web应用之人事管理系统
本次作业为团队作业,团队博客要求如下:1. 介绍团队情况:包括队长.成员.队名.成员照片.队训--.等:2. 介绍团队项目名称.总体任务,各成员任务等:3. 每个队做 一次需求调研(针对团队项目),要 ...
- MFC原创:三层架构01(人事管理系统)DAL
VC++/MFC Window编程原创教程文件夹 C++课程设计来着.但还没学过数据,也还没理解过三层架构,就把这个作业深化点来做了.尽管要做的这个人事管理系统看起来是挺简单的,无非就是处理员工信息. ...
- JAVA课程设计——一个简单的教务人事管理系统
大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...
- Java课程设计——人事管理系统
主界面代码: package PersonSystem; import java.awt.*; import java.awt.event.*; import javax.swing.*; impor ...
- 基于SSM后台管理系统/人事管理系统
今天给大家分享一个基于SpringMVC+Mybatis+Mysql的后台管理系统,顾名思义,一个系统一般分为前台和后台,前台主要面向用户,而后台主要面向的则是管理员,后台和前台有所不同,后台的业务一 ...
- 课程信息管理系统(javabean + Servlet + jsp)
此项目做的事一个课程管理系统,需要通过web做一个可以实现课程的增删改查的功能. 需要用到数据库,Servlet和jsp等(第一次使用Servlet和数据库连接,所以代码都比较低级,页面也比较粗糙,还 ...
- JavaWeb——库存管理系统(1)jsp部分---18.12.13
add.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...
随机推荐
- 一种基于Qt的可伸缩的全异步C/S架构服务器实现(一) 综述
本文向大家介绍一种基于Qt的伸缩TCP服务实现.该实现针对C/S客户端-服务集群应用需求而搭建.连接监听.数据传输.数据处理均在独立的线程池中进行,根据特定任务不同,可安排负责监听.传输.处理的线程数 ...
- Qt元类型(MetaType)注册入门(附一些官方文档的关键摘录)
昨天调试项目时,突然发现如下消息: QObject::connect: Cannot queue arguments of type 'ERROR_LEVEL' (Make sure 'ERROR_L ...
- Socket2实现tcp端口扫描
主要的界面如下: 主要代码如下: //对于每一个线程,传过去的参数 typedef struct ThreadParamStruct { CString strIP; //要扫描的IP地址 UINT ...
- spring3升级到spring4通用异常处理返回jsonp多了/**/的解决办法
问题描述 在spring3中定义了通用的异常处理,具体代码如下: public class CommonExceptionHandler implements HandlerExceptionReso ...
- 基于 ZooKeeper 搭建 Spark 高可用集群
一.集群规划 二.前置条件 三.Spark集群搭建 3.1 下载解压 3.2 配置环境变量 3.3 集群配置 3.4 安装包分发 四.启 ...
- github 上传更新代码(最简单的方法)
1.首先你需要一个github账号,还没有的朋友先去注册一个吧! GitHub地址:https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可 ...
- 解决安装Oracle本地可以访问客户端不能访问
现象:本地需要修改监听为localhost -->win+r--> sqlplus system/123@xxdb 可以登陆,远程客户端不能登陆:需要将监听修改为IP地址,重启监听:远程可 ...
- 节能减排到底如何----google earth engine 告诉你!!
(First,再次严谨说明,本人成果未经允许,切勿发表到相关学术期刊,如果有技术交流,qq1044625113,顺便打个广告,兼职GEE开发,欢迎联系!) 终于过了严寒的冬天,2017年的冬天中国南方 ...
- MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...
- git操作相关
-- 创建远程仓库 git init --bare git仓库文件夹名称 从远程仓库复制出本地仓库 git clone ./lth.git local 本地仓库和远程仓库的同步 本地仓库的配置文件co ...
