Mysql教程

22.5  用户管理模块

用户管理模块包括两个功能,分别是用户登录功能和修改密码功能。用户登录功能是管理员进入管理系统的入口,只有输入正确的用户名和密码才能够登录成功。修改密码功能能够保证管理员账号的安全。本节将为读者介绍用户登录功能和修改密码功能的内容。

22.5.1 用户登录功能

用户通过login.jsp页面输入用户名和密码。单击【登录】按钮就可以提交用户名和密码。login.jsp文件有个<form>表单中通过post()方法将用户名和密码提交给servlet文件夹下的userLogin.java文件。userLogin.java中调用DB.java类中的DB.java()方法判断用户名和密码是否正确。如果用户名和密码都正确,系统会跳转到LoginOK.html页面。 如果不正确,则跳转到LoginError.html页面。userLoginjava文件是一个Servlet文件,其部分代码如下:

//doGet()方法有两个参数,分别是HttpServletRequest和HttpServletResponse类型的参数
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	//抛出异常
request.setCharacterEncoding("gbk");                   //设置字符编码为 GBK
String sql=null;                                       //定义字符串sql,用于存储SQL语句
String username=null;                                  //定义字符串 usemame
String password=null;                                  //定义字符串 password
usemame=request.getParameter("username");              //从页面获取 usemame 变量的值
password=request.getParameter("password");             //从页面获取 password 变量的值
//如果用户名和密码都不为空,那么就可以组合SELECT语句,并且执行这个SELECT语句
if(usemame!=null && !usemame.equals("") & &password!=null && !password.equals("")){
//将字符串变量usemame和password生成SELECT语句
sql="SELECT * FROM user WHERE username='"+username+"' AND password='"+password+"'";
DB db = new DB();                                     //新建 DB 对象
db.connectMySQL();                                    //调用connectMySQL()连接 MySQL
try{                                                  //使用try...catch语句捕获异常
ResultSet rs=db.query(sql);	                          //调用query()方法执行SELECT语句
if(rs.next()){                                        //判断结果集rs中是否有记录
//创建一个session,并且将用户名存储在3session中
request.getSession().setAttribute("usemame", usemame);
response.sendRedirect("../LoginOK.html");             //页面跳转到LoginOK.html
}
else{
response.sendRedirect("../LoginError.html");
                                                      //如果rs中没有记录就表示登录失败
}
db.closeDB();                                         //调用closeDB()方法关闭数据库对象
}catch(SQLException e){                               //捕获异常信息
e.printStackTrace();                                  //显示异常信息
}
}
else{
response.sendRedirect("../LoginError.html");          //没有输入用户名和密码时登录失败
}
}
//因为<form>表单中使用post(),因此必须调用doPost()方法中的程序。
//但是这些程序写在doGet()方法中,所以只能用doPost()方法重载doGet()
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	//抛出异常
doGet(request, response);	//重载此doGet()方法
}

userLogin.java文件中调用connectMySQL()方法连接MySQL数据库。然后调用query()方法执行SELECT语句,从user表中查询相应的记录。查询结果存在ResultSet对象rs中。如果rs.next()不为空,这说明从表中查询出来的记录、输入的用户名和密码都正确。这样就可以登录成功了。

22.5.2 修改密码

用户登录成功后,可以在modifyPasswd.jsp页面修改用户密码。然后将修改后的密码提交给modifyPasswd.java。modifyPasswd.java 将新密码更新到 user表中。

这里的用户名是登录用户的名称,用户名是不能修改的。页面需要输入旧密码,并且输入两次新密码。如果旧密码不正确或者两次输入的新密码不相同,那么系统会跳转到错误页面。如果输入都正确后,旧密码和新密码被提及到modifyPasswd.java文件中。modifyPasswd.java文件的部分代码如下:

//判断从页面传递过来的新密码是否为空,并且判断两次输入的新密码是否相同
if(newPassword1 !=null && !newPassword1 .equals("")&&newPassword1 .equals(newPassword2)){
sql = "SELECT * FROM user WHERE username="'+username+'"
AND password="'+oldPassword+"'";	                //生成 SELECT 语句
int i;	                                            //定义变量i
DB db = new DB();                                   //新建 DB 对象
db.connectMySQL();                                  //连接 MySQL 数据库
try{                                                //使用try...catch语句捕获异常
ResultSet rs=db.query(sql);	                        //执行 SELECT 语句
//如果从user表中査询出数据,说明这个用户已经存在,可以修改这个用户的密码
if(rs.next()){
sql = "UPDATE user SET password="'+newPassword1+'"
WHERE username="'+username+'";                      //生成 UPDATE 语句
i=db.update(sql);                                   //执行 UPDATE 语句
if(i>0){                                            //i>0表示有记录被更新
System.out.println("密码修改成功");
}
}else{	                                            //如果i=0表示没有记录改变
System.out.println("旧密码错误");
}
db.closeDB();
}catch(SQLException e){
e.printStackT race();
}
}else{
System.out.println("两次输入的新密码不一致或者新密码为空");
//输出新密码不能通过的信息
}
response.sendRedirect("../modifyPasswd.jsp");                                                //页面跳转到 modifyPasswd_jsp

新密码被提交到modifyPasswd.java文件后,调用update()方法执行UPDATE语句。如果,旧密码正确,而且两次输入的新密码相同,那么将新密码更新到user表中。这样,用户密码就修改成功了。

关注微信获取最新动态