查看“Java任务:修改用户密码”的源代码
←
Java任务:修改用户密码
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==任务描述:修改用户密码== 如图7-2所示,用户登录成功后还可以根据需要选择自己需要的服务,如修改密码,查询图书等。本节先来完成密码修改,下节内容将完成图书查询。 [[文件:java7-2.png]] 图7-2 修改密码 ==前情回顾== ===用户数据接口UserDao=== <nowiki>package dao; import entity.User; public interface UserDao { public void addUser(User u);//添加用户 public void queryUser( );//查询用户 public boolean hasUser(String name);//查询某个用户是否存在 public boolean verify(String name, String pwd);//验证用户名和密码是否一致 } </nowiki> ===实现思路=== *我们之前已经定义了一个UserDao接口。 *现在我们用MYSQL数据库来实现这个接口。 ==任务实现== ===创建测试数据=== 接下来我们在 MySQL 中创建 cloud 数据库,并创建 user 数据表,表结构如下: <nowiki>mysql> create database cloud; Query OK, 1 row affected (0.00 sec) mysql> use cloud; Database changed mysql> CREATE TABLE IF NOT EXISTS `user`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `password` VARCHAR(40) NOT NULL, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> CREATE UNIQUE INDEX uname on user(name); Query OK, 0 rows affected (0.25 sec) Records: 0 Duplicates: 0 Warnings: 0 </nowiki> 插入一些数据: <nowiki>mysql> INSERT INTO `user` (name,password) VALUES ('ma', '123456'); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO `user` (name,password) VALUES ('ma', '123457'); ERROR 1062 (23000): Duplicate entry 'ma' for key 2</nowiki> </nowiki> ===程序代码=== <nowiki>package dao; import java.sql.*; import entity.User; public class UserDaoSQL implements UserDao{ // JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/cloud"; // 数据库的用户名与密码,需要根据自己的设置 static final String USER = "root"; static final String PASS = "000000"; public UserDaoSQL(){ } /** * 连接数据库 * @param 值为空 * @return Connection 建立的数据库连接 */ private static Connection getConn() { Connection conn = null; try { Class.forName(JDBC_DRIVER); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("MySQL连接成功!"); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); } return conn; } /** * 向数据库中添加用户 * @param user,要添加的用户 * @return 返回值为空 */ public void addUser(User user){//添加用户 Connection conn = getConn(); String sql = "insert into user (name,password) values(?,?)"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, user.getName()); pstmt.setString(2, user.getPassword()); //pstmt.setInt(2, user.getAge()); pstmt.setDate pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * 向数据库中查询所有用户 * @param 值为空 * @return 值为空 */ public void queryUser( ){//查询用户 Connection conn = getConn(); String sql = "select * from user"; PreparedStatement pstmt; try { pstmt = (PreparedStatement)conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery();//执行查询 int col = rs.getMetaData().getColumnCount();//获取字段数 System.out.println("============================"); while (rs.next()) { for (int i = 1; i <= col; i++) { System.out.print(rs.getString(i) + "\t"); if ((i == 2) && (rs.getString(i).length() < 8)) {//此行仅仅是为了显示更好看,可以删去 System.out.print("\t"); } } System.out.println(""); } System.out.println("============================"); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * 验证用户名是否存在 * @param name,用户名 * @return 布尔值 */ public boolean hasUser(String name){//查询某个用户是否存在 boolean success=false;//标记验证是否成功 try { Connection con = getConn(); String sql = "select * from user where name=? "; PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql); pstmt.setString(1, name); ResultSet rs = pstmt.executeQuery();//执行查询 if(rs.next()) { //System.out.println("欢迎" + rs.getString("name")); success=true; } pstmt.close(); con.close(); }catch (SQLException e) { System.out.println(e.getMessage()); } return success; } /** * 验证用户名和密码是否正确 * @param usename,用户名 * @param password,密码 * @return 建立的数据库连接 */ public boolean verify(String username, String password) { boolean success=false;//标记验证是否成功 try { Connection con = getConn(); String sql = "select * from user where name=? and password=?"; PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); ResultSet rs = pstmt.executeQuery();//执行查询 if(rs.next()) { //System.out.println("欢迎" + rs.getString("name")); success=true; } pstmt.close(); con.close(); }catch (SQLException e) { System.out.println(e.getMessage()); } return success; } public static void main(String[] args) { getConn(); UserDaoSQL uds =new UserDaoSQL(); uds.verify("ma","123456"); User u1=new User("zhangyi","456");//这里可能会遇到构造方法参数不符的问题,重新修改一下构造方法 uds.addUser(u1); System.out.println(uds.hasUser(u1.getName())); uds.queryUser(); System.out.println("Goodbye!"); } }</nowiki> ===其他类=== User类: <nowiki>package entity; import service.*; public class User { private String id; //用户登录账号 private String name; //用户名-真实姓名 private String password;//用户登录密码 private CartService cart = new CartService(); //用户的购物车 /** * 无参构造函数 */ public User() { } /** * 带参构造函数 * * * @param name * @param password */ public User(String name, String password) { this(); this.name = name; this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public CartService getCart() { return cart; } @Override public String toString() { return "用户编号:" + this.id + " | 用户姓名:" + this.name; } }</nowiki> 返回 [[Java程序设计]]
返回至
Java任务:修改用户密码
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息