jdbc+servlet练习

2012/04/10 1795点热度 0人点赞 0条评论

使用servlet的时候如果每个方法都创建一个servlet的话,会使系统非常的庞大,会在web.xml中创建很多的映射,为了简化操作,我们通过反射来根据调用的方法名动态的去执行指定的方法.

创建基类BaseServlet让其继承HttpServlet

public class BaseServlet extends HttpServlet {
                                                 
    @SuppressWarnings({ "unchecked", "null" })
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //获取继承自该url传递过来的method参数
        String methodName = request.getParameter("method");
                                                 
        if (methodName != null || "".equals(methodName.trim())) {
            try {
                 //组装参数类型,所有的方法参数都是request和response
                Class[] parameterTypes = { HttpServletRequest.class, HttpServletResponse.class };
                //通过反射获取在该类中的方法(指定方法名和方法参数)
                Method method = this.getClass().getMethod(methodName,parameterTypes);
                 //执行通过反射获取到的方法
                method.invoke(this, request,response);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        } else {
            throw new RuntimeException("请不要恶意攻击");
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

创建的操作类继承BaseServlet

public class EmployeeServlet extends BaseServlet {
    /**
     * 添加员工
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void add(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                                
        String username = request.getParameter("username");
        String spsw = request.getParameter("psw");
        String psw = "";
        if (spsw != null && !"".equals(spsw)) {
            psw = MD5Utils.md5encrypt(spsw);
        }
        String realname = request.getParameter("realname");
        String sex = request.getParameter("sex");
        String sbirthday = request.getParameter("birthday");
        String edu = request.getParameter("edu");
        String major = request.getParameter("major");
        String des = request.getParameter("des");
        String shiredate = request.getParameter("hiredate");
        String role = request.getParameter("role");
                                
        Employees emp = new Employees();
        emp.setUsername(username);
        emp.setPsw(psw);
        emp.setRealname(realname);
        emp.setSex(sex);
                                
        Date birthday = null;
        if (sbirthday != null && "" != sbirthday.trim()) {
            birthday = java.sql.Date.valueOf(sbirthday.trim());
        }
        emp.setBirthday(birthday);
                                
        emp.setEdu(edu);
        emp.setMajor(major);
        emp.setDes(des);
        Date hiredate = null;
        if (shiredate != null && "" != shiredate.trim()) {
            hiredate = java.sql.Date.valueOf(shiredate);
        }
        emp.setHiredate(hiredate);
        emp.setRole(role);
                                
        EmployeeImpl empimpl = new EmployeeImpl();
        empimpl.addEmp(emp);
                                
        request.getRequestDispatcher("/employeeServlet?method=findAll")
                .forward(request, response);
                                
    }
                                
    /**
     * 列表显示
     * 
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void findAll(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                                
        EmployeeImpl empimpl = new EmployeeImpl();
        List<Employees> lists = empimpl.findAll();
                                
        request.setAttribute("lists", lists);
        request.getRequestDispatcher("/employees/list.jsp").forward(request,
                response);
                                
    }
                                
    /**
     * 跳转到编辑页面
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void findOne(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        EmployeeImpl empimpl = new EmployeeImpl();
        Employees emp = new Employees();
        String id = request.getParameter("id");
                                
        if (id != null && !"".equals(id)) {
            emp = empimpl.findOne(id);
        }
        request.setAttribute("emp", emp);
        request.getRequestDispatcher("/employees/edit.jsp").forward(request,
                response);
    }
                                
    /**
     * 查看
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void look(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        EmployeeImpl empimpl = new EmployeeImpl();
        Employees emp = new Employees();
        String id = request.getParameter("id");
                                
        if (id != null && !"".equals(id)) {
            emp = empimpl.findOne(id);
        }
        request.setAttribute("emp", emp);
        request.getRequestDispatcher("/employees/oneList.jsp").forward(request,
                response);
                                
    }
                                
    /**
     * 更新
     * 
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void update(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                                
        String id = request.getParameter("id");
        String username = request.getParameter("username");
        String spsw = request.getParameter("psw");
        String psw = "";
        if (spsw != null && !"".equals(spsw)) {
            psw = MD5Utils.md5encrypt(spsw);
        }
        String realname = request.getParameter("realname");
        String sex = request.getParameter("sex");
        String sbirthday = request.getParameter("birthday");
        String edu = request.getParameter("edu");
        String major = request.getParameter("major");
        String des = request.getParameter("des");
        String shiredate = request.getParameter("hiredate");
        String role = request.getParameter("role");
                                
        Employees emp = new Employees();
        emp.setId(Integer.parseInt(id));
        emp.setUsername(username);
        emp.setPsw(psw);
        emp.setRealname(realname);
        emp.setSex(sex);
                                
        Date birthday = null;
        if (sbirthday != null && "" != sbirthday.trim()) {
            birthday = java.sql.Date.valueOf(sbirthday.trim());
        }
        emp.setBirthday(birthday);
                                
        emp.setEdu(edu);
        emp.setMajor(major);
        emp.setDes(des);
        Date hiredate = null;
        if (shiredate != null && "" != shiredate.trim()) {
            hiredate = java.sql.Date.valueOf(shiredate);
        }
        emp.setHiredate(hiredate);
        emp.setRole(role);
                                
        EmployeeImpl empimpl = new EmployeeImpl();
        empimpl.update(emp);
                                
        request.getRequestDispatcher("/employeeServlet?method=findAll")
                .forward(request, response);
                                
    }
                                
    /**
     * 删除
     * 
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void delete(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                                
        String id = request.getParameter("id");
        EmployeeImpl empimpl = new EmployeeImpl();
        empimpl.delele(id);
                                
        request.getRequestDispatcher("/employeeServlet?method=findAll")
                .forward(request, response);
    }
    /**
     * 
     * @author ducc
                                    
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void toSearch(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.getRequestDispatcher("/employees/listCondition.jsp").forward(
                request, response);
    }
    /**
     * 条件查询
     * 
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void search(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                                
        String username = request.getParameter("username");
        String realname = request.getParameter("realname");
        String sex = request.getParameter("sex");
        String beginhiredate = request.getParameter("beginhiredate");
        String endhiredate = request.getParameter("endhiredate");
        String edu = request.getParameter("edu");
                                
        Employees emp = new Employees();
        emp.setUsername(username.trim());
        emp.setRealname(realname.trim());
        emp.setSex(sex);
        if (beginhiredate != null) {
            emp.setBirthday(Date.valueOf(beginhiredate.trim()));
        }
        if (endhiredate != null) {
            emp.setHiredate(Date.valueOf(endhiredate.trim()));
        }
        emp.setEdu(edu);
                                
        EmployeeImpl empimpl = new EmployeeImpl();
        List<Employees> lists = empimpl.search(emp);
                                
        request.setAttribute("lists", lists);
        request.getRequestDispatcher("/employees/listCondition.jsp").forward(
                request, response);
                                
    }
                                
}

dao层实现

public class EmployeeImpl {
    /**
     * 添加员工
     */
    public void addEmp(Employees emp) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        
        try {
            conn = JDBCUtils.getConn();
            String sql = "INSERT INTO employees(username, psw, realname, sex, birthday, edu, major, des,"
                    + " hiredate, role) values(?,?,?,?,?,?,?,?,?,?)";
            pstmt = conn.prepareStatement(sql);
        
            pstmt.setString(1, emp.getUsername());
            pstmt.setString(2, emp.getPsw());
            pstmt.setString(3, emp.getRealname());
            pstmt.setString(4, emp.getSex());
            pstmt.setDate(5, emp.getBirthday());
            pstmt.setString(6, emp.getEdu());
            pstmt.setString(7, emp.getMajor());
            pstmt.setString(8, emp.getDes());
            pstmt.setDate(9, emp.getHiredate());
            pstmt.setString(10, emp.getRole());
            pstmt.executeUpdate();
            System.out.println(emp.getPsw().length());
        
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtils.close(conn, pstmt, null);
        }
        
    }
        
    /**
     * 获取所有员工
     */
    public List<Employees> findAll() {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        List<Employees> lists =null;
        
        try {
            conn = JDBCUtils.getConn();
            String sql = "select id, username, psw, realname, sex, birthday, edu, major, des, hiredate, role  from employees";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            Employees emp=null;
            if (rs != null) {
                lists= new ArrayList<Employees>();
                while (rs.next()) {
                    emp= new Employees();
                    emp.setId(rs.getInt("id"));
                    emp.setUsername(rs.getString("username"));
                    emp.setPsw(rs.getString("psw"));
                    emp.setRealname(rs.getString("realname"));
                    emp.setSex(rs.getString("sex"));
                    emp.setBirthday(rs.getDate("birthday"));
                    emp.setEdu(rs.getString("edu"));
                    emp.setMajor(rs.getString("major"));
                    emp.setDes(rs.getString("des"));
                    emp.setHiredate(rs.getDate("hiredate"));
                    emp.setRole(rs.getString("role"));
        
                    lists.add(emp);
                }
            } 
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtils.close(conn, pstmt, null);
        }
        return lists;
    }
    /**
     * 根据id获取员工
     */
    public Employees findOne(String id) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        Employees emp = null;
        try {
            conn = JDBCUtils.getConn();
            String sql = "select id, username, psw, realname, sex, birthday, edu, major, des, hiredate, role  from employees where id=?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, Integer.parseInt(id));
            rs = pstmt.executeQuery();
            if (rs != null) {
                while (rs.next()) {
                    emp = new Employees();
                    emp.setId(rs.getInt("id"));
                    emp.setUsername(rs.getString("username"));
                    emp.setPsw(rs.getString("psw"));
                    emp.setRealname(rs.getString("realname"));
                    emp.setSex(rs.getString("sex"));
                    emp.setBirthday(rs.getDate("birthday"));
                    emp.setEdu(rs.getString("edu"));
                    emp.setMajor(rs.getString("major"));
                    emp.setDes(rs.getString("des"));
                    emp.setHiredate(rs.getDate("hiredate"));
                    emp.setRole(rs.getString("role"));
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtils.close(conn, pstmt, null);
        }
        return emp;
    }
    /**
     * 更新员工
     */
    public void update(Employees emp) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = JDBCUtils.getConn();
            if (emp.getPsw() != "") {
                String sql = "UPDATE employees set username = ?, psw = ? , realname = ? , sex = ? , birthday =?, "
                        + "edu =? , major = ? , des =? , hiredate = ? , role =?  where id = ?;";
        
                pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, emp.getUsername());
                pstmt.setString(2, emp.getPsw());
                pstmt.setString(3, emp.getRealname());
                pstmt.setString(4, emp.getSex());
                pstmt.setDate(5, emp.getBirthday());
                pstmt.setString(6, emp.getEdu());
                pstmt.setString(7, emp.getMajor());
                pstmt.setString(8, emp.getDes());
                pstmt.setDate(9, emp.getHiredate());
                pstmt.setString(10, emp.getRole());
                pstmt.setInt(11, emp.getId());
        
                pstmt.executeUpdate();
            } else {
                String sql = "UPDATE employees set username = ? , realname = ? , sex = ? , birthday =?, "
                        + "edu =? , major = ? , des =? , hiredate = ? , role =?  where id = ?;";
        
                pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, emp.getUsername());
                pstmt.setString(2, emp.getRealname());
                pstmt.setString(3, emp.getSex());
                pstmt.setDate(4, emp.getBirthday());
                pstmt.setString(5, emp.getEdu());
                pstmt.setString(6, emp.getMajor());
                pstmt.setString(7, emp.getDes());
                pstmt.setDate(8, emp.getHiredate());
                pstmt.setString(9, emp.getRole());
                pstmt.setInt(10, emp.getId());
        
                pstmt.executeUpdate();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtils.close(conn, pstmt, null);
        }
        
    }
    /**
     * 删除
     */
    public void delele(String id) {
        
        Connection conn = null;
        PreparedStatement pstmt = null;
        if (id != null && !"".equals(id.trim())) {
        
            try {
                conn = JDBCUtils.getConn();
                String sql = "delete from employees where id=?";
                pstmt = conn.prepareStatement(sql);
                pstmt.setInt(1, Integer.parseInt(id));
                pstmt.executeUpdate();
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                JDBCUtils.close(conn, pstmt, null);
            }
        }
    }
    /**
     * 条件查询
     */
    public List<Employees> search(Employees emp) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        
        List<Employees> lists = new ArrayList<Employees>();
        
        try {
            conn = JDBCUtils.getConn();
            stmt = conn.createStatement();
            String sql = "select * from employees where 1=1";
            StringBuffer strWhere = new StringBuffer();
            if (emp.getUsername() != null && !"".equals(emp.getUsername())) {
                strWhere.append(" and username='").append(emp.getUsername()).append("'");
            }
            if (emp.getRealname() != null && !"".equals(emp.getRealname())) {
                strWhere.append(" and realname='").append(emp.getRealname()).append("'");
            }
            if (emp.getSex() != null && !"".equals(emp.getSex())) {
                strWhere.append(" and sex='").append(emp.getSex()).append("'");
            }
            if (emp.getBirthday() != null) {
                strWhere.append(" and birthday='").append(emp.getBirthday()).append("'");
            }
            if (emp.getHiredate() != null) {
                strWhere.append(" and hiredate='").append(emp.getHiredate()).append("'");
            }
            if (emp.getEdu() != null && !"".equals(emp.getEdu())) {
                strWhere.append(" and edu='").append(emp.getEdu()).append("'");
            }
            sql += strWhere.toString();
            rs = stmt.executeQuery(sql);
            Employees emp1=null;
            if (rs != null) {
                while (rs.next()) {
                    emp1 = new Employees();
                    emp1.setId(rs.getInt("id"));
                    emp1.setUsername(rs.getString("username"));
                    emp1.setPsw(rs.getString("psw"));
                    emp1.setRealname(rs.getString("realname"));
                    emp1.setSex(rs.getString("sex"));
                    emp1.setBirthday(rs.getDate("birthday"));
                    emp1.setEdu(rs.getString("edu"));
                    emp1.setMajor(rs.getString("major"));
                    emp1.setDes(rs.getString("des"));
                    emp1.setHiredate(rs.getDate("hiredate"));
                    emp1.setRole(rs.getString("role"));
                    lists.add(emp1);
                }
            } 
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtils.close(conn, stmt, rs);
        }
        return lists;
        
    }
        
}

工具类JDBCUtils.java

public class JDBCUtils {
    private static Properties dbConfig = new Properties();
    private static String driverClass = null;
    private static String url = null;
    private static String user = null;
    private static String password = null;
      
    static {
        try {
            InputStream in = JDBCUtils.class.getClassLoader()
                    .getResourceAsStream("db.properties");
            dbConfig.load(in);
            driverClass = dbConfig.getProperty("driverClass");
            url = dbConfig.getProperty("url");
            user = dbConfig.getProperty("user");
            password = dbConfig.getProperty("password");
        } catch (Exception e) {
            throw new RuntimeException("找不到配置文件");
        }
      
    }
      
    /**
     * 获取数据库连接对象
     * 
     * @return
     */
    public static Connection getConn() {
      
        Connection conn = null;
        try {
            Class.forName(driverClass);
            conn = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            throw new RuntimeException(e);
      
        }
        if (conn == null) {
            throw new RuntimeException("获取连接失败");
        }
        return conn;
      
    }
      
    /**
     * 释放连接数据库占用的资源
     * 
     * @param conn
     * @param stmt
     * @param rs
     */
    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                rs = null;
                e.printStackTrace();
            } finally {
                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        stmt = null;
                        e.printStackTrace();
                    } finally {
                        if (conn != null) {
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                conn = null;
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }
    }
      
}

yxkong

这个人很懒,什么都没留下

文章评论