总结学了 j2ee 一月半后的项目情况(1)

项目有三个,殊途同归:

1、MODEL1【jsp+javabean/dao】 或者 MODEL2 【jsp+servlet+javabean/dao】

2、三个项目所使用的模式分别是不同讲师所讲的,魔乐java、韩顺平j2ee 、java开放课程二期jsp,三者同时使用EL / JSTL 

源码:【魔乐 雇员管理系统(MODEL1) 】

1、定义IempDAO接口如下:

1 package fafa.vo;
2 import java.util.*;
3 //前面的大写I 表示是接口
4 public interface IempDAO {
5     public boolean doCreate(Emp emp) throws Exception ;
6     public List<Emp> findAll(String keyword) throws Exception ;
7     public Emp findById(int empno) throws Exception ;
8 }

2、定义实现接口类 EmpDAOImpl 实现数据库CRUD

 1 package fafa.vo;
 2 import java.sql.*;
 3 import java.util.*;
 4 public class EmpDAOImpl implements IempDAO {
 5     private Connection conn = null ;
 6     private PreparedStatement pstmt = null ;
 7     
 8     public EmpDAOImpl (Connection conn){
 9         this.conn = conn ;
10     }
11     
12     //创建
13     public boolean doCreate(Emp emp) throws Exception {
14         boolean flag = false ;
15         String sql = "INSERT INTO emp(empno, ename, job, hiredate,sal) VALUES(?,?,?,?,?)" ;
16         this.pstmt = this.conn.prepareStatement(sql) ; //sql预处理 
17         
18         //赋值
19         this.pstmt.setInt(1, emp.getEmpno()) ;
20         this.pstmt.setString(2, emp.getEname()) ;
21         this.pstmt.setString(3, emp.getJob()) ;
22         this.pstmt.setDate(4, new java.sql.Date(emp.getHirdate().getTime())) ;
23         this.pstmt.setFloat(5, emp.getSal()) ;
24         //执行更新判断
25         if (this.pstmt.executeUpdate() > 0){
26             flag = true ;
27         }
28         //关闭
29         this.pstmt.close() ;
30         return flag ;
31     }
32 
33     //查询全部
34     public List<Emp> findAll(String keyword) throws Exception {
35         List<Emp> all = new ArrayList<Emp>() ;
36         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE ename LIKE ? OR job LIKE ?" ;
37         this.pstmt = this.conn.prepareStatement(sql) ;
38         
39         this.pstmt.setString(1, "%"+keyword+"%") ;
40         this.pstmt.setString(2, "%"+keyword+"%") ;
41         
42         ResultSet rs = this.pstmt.executeQuery() ;
43         Emp emp = null ;
44         while (rs.next()){
45             emp = new Emp() ;
46             emp.setEmpno(rs.getInt(1)) ;
47             emp.setEname(rs.getString(2)) ;
48             emp.setJob(rs.getString(3)) ;
49             emp.setHirdate(rs.getDate(4)) ;
50             emp.setSal(rs.getFloat(5)) ;
51             all.add(emp) ;
52         }
53         this.pstmt.close() ;
54         return all ;
55     }
56 
57     //查询一个(ID)
58     public Emp findById(int empno) throws Exception {
59         Emp emp = null ;
60         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno = ?" ;
61         
62         this.pstmt = this.conn.prepareStatement(sql) ;    //sql预处理
63         this.pstmt.setInt(1, empno) ;                    //设置值
64         ResultSet rs = this.pstmt.executeQuery() ;        //执行sql
65         if (rs.next()){
66             emp = new Emp() ;
67             emp.setEmpno(rs.getInt(1)) ;
68             emp.setEname(rs.getString(2)) ;
69             emp.setJob(rs.getString(3)) ;
70             emp.setHirdate(rs.getDate(4)) ;
71             emp.setSal(rs.getFloat(5)) ;
72         }
73         this.pstmt.close() ;
74         return emp ;
75     }
76 }

3 、定义代理类EmpDAOproxy 实现接口 并调用实际实现类完成操作

 1 package fafa.vo;
 2 
 3 import java.util.*;
 4 
 5 public class EmpDAOproxy implements IempDAO {
 6     private DatabaseConnection dbc = null ;
 7     private IempDAO dao = null ;
 8     
 9     public EmpDAOproxy () throws Exception{
10         this.dbc = new DatabaseConnection() ;
11         this.dao = new EmpDAOImpl(this.dbc.getConnection()) ;
12     }
13     
14     public boolean doCreate(Emp emp) throws Exception {
15         boolean flag = false ;
16         try {
17             if (this.dao.findById(emp.getEmpno()) == null){
18                 this.dao.doCreate(emp) ;
19                 flag = true ;
20             }
21         } catch (Exception e) {
22             e.printStackTrace() ;
23         } finally {
24             this.dbc.close() ;
25         }
26         return flag ;
27     }
28 
29     public List<Emp> findAll(String keyword) throws Exception {
30         List<Emp> all = null ;
31         try {
32             all = this.dao.findAll(keyword) ;
33         } catch (Exception e) {
34             e.printStackTrace() ;
35         } finally {
36             this.dbc.close() ;
37         }
38         return all ;
39     }
40 
41     public Emp findById(int empno) throws Exception {
42         Emp emp = null ;
43         try {
44             this.dao.findById(empno) ;
45         } catch (Exception e) {
46             e.printStackTrace() ;
47         } finally {
48             this.dbc.close() ;
49         }
50         return emp ;
51     }
52 
53 }

4、定义工厂类 实例化 代理类 --> 调用实现接口类 完成操作

1 package fafa.vo;
2 
3 public class DAOfactory {
4     public static IempDAO getIEmpDAOInstance() throws Exception {
5         return new EmpDAOproxy() ;
6     }
7 }

5、当然少不了数据库连接类 DatabaseConnection 和vo 类 emp

 1 package fafa.vo;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 
 6 public class DatabaseConnection {
 7     private static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
 8     private static final String DBURL = "jdbc:mysql://localhost:3306/test" ;
 9     private static final String DBUSER = "root" ;
10     private static final String DBPASS = "123456" ;
11     
12     private Connection conn ;
13     public DatabaseConnection() throws Exception {
14         Class.forName(DBDRIVER) ;
15         this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
16     }
17     //取得连接
18     public Connection getConnection(){
19         return this.conn ;
20     }
21     //关闭连接
22     public void close(){
23         if (this.conn != null){
24             try{
25                 this.conn.close() ;
26             }catch(Exception e){
27                 e.printStackTrace() ;
28             }
29         }
30     }
31 }
 1 package fafa.vo;
 2 
 3 import java.util.Date;
 4 
 5 public class Emp {
 6     private int empno ;
 7     private String ename ;
 8     private String job ;
 9     private Date hirdate ;
10     private float sal ;
11     
12     public int getEmpno() {
13         return empno;
14     }
15     public void setEmpno(int empno) {
16         this.empno = empno;
17     }
18     public String getEname() {
19         return ename;
20     }
21     public void setEname(String ename) {
22         this.ename = ename;
23     }
24     public String getJob() {
25         return job;
26     }
27     public void setJob(String job) {
28         this.job = job;
29     }
30     public Date getHirdate() {
31         return hirdate;
32     }
33     public void setHirdate(Date hirdate) {
34         this.hirdate = hirdate;
35     }
36     public float getSal() {
37         return sal;
38     }
39     public void setSal(float sal) {
40         this.sal = sal;
41     }
42 }
原文地址:https://www.cnblogs.com/dafa/p/2770944.html