jdbc+jsp实现简单员工管理系统
作者:lxh5431 发布时间:2021-08-31 23:08:15
标签:jdbc,jsp,管理系统
简单的页面分析
在上一个文章简单的数据库连接测试,已经测试和数据库做简单的交互,也就是dao层的实现,接下来要说的却是action的简单实现,在ssh中有struts作为表示层和server的交换,而这里我不是说的是关于struts这里只是简单的运用jsp的代码书写来实现数据的传输,这也是最繁琐的步骤,但是这却让我们对底层的调用有一个简单的了解,这里是直接调用封装好的数据,交换和使用,首先要书写的是action的使用,用的最多的就是getParameter表单的提交了,这里在网络上提交一个表单吗,然后通过getParameter进行获取,然后通过enployeeDao中的方法进行增删改查,就能够进行基本的逻辑操作了。
代码实现
<%@page import="dao.EmployeeDao"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="entity.Employee"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
//1、接收表单提交的参数
String action = request.getParameter("action");
//3.调用EmployeeDao中addEmployee(Employee employee)完成员工添加
EmployeeDao employeeDao = new EmployeeDao();
if (action.equals("0") || action.equals("1")) {
//添加 更新
String empno = request.getParameter("empno");
String ename = request.getParameter("ename");
String sal = request.getParameter("sal");
String hiredate = request.getParameter("hiredate");
//2.将数据封装至Employee对象中
Employee employee = new Employee();
employee.setEmpno(Integer.parseInt(empno));
employee.setEname(ename);
employee.setSal(Double.parseDouble(sal));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
employee.setHiredate(sdf.parse(hiredate));
if (action.equals("0")) {
//添加
employeeDao.addEmployee(employee);
} else {
//更新
employeeDao.updateEmployee(employee);
}
} else if (action.equals("2")) {
//删除
String empno = request.getParameter("empno");
employeeDao.deleteEmployee(empno);
} else if (action.equals("3")) {
//批量删除
System.out.println("action="+action);
String[] chks=request.getParameterValues("chks");
for(String chk:chks){
System.out.println("chk="+chk);
}
}
//4.画面跳转至employeeList.jsp 重定向
response.sendRedirect("employeeList.jsp");
%>
</body>
</html>
然后我们进行简单的页面设计,运用了表格的形式进行设计,代码如下
<%@page import="java.util.List"%>
<%@page import="entity.Employee"%>
<%@page import="dao.EmployeeDao"%>
<%@page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script>
function checkAll() {
//1.获取chkAll的选中状态checked
var chkAll = document.getElementById("chkAll");
//alert(chkAll.checked);
//2、获取其他所有的checkbox
var chks = document.getElementsByName("chks");
for (var i = 0; i < chks.length; i++) {
//3、将chkAll的选中状态于其他checkbox的选中状态同步
chks[i].checked = chkAll.checked;
}
}
function onDelete(empno){
var result=confirm("Delete Employee?");
if(result){
window.location.href="employeeManageAction.jsp?action=2&empno=" rel="external nofollow" +empno;
}
}
//function onDeleteBatch(){
//判断是否有选中的checkbox
//有选中的场合
//提示是否删除确认的信息
//确认删除
//提交表单
//var action=document.getElementById("action");
//action.value="3";
// document.frmlist.action="employeeManageAction.jsp"
// document.frmlist.submit();
//取消删除
//不用处理
//无选中的场合
//提示选中记录的信息
//}
</script>
</head>
<body>
<h3>Employee List Page</h3>
<form name="frmSearch" action="xxxxAction.jsp" method="post">
ename:<input type="text" /> <input type="submit" name="btnSubmit"
value="submit" />
</form>
<P>
<hr />
<a href="employeeManage.jsp?action=0" rel="external nofollow" >Add Employee</a>
<a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" onclick="onDeleteBatch();">Delete
Employee Batch</a>
<P>
<%
EmployeeDao emplyeeDao = new EmployeeDao();
List<Employee> employees = emplyeeDao.getEmployees();
%>
<%
if (employees != null && employees.size() > 0) {
%>
<form name="frmlist" action="" method="post">
<input type="hidden" name="action" id="action" value="" />
<table width="600px" border="1px">
<tr bgcolor="#009966">
<td><input type="checkbox" id="chkAll" onclick="checkAll()" /></td>
<td>empno</td>
<td>ename</td>
<td>sal</td>
<td>hiredate</td>
<td>action</td>
</tr>
<%
Employee employee = null;
for (int i = 0; i < employees.size(); i++) {
employee = employees.get(i);
%>
<tr>
<td><input type="checkbox" id="chk<%=i + 1%>" name="chks"
value="<%=employee.getEmpno()%>" /></td>
<td><%=employee.getEmpno()%></td>
<td><%=employee.getEname()%></td>
<td><%=employee.getSal()%></td>
<td><%=employee.getHiredate()%></td>
<td><a
href="employeeManage.jsp?action=1&empno=<%=employee.getEmpno()%>" rel="external nofollow" >update</a>
<a href="javascript:void(0)" rel="external nofollow" rel="external nofollow"
onclick="onDelete(<%=employee.getEmpno()%>);">delete</a></td>
</tr>
<%
}
%>
</table>
</form>
<%
}
%>
</body>
</html>
接下来要说的是更新操作
<%@page import="entity.Employee"%>
<%@page import="dao.EmployeeDao"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script>
function checkForm() {
var empno = document.getElementById("empno");
if (empno && empno.value == "") {
empno.focus();
alert("please input empno");
return;
}
var ename = document.getElementById("ename");
if (ename && ename.value == "") {
ename.focus();
alert("please input ename");
return;
}
var sal = document.getElementById("sal");
if (sal && sal.value == "") {
sal.focus();
alert("please input sal");
return;
}
var hiredate = document.getElementById("hiredate");
if (hiredate && hiredate.value == "") {
hiredate.focus();
alert("please input hiredate");
return;
}
var frm = document.getElementById("frm");
frm.submit();
}
</script>
</head>
<body>
<%
String action=request.getParameter("action");
Employee employee=null;
if(action.equals("1")){
//更新操作
String empno = request.getParameter("empno");
EmployeeDao employeeDao = new EmployeeDao();
employee=employeeDao.getEmployeeByEmpno(empno);
}
%>
<h3>Employee <%=action.equals("1")?"Update":"Regist" %> Page</h3>
<form id="frm" action="employeeManageAction.jsp" method="post"
onsubmit="return checkForm();">
<input type="hidden" name="action" value="<%=action%>"/>
<table>
<tr>
<td>empno</td>
<td><input type="text" id="empno" name="empno" <%=action.equals("1")?"readOnly":"" %> value="<%=employee==null?"":employee.getEmpno()%>"/></td>
</tr>
<tr>
<td>ename</td>
<td><input type="text" id="ename" name="ename" value="<%=employee==null?"":employee.getEname()%>"/></td>
</tr>
<tr>
<td>sal</td>
<td><input type="text" id="sal" name="sal" value="<%=employee==null?"":employee.getSal()%>"/></td>
</tr>
<tr>
<td>hiredate</td>
<td><input type="text" id="hiredate" name="hiredate" value="<%=employee==null?"":employee.getHiredate()%>"/></td>
</tr>
<tr>
<td><input type="button" name="btnSubmit" value="submit"
onclick="checkForm();" /></td>
<td><input type="reset" name="btnReset" value="reset" /></td>
</tr>
</table>
</form>
</body>
</html>
在这个过程中刚好用到了简单的js对数据进行非空和数据类型判断,这就是我们需要学会的逻辑,业务层,然后进行其他操作,当然我注释的是还没完成的多个删除和模糊搜索,这个下一个博客再去完善。
总结
在学习这个过程中,学会了更多关于数据调用的知识,而不是像hibernate那样在配置文件配置,然后直接调用就可以了,再用jsp中也发现jsp嵌入代码,更加笨重,这也是我学习的另一个方面吧。
更多学习资料请关注专题《管理系统开发》。
来源:https://blog.csdn.net/lxh5431/article/details/52489972


猜你喜欢
- Feign调用中的两种Header传参方式在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,
- ?随着互联网的快速发展,各种组件层出不穷,需要框架集成的组件越来越多。每一种组件与Spring容器整合需要实现相关代码。SpringMVC框
- 简介本文介绍MyBatis-Plus的分页的方法。包括:不传参数时的默认结果查询不存在的数据手动包装page自定义SQL建库建表DROP D
- java 基础之final、finally和finalize的区别1.final可以修饰类,不能被继承;可以修饰方法,不能被重写;可以修饰变
- SwipeRefreshLayout是Android官方的下拉刷新控件,使用简单,界面美观,不熟悉的朋友可以随便搜索了解一下,这里就不废话了
- C# 利用代理爬虫网页实现代码:// yanggang@mimvp.com// http://proxy.mimvp.com// 2015-
- 展示图: 对接的完整流程如下首先是配置gzh.appid=公众号appidwxPay.mchId=商户号wxPay.key=支付密
- AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文
- 前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。
- 本文实例为大家分享了Java实现五子棋网络版的具体代码,供大家参考,具体内容如下需求分析:对于网络五子棋而言,在普通五子棋的基础上需要添加以
- JPA介绍JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映
- 本文实例讲述了java使用dom4j生成与解析xml文档的方法。分享给大家供大家参考,具体如下:xml是一种新的数据格式,主要用于数据交换。
- 一、RFC882文档简单说明RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮
- BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存
- 本文为大家分享了Android Studio debug功能的具体使用方法,供大家参考,具体内容如下运行debug模式 1. 进入
- Zxing是Google提供的关于条码(一维码、二维码)的解析工具,提供了二维码的生成与解析的方法,现在我简单介绍一下使用Java利用Zxi
- 一、单向通信功能:客户端发送一句话到服务器:客户端:public class TestClient {//客户端
- 一、前言在项目中,我们有一些公共的字段需要做修改如:gmt_create:创建时间creator_id:创建人gmt_modified:修改
- 今天是解决报错的一天,首先在操作Springboot中的时候,有些朋友的yml显示的不是绿叶的图标,或者是配置了之后不生效的问题。第一个解决
- 一 问题描述小明为位置1,求他到其他各顶点的距离。二 实现package graph.dijkstra;import j