实验五 JSP+JavaBean 应用程序设计

题目:

设计实现 DAO 设计模式中的雇员的添加、查询操作,并通过 JSP
进行界面展示
目录:
首先是在src下创建dao包和Test包并在其下创建dbc包和vo包

 1.在vo包下创建Emp

package dao.vo;

import java.util.Date;

public class Emp {
    private int empno;
    private String ename;
    private String job;
    private Date hierdate;
    private float comm;

    public void setEmpno(int empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public int getEmpno() {
        return empno;

    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Date getHierdate() {
        return hierdate;
    }

    public void setHierdate(Date hierdate) {
        this.hierdate = hierdate;
    }

    public float getComm() {
        return comm;
    }

    public void setComm(float comm) {
        this.comm = comm;
    }

2.在dbc包中创建DatabaseConnection

package dao.dbc;
import java.sql.Connection;
public interface DatabaseConnection {
    public Connection getConnection();
    public void close() throws Exception;
}

3.创建DatabaseConnection的子类并实现数据库连接的MysqlDatabaseConnection

package dao.dbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class MysqlDatabaseConnection implements DatabaseConnection {
    private static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DBURL = "jdbc:mysql://localhost:3306/mldn";
    private static final String DBUSER = "root";
    private static final String DBPASS = "2963779hxb";
    private Connection conn = null;

    public MysqlDatabaseConnection() throws Exception {
        try {
            Class.forName(DBDRIVER);
            this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
        } catch (Exception e) {
            throw e;
        }
    }

    public Connection getConnection() {
        return this.conn;
    }

    public void close() throws Exception {
        if (this.conn != null) {
            try {
                this.conn.close();
            } catch (Exception e) {
                throw e;
            }
        }
    }
}

4.在dao包中创建IEmpDAO

package dao;
import java.util.List;
import dao.vo.Emp;

public interface IEmpDAO { //接口真实实现类
        public boolean doCreate(Emp emp) throws Exception;
        public List<Emp> findAll(String keyWord) throws Exception;
        public Emp findByid(int empno) throws Exception;
    }

5.在dao包中创建EmpDAOImpI真实主题实现类

package dao;
import java.sql.*;
import java.sql.Date;
import java.util.*;
import dao.vo.Emp;
import dao.IEmpDAO;
public class EmpDAOImpI implements IEmpDAO{//真实主题实现类
    private Connection conn = null;
    private PreparedStatement pstmt = null;
    public EmpDAOImpI(Connection conn){
        this.conn = conn;
    }
    public boolean doCreate(Emp emp) throws Exception{
        boolean flag = false;
        String sql = "INSERT INTO emp (empno,ename,job,hiredate,comm) VALUE (?,?,?,?,?)";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setInt(1,emp.getEmpno());
        this.pstmt.setString(2, emp.getEname());
        this.pstmt.setString(3,emp.getJob());
        this.pstmt.setDate(4,new Date(emp.getHierdate().getTime()));
        this.pstmt.setFloat(5,emp.getComm());
    if (this.pstmt.executeUpdate()>0){
        flag = true;
    }
    this.pstmt.close();
    return flag;
    }
    public List<Emp> findAll(String keyWord) throws Exception{
        List<Emp> all = new ArrayList<>();//定义集合,接收全部数据
        String sql = "SELECT empno,ename,job,hiredate,comm FROM emp WHERE ename LIKE ? OR job LIKE ?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setString(1,"%"+keyWord+"%");
        this.pstmt.setString(2,"%"+keyWord+"%");
        ResultSet rs = this.pstmt.executeQuery();
        Emp emp = null;
        while (rs.next()){
            emp = new Emp();
            emp.setEmpno(rs.getInt(1));
            emp.setEname(rs.getString(2));
            emp.setJob(rs.getString(3));
            emp.setHierdate(rs.getDate(4));
            emp.setComm(rs.getFloat(5));
            all.add(emp);
        }
        this.pstmt.close();
        return all;
    }
    public Emp findByid(int empno) throws Exception{
        Emp emp = null;
        String sql ="SELECT empno,ename,job,hiredate,comm FROM emp WHERE empno = ?";
        this.pstmt = this.conn.prepareStatement(sql);
        this.pstmt.setInt(1,empno);
        ResultSet rs = this.pstmt.executeQuery();
        if (rs.next()) {
            emp.setEmpno(rs.getInt(1));
            emp.setEname(rs.getString(2));
            emp.setJob(rs.getString(3));
            emp.setHierdate(rs.getDate(4));
            emp.setComm(rs.getFloat(5));
        }
        this.pstmt.close();
        return emp;
    }

}

6.创建EmpDAOProxy代理主题实现类

package dao;
import java.util.List;
import dao.IEmpDAO;
import dao.EmpDAOImpI;
import dao.dbc.DatabaseConnection;
import dao.dbc.MysqlDatabaseConnection;
import dao.vo.Emp;
public class EmpDAOProxy implements IEmpDAO{//代理主题实现类
    private DatabaseConnection dbc = null;
    private IEmpDAO dao = null;
    public EmpDAOProxy() throws Exception{
        this.dbc = new MysqlDatabaseConnection();
        this.dao = new EmpDAOImpI(this.dbc.getConnection());
    }
    public boolean doCreate(Emp emp) throws Exception{
        boolean flag = false;
        try{
            if (this.dao.findByid(emp.getEmpno())==null){
                flag = this.dao.doCreate(emp);
            }
        }catch (Exception e){
            throw e;
        } finally{
            this.dbc.close();;
        }
        return flag;
    }
    public List<Emp> findAll(String keyWorld) throws Exception {
        List<Emp> all = null;
        try {
            all = this.dao.findAll(keyWorld);
        } catch (Exception e) {
            throw e;
        } finally {
            this.dbc.close();
        }
        return all;
    }
    public Emp findByid(int empno) throws Exception {
        // TODO Auto-generated method stub
        Emp emp = null;
        try {
            emp = this.dao.findByid(empno);
        } catch (Exception e) {
            // TODO: handle exception
            throw e;
        } finally {
            this.dbc.close();
        }
        return emp;
    }
}

7.创建DAOFactory工厂类

package dao;
import dao.IEmpDAO;
import dao.EmpDAOProxy;
public class DAOFactory {
    public static IEmpDAO getIEmpDAOinstance() throws Exception{
        return new EmpDAOProxy();
    }
}

8.开始插入测试和选择测试

package Test;
import dao.DAOFactory;
import dao.vo.Emp;
public class TestDAOInsert {
    public static void main(String[] args) throws Exception{
        Emp emp = null;
        for (int x = 0;x<5;x++){
            emp = new Emp();
            emp.setEmpno(1000+x);
            emp.setEname("hxb -"+x);
            emp.setJob("程序员 -"+x);
            emp.setHierdate(new java.util.Date());
            emp.setComm(500*x);
            DAOFactory.getIEmpDAOinstance().doCreate(emp);
        }
    }
}
package Test;
import java.util.Iterator;
import java.util.List;

import dao.DAOFactory;
import dao.vo.Emp;
public class TestDAOSelect {
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        List<Emp> all = DAOFactory.getIEmpDAOinstance().findAll("");//查询全部数据
        Iterator<Emp> iter = all.iterator();//Iterator访问List集合
        while (iter.hasNext()) {//hasNext ()方法判断输入(文件、字符串、键盘等输入流)是否还有下一个输入项
            Emp emp = iter.next();//取出每个对象
            System.out.println(emp.getEmpno() + "、" + emp.getEname() + "-->" + emp.getEname());
        }
    }
}

最后是程序雇员页面

emp_insert

<%--
  Created by IntelliJ IDEA.
  User: HUAWEI
  Date: 2022/11/25
  Time: 21:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>insert here</title>
</head>
<body>
<%
    request.setCharacterEncoding("UTF-8");
%>
<form action="emp_insert_do.jsp" method="post">
    雇员编号:<input type="text" name="empno"><br>
    雇员姓名:<input type="text" name="ename"><br>
    雇员职位:<input type="text" name="job"><br>
    雇佣日期:<input type="text" name="hiredate"><br>
    基本工资:<input type="text" name="comm"><br>
    <input type="submit" value="添加">
    <input type="reset" value="重置">
</form>
</body>
</html>

emp_insert_do

<%--
  Created by IntelliJ IDEA.
  User: HUAWEI
  Date: 2022/11/25
  Time: 21:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page import="dao.vo.Emp" %>
<%@ page import="dao.*" %>
<%@ page import="java.text.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>insert finish</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
    Emp emp=new Emp();
    emp.setEmpno(Integer.parseInt(request.getParameter("empno")));
    emp.setEname(request.getParameter("ename"));
    emp.setJob(request.getParameter("job"));
    emp.setHierdate(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("hiredate")));
    emp.setComm(Float.parseFloat(request.getParameter("comm")));
    try{
        if(DAOFactory.getIEmpDAOinstance().doCreate(emp)){
%>
<h3>雇员信息添加成功!</h3>
<%
}else{
%>
<h3>雇员信息添加失败!</h3>
<%
        }
    }catch(Exception e){
        e.printStackTrace();
    }
%>
</body>
</html>

 

 emp_list

<%--
  Created by IntelliJ IDEA.
  User: HUAWEI
  Date: 2022/11/25
  Time: 21:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page import="dao.DAOFactory" %>
<%@ page import="dao.vo.*" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setCharacterEncoding("UTF-8");
    try{
        String keyWord=request.getParameter("kw");
        if(keyWord==null){
            keyWord="";
        }
        List<Emp> all=DAOFactory.getIEmpDAOinstance().findAll(keyWord);
        Iterator<Emp> iter=all.iterator();
%>
<form action="emp_list.jsp" method="post">
    请输入查询关键字:<input type="text" name="kw">
    <input type="submit" value="查询">
</form>
<table border="1" width="80%">
    <tr>
        <td>雇员编号</td>
        <td>雇员姓名</td>
        <td>雇员职位</td>
        <td>雇佣日期</td>
        <td>基本工资</td>
    </tr>
    <%
        while(iter.hasNext()){
            Emp emp=iter.next();
    %>
    <tr>
        <td><%=emp.getEmpno() %></td>
        <td><%=emp.getEname() %></td>
        <td><%=emp.getJob() %></td>
        <td><%=emp.getHierdate() %></td>
        <td><%=emp.getComm() %></td>
    </tr>
    <%
        }
    %>
</table>
<%
    }catch(Exception e){
        e.printStackTrace();
    }
%>
</body>
</html>

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想头秃的小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值