4.9 实训:获取用户表数据

下面是上一节的Use.java的代码,它实际上是Use表的字段的映射:
public class User{
    private String username;
    private String password;
    private String nickname;
    private String role;
    private String createDate;
    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;
    }
    public String getNickname(){
        return nickname;
    }
    public void setNickname(String nickname){
        this.nickname=nickname;
    }
    public String getRole(){
        return role;
    }
    public void setRole(String role){
        this.role=role;
    }
    public String getCreateDate(){
        return createDate;
    }
    public void setCreateDate(String createDate){
        this.createDate=createDate;
    }
}
下面是写在UserData的新函数getUser,根据用户名取得用户数据,最后还有一个测试:
/**
根据账号取得用户的所有数据,并保存到一个User对象;@param username * @return
 */
public static User getUser(String username){
    //最终返回的user对象
    User user=new User();
    user.setUsername(username);
    
    // 要执行的sql语句,通过字符串拼接出来
    String SQLTEXT="select * from user where username = '"+username+"'";
    try{
        // 使用上面的DBConifg类的getCon方法,建立一个连接
        Connection con=DBConfig.getCon();
        // 准备执行sql的实体
        Statement stmt=con.createStatement();
        // 执行sql,并把查询结果赋给
        ResultSet rst=stmt.executeQuery(SQLTEXT);
        while(rst.next()){
            // 查询结果,并把结果逐个设置到user对象
            user.setPassword(rst.getString("password"));
            user.setNickname(rst.getString("nickname"));
            user.setCreateDate(rst.getString("create_date"));
            user.setRole(rst.getString("role"));
        }
        // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露
        rst.close();
        stmt.close();
        con.close();
    }
    catch(SQLException e){
        e.printStackTrace();
    }
    return user;
}
public static void main(String[]args){
    User user=UserData.getUser("abcd");
    System.out.println(user.getNickname());
    System.out.println(user.getCreateDate());
}
这仅仅是获取一个用户,接下来,是get100Users函数,此函数没有参数,返回类型是List< User >(不了解List类的,请点击List类,返回前100个用户,sql语句是:
select * from user limit 0,100;
/**
根据账号取得用户的所有数据,并保存到一个User对象;
 */
public static List<Userget100Users(){
    //最终返回的user对象
    List<Userresult=new ArrayList();
    // 要执行的sql语句,通过字符串拼接出来
    String SQLTEXT="select * from user limit 0,100";
    try{
        // 使用上面的DBConifg类的getCon方法,建立一个连接
        Connection con=DBConfig.getCon();
        // 准备执行sql的实体
        Statement stmt=con.createStatement();
        // 执行sql,并把查询结果赋给
        ResultSet rst=stmt.executeQuery(SQLTEXT);
        while(rst.next()){
            // 查询结果,并把结果逐个设置到user对象User
            User user=new User();
            user.setUsername(rst.getString("username"));
            user.setPassword(rst.getString("password"));
            user.setNickname(rst.getString("nickname"));
            user.setCreateDate(rst.getString("create_date"));
            user.setRole(rst.getString("role"));
            //一个user对象构建完毕,加入list表
            result.add(user);
        }
        // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露
        rst.close();
        stmt.close();
        con.close();
    }
    catch(SQLException e){
        e.printStackTrace();
    }
    return result;
}
验证登录成功后,用response的sendRedirect函数跳转到100users.jsp,然后在100users.jsp使用UserData的get100Users函数,把100个用户的数据展示出来,下面的例子是使用table展示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="db.*,java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>100个用户</title>
<link rel="stylesheet" href="https://www.codessp.cn/css/bootstrap.min.css"/>
</head>
<body>
 <%
  List<User> users=UserData.get100Users();
 %>
 <table class="table table-striped table-bordered table-hover table-condensed">
  <tr>
   <th>序号</th>
   <th>账号</th>
   <th>密码</th>
   <th>昵称</th>
   <th>角色</th>
   <th>创建日期</th>
  </tr>
  <
   for(int i=0;i<users.size();i++){ 
    User user=users.get(i);
  %>
   <tr class="info">
    <td><%=i+1 %></td>
    <td><%=user.getUsername() %></td>
    <td><%=user.getPassword() %></td>
    <td><%=user.getNickname() %></td>
    <td><%=user.getRole() %></td>
    <td><%=user.getCreateDate() %></td>
   </tr>
  <%} %>
 </table>
</body>
</html>