zoukankan      html  css  js  c++  java
  • 用mvc实现增删查改

    1.首先打开MyEclipse使它正常运行。
    2.在File中选择new在选择web project在任意取一个名字,如图:
    3.选择才创建的项目manager,在src下分别创建entity包、DAO包、tools包(把DBHelper直接在其他项
    目中把它复制过来)、servlet包如图:

    4.把链接数据库的驱动复制在WebRoot下的WEB-INF里的lib下面。

    5.在entity下创建一个类,命名为User(类名一定要大写),再在里面定义变量,具体代码如下:

    package entity;
    
    public class User {
    private String userID;//数据成员(字段)
    private String userName;
    private String password;
    public String getUserID() {
        return userID;
    }
    public void setUserID(String userID) {
        this.userID = userID;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
    }

    6.在DAO下创建一个类,命名为UserDAO,再写查询语句SQL insert,并添加DBHelper;

    public static boolean insert(User u){
        String SQL="insert into user(userID,userName)values(?,?)";
        Object[] params=new Object[]{u.getUserID(),u.getUserName()};
        int n=DBHelper.ExecSql(SQL,params);
        if(n>0)return true;
        else  return false;
    
    }

    7.现在开始对UserDAO进行测试,在DAO下面创建一个类为TestDAO,运行结果为true则测试成功,测试代码如下:

    public class TestDAO {
        public static void main(String[] args) throws SQLException{
            User u= new User();
               u.setUserID("1");
               u.setUserName("Tom");
               System.out.println(UserDAO.insert(u));

    8.继续在UserDAO中边写删除代码,代码如下:

    public static boolean delete(Object ID){
        String SQL="delete from user where userID=?";
        Object[] params=new Object[]{ID};
        int n=DBHelper.ExecSql(SQL,params);
        if(n>0)return true;
        else  return false;
    }

    9.继续对UserDAO进行测试,在TestDAO中把刚才测试的代码注册掉,写如下测试代码:

    public class TestDAO {
        public static void main(String[] args) throws SQLException{
    //        User u= new User();
    //           u.setUserID("1");
    //           u.setUserName("Tom");
    //           System.out.println(UserDAO.insert(u));
             System.out.println(UserDAO.insert("1"));

    10.继续在UserDAO中边写修改代码,代码如下:

    public static boolean update(Object ID,User u){
        String SQL="update user set userID=?,userName=? where userID=?";
        Object[] params=new Object[]{u.getUserID(),u.getUserName(),ID};
        int n=DBHelper.ExecSql(SQL,params);
           if(n>0)
            return true;
           else
           return false;
           
        }

    11.继续对UserDAO进行测试,在TestDAO中把刚才测试的代码注册掉,写如下测试代码:

        public static void main(String[] args) throws SQLException{
    //        User u= new User();
    //           u.setUserID("1");
    //           u.setUserName("Tom");
    //           System.out.println(UserDAO.insert(u));
            // System.out.println(UserDAO.insert("1"));
            User u= new User();
               u.setUserID("001");
               u.setUserName("李四");
               System.out.println(UserDAO.update("001",u));

    12.继续在UserDAO中边写查询代码,代码如下:

    public static List getAllUser(){
        String SQL="select * from user";
        ResultSet rs=DBHelper.getResultSet(SQL);
        List users=tools.ResultSettoList(rs, User.class);
        return users;
    }
    }

    13.再tools下面创建一个tools,并引入List类,代码如下

    package tools;
    
    import java.lang.reflect.Method;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.util.ArrayList;
    import java.util.List;
    
    //运用反射技术(ResultSet转成List)
    public class tools {
        @SuppressWarnings("finally")
        public static List ResultSettoList(ResultSet rs, Class cls) {
            List list = new ArrayList();
            try {
                // 获取数据库表结构
                ResultSetMetaData meta = rs.getMetaData();
                Object obj = null;
                while (rs.next()) {
                    // 获取formbean实例对象
                    obj = Class.forName(cls.getName()).newInstance();
                    // 循环获取指定行的每一列的信息
                    for (int i = 1; i <= meta.getColumnCount(); i++) {
                        // 当前列名
                        String colName = meta.getColumnName(i);
                        // 将列名第一个字母大写(为什么加+""呢?为了把char类型转换为String类型。replace的参数是String类型。)
                        colName = colName.replace(colName.charAt(0) + "",
                                new String(colName.charAt(0) + "").toUpperCase());
                        // 设置方法名
                        String methodName = "set" + colName;
                        // 获取当前位置的值,返回Object类型
                        Object value = rs.getObject(i);
                        // 利用反射机制,生成setXX()方法的Method对象并执行该setXX()方法。
                        Method method = obj.getClass().getMethod(methodName,
                                value.getClass());
                        method.invoke(obj, value);
                    }
                    list.add(obj);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                return list;
            }
        }
    }

    14.继续对UserDAO进行测试,在TestDAO中把刚才测试的代码注册掉,写如下测试代码:

    public class TestDAO {
        public static void main(String[] args) throws SQLException{
    //        User u= new User();
    //           u.setUserID("1");
    //           u.setUserName("Tom");
    //           System.out.println(UserDAO.insert(u));
            // System.out.println(UserDAO.insert("1"));
    //        User u= new User();
    //           u.setUserID("001");
    //           u.setUserName("李四");
    //           System.out.println(UserDAO.update("001",u));
      List<User> users=(List<User>)UserDAO.getAllUser();
      for(User u : users)
          System.out.println(u.getUserID()+","+u.getUserName());
        }
        }

    15.在servlet下new一个servlet,命名为UserServlet,并在web.xml中把<url-pattern>中的servlet改成/user/UserServlet</url-pattern>

    16.在UserServlet下编写代码,如下:

    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request,response);
        }
    
        
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    String action=request.getParameter("action");
    if(action.equals("insert")){
        
    }
    else if(action.equals("delete")){
        UserDAO.delete(request.getParameter("userID"));
        response.sendRedirect("UserServlet?action=list");
    }
    else if(action.equals("update")){
        
    }
    else if(action.equals("list")){
        List users=UserDAO.getAllUser();
        request.setAttribute("users", users);
        RequestDispatcher rd=request.getRequestDispatcher("show.jsp");
        rd.forward(request,response);
    }
    
        }

    17.在webroot下new一个文件,命名为user,再在user下new一个Jsp,命名为show,先把entity包引进来并将编码改为utf-8,在body下编写如下代码:

    <body>
      <%
      List<User> users=(List<User>)request.getAttribute("users");
      for(User u : users){
       out.print("用ID:"+u.getUserID()+",用户名:"+u.getUserName());
        out.print("<a href="user/UserServlet?action=delete&userID"+u.getUserID()+"">删除</a><br>");
        }
       %>
      </body>

     18.将index里的body改写如下代码:

    <body>
     <a href="user/UserServlet?action=list">显示用户</a>
      </body>

     19.再user下new一个Jsp,命名为insert,再编写其代码,并将编码改为utf-8,代码如下:

    <body>
      <form action="UserServlet?action=insert">
      用户ID:<input type="text" name="userID"><br>
      用户名:<input type="text" name="userName"><br>
      密码:<input type="text" name="password"><br>
      <input type="submit" value="添加">
      </form>
      </body>
  • 相关阅读:
    产品经理的创新思维
    大型互联网网站架构心得之二:并、换和其它(转)
    访问IIS元数据库失败解决方法(转)
    (转)SQL Server 假执行,预执行
    从LiveJournal后台发展看 大型网站系统架构以及性能优化方法(转)
    浏览器并发连接数
    转:Session服务器配置指南与使用经验
    转:安装IIS无法找到zClientm.exe文件的解决办法
    使用开源软件,设计高性能可扩展互动网站
    大型互联网网站架构心得之一:分(转)
  • 原文地址:https://www.cnblogs.com/arriw/p/5286116.html
Copyright © 2011-2022 走看看