用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>

 

posted @ 2016-03-22 10:42  邹菇凉  阅读(747)  评论(0编辑  收藏  举报