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());}select * from user limit 0,100;
/**根据账号取得用户的所有数据,并保存到一个User对象; */public static List<User> get100Users(){ //最终返回的user对象 List<User> result=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>