详解DAO模式(下)
在上一节我们已经把DAO的开发流程完整讲解一遍了,对于刚接触DAO模式的同学来说可能会比较难懂。不过没关系,想当初我接触DAO模式的时候也是一头雾水,根本不知道整个流程怎么走的。但好学的我一边阅读程序一边理顺程序的脉络,晚上画出了第一节那里的关系图。虽然还是有点模糊,但是效果确实不错!而现在再看那幅图,感觉有一种力量驱使我的脚步,在光滑的地上,摩擦~摩擦~ -_-|||
好,话归正题!
我们这节主要讲的是在JSP中调用DAOFactory类返回的对象进行员工信息的插入和检索。相信大家对于HTML和JSP都有一定的基础了吧,所以老夫就简单描述一下思路,然后贴上代码就完事了哦!因为一晚上都在对着电脑写文章,感觉好激动哦!晚上不能太激动,会睡不着的!
(一)员工信息简单录入
先在项目WebRoot下新建一个HTML网页,主要功能是使用控件获取用户录入的信息。在标签<form>里面的action填写提交的目标网页,以及员工属性控件的名称最好与Emp表里的属性一致。HTML代码如下:
<!DOCTYPE html>
<html>
<head>
<title>empInsert.html</title>
</head>
<body>
<h1>雇员信息添加表</h1>
<form action="insert.jsp" method = "post">
员工编号:<input type = "text" name = "empID"><br>
员工姓名:<input type = "text" name = "empName"><br>
工作类型:<input type = "text" name = "job"><br>
入职日期:<input type = "text" name = "hireDate"><br>
员工工资:<input type = "text" name = "salary"><br>
<input type = "reset" value = "重置"><input type = "submit" value = "提交">
</form>
</body>
</html>
然后再新建一个JSP页面,用以处理数据库的信息插入以及显示录入的成功与否。要在JSP中使用DAOFactory等等类,同样也需要导入类文件。导入的位置在JSP的指令处。指令如下:
<%@ page language="java" import="java.util.*" import="java.text.*"
contentType="text/html" pageEncoding="GBK" import="factory.*"
import="vo.*"
%>
JSP网页代码如下:
<span style="font-size:18px;"> <%@ page language="java" import="java.util.*" import="java.text.*"
contentType="text/html" pageEncoding="GBK" import="factory.*"
import="vo.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>insert page !</title>
</head>
<%
request.setCharacterEncoding("GBK");
%>
<body>
<%
Emp emp = new Emp();
emp.setEmpID(Integer.parseInt(request.getParameter("empID")));
emp.setEmpName(request.getParameter("empName"));
emp.setJob(request.getParameter("job"));
emp.setHireDate(new SimpleDateFormat("yyyy-mm-dd").parse(request<span style="white-space:pre"> </span>//注意:由于页面没有设置格式验证
.getParameter("hireDate"))); <span style="white-space:pre"> </span> //所以要按照规定的日期格式来填写
emp.setSalary(Float.parseFloat(request.getParameter("salary")));
%>
<%
try {
if (!DAOFactory.getIEmpDAOInstance().doCreat(emp)) {
%>
<h1>雇员信息添加成功!</h1>
<%
} else {
%>
<h1>雇员信息添加失败!</h1>
<%
}
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html></span>
效果图:
(二)员工信息简单检索
该JSP同样需要导入相关的类文件,尔后可以模糊检索用户的姓名和工作,结果以表格显示。代码如下:<%@page import="factory.DAOFactory"%>
<%@page import="java.util.List"%>
<%@ page language="java" import="java.util.*" import="vo.*"
import="DAOFactory.*" contentType="text/html" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Select page !</title>
</head>
<%
request.setCharacterEncoding("GBK");
%>
<body>
<form action="select.jsp" method="post">
<input type="text" name="keyWord">
<input type="submit" value="检索">
</form>
<%
String keyWord = request.getParameter("keyWord");
try {
List<Emp> all = DAOFactory.getIEmpDAOInstance()
.findAll(keyWord);
Iterator<Emp> iter = all.iterator();
%>
<table border="2">
<tr>
<td>员工编号</td>
<td>员工姓名</td>
<td>工作类型</td>
<td>入职日期</td>
<td>员工工资</td>
</tr>
<%
while (iter.hasNext()) {
Emp emp = iter.next();
%>
<tr>
<td><%=emp.getEmpID()%></td>
<td><%=emp.getEmpName()%></td>
<td><%=emp.getJob()%></td>
<td><%=emp.getHireDate()%></td>
<td><%=emp.getSalary()%></td>
</tr>
<%
}
%>
</table>
<%
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
效果图: