超市订单管理系统(5)-密码修改

2021年11月20日 阅读数:5
这篇文章主要向大家介绍超市订单管理系统(5)-密码修改,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

本文所需的资源文件为pwdmodify.jsp,其他的css样式什么的静态资源文件在前面的准备工做文章中,想练习的也能够从github中搜索smbms,全套系统都有:css

连接:https://pan.baidu.com/s/1pimNLAHdg8x9pZfuDfoR1A
提取码:6666前端

1.引言:想这种密码修改的功能,确定是要和数据库打交道的,那么这样一个功能编写流程通常都是先创建相关的数据库表-》编写Dao接口和实现类-》编写service接口和实现类-》编写servlet-》最后写前端这么一个自底向上的思想。该功能的大体思路以下:java

  (1)Dao层去进行具体的数据库操做代码实现,就是说sql语句从这里写并执行完成数据库操做,返回相应的值,通常是增删改返回具体的数字,就是影响了数据库多少行,查询的话通常是返回具体的结果,打比方说要查询的是是数据库的用户表,那么会将查到的数据所有经过User实体类里的set方法封装到这个类里边,吧这个user对象返回给service层。mysql

  (2)Service等主要进行业务逻辑代码的实现,就是根据Dao层返回的数据调用Dao层的相关的方法继续往上返回数据。git

  (3)Servlet层主要是经过getParameter方法获取前端相应的参数,而后调用业务层方法获取业务层方法返回的数据与从前端获取的参数进行比对,完成相关操做。github

2. 修改密码的实现sql

  (1)在准备工做阶段数据库已经创建完毕数据库

  (2)编写Dao层的接口和实现类,由于操做数据库,因此Connection参数必定是要传的,又由于咱们要改密码,因此要传一个用户的id和密码这两个参数tomcat

 1 package com.xiaoma.dao.user;
 2 
 3 import com.xiaoma.pojo.User;
 4 import java.sql.Connection;
 5 
 6 public interface UserDao {
 7     //获得要登陆的用户
 8     public User getLoginUser(Connection connection,String userCode) throws Exception;
 9 
10     //修改当前用户密码
11     public int updataPwd(Connection connection,int id,String passsword) throws Exception;
12 }
    //修改密码,在userDaoImpl类中编写,放在用户登陆方法(getLoginUser)的下面便可
    @Override
    public int updataPwd(Connection connection, int id, String password) throws Exception {
        //1.首先想一下,咱们确定要用BaseDao里的写好的公共查询方法去查询,去执行咱们的sql,从BaseDao中的公共查询方法中能够看到
        //咱们须要建立connection,resultSet,preparedStatement,sql和params五个参数对象,其中connection已经有了
        PreparedStatement pstm = null;
        int updateRow=0;

        //当咱们数据库连接了才会去执行下面的代码,数据库连接了丢一个sql进去并执行
        if (connection != null) {
            String sql = "update smbms_user set userPassword=? where id=?";//为了安全,使用预编译的sql
            Object[] params = {password,id};
            //2.去调用BaseDao里的写好的公共查询方法去执行sql
            updateRow = BaseDao.execute(connection, pstm, sql, params);
            //3.查询完以后要关闭,其中connection链接不用关
            BaseDao.closeResourses(null, pstm,null);
        }
        //4.返回更新了多少行
        return updateRow;
    }

  (3)service层接口和实现类的编写安全

 1 package com.xiaoma.service.user;
 2 
 3 import com.xiaoma.pojo.User;
 4 
 5 public interface UserService {
 6     //用户登陆业务
 7     public User Login(String userCode,String password);
 8 
 9     //根据用户id修改密码
10     public boolean updataPwd(int id, String password);
11 }
 1     //修改密码,一样在userServiceImpl类中实现的该接口
 2     @Override
 3     public boolean updataPwd(int id, String password) {
 4         Connection connection=null;
 5         boolean flag=false;
 6 
 7         //链接数据库
 8         try {
 9             connection=BaseDao.getConnection();
10             if (userDao.updataPwd(connection,id,password)>0) {
11                 flag=true;
12             }
13         } catch (Exception e) {
14             e.printStackTrace();
15         }finally {
16             //关闭资源
17             BaseDao.closeResourses(connection,null,null);
18         }
19 
20         return flag;
21     }

  (4)编写servlet,启动tomcat进行测试

 1 package com.xiaoma.servlet.user;
 2 
 3 import com.mysql.jdbc.StringUtils;
 4 import com.xiaoma.pojo.User;
 5 import com.xiaoma.service.user.UserService;
 6 import com.xiaoma.service.user.UserServiceImpl;
 7 import com.xiaoma.util.Constants;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import java.io.IOException;
13 
14 public class UserServlet extends HttpServlet {
15     @Override
16     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
17         doPost(req, resp);
18     }
19 
20     @Override
21     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
22         //获取用户session
23         Object o = request.getSession().getAttribute(Constants.USER_SESSION);
24         //拿到前端的newpassword参数
25         String newpassword = request.getParameter("newpassword");
26         System.out.println("Servlet:"+newpassword);
27         boolean flag = false;
28         //当密码不为空而且session也不为空往下走
29         if (o != null && !StringUtils.isNullOrEmpty(newpassword)) {
30             UserService userService = new UserServiceImpl();
31             //拿到用户id和密码
32             flag = userService.updatePwd(((User) o).getID(), newpassword);
33             if (flag) {
34                 request.setAttribute(Constants.USER_SESSION, "修改密码成功,请退出并使用新密码从新登陆!");
35                 //若是密码修改为功就吧session移除掉
36                 request.getSession().removeAttribute(Constants.USER_SESSION);//session注销
37             } else {
38                 request.setAttribute(Constants.USER_SESSION, "修改密码失败!");
39             }
40         } else {
41             request.setAttribute(Constants.USER_SESSION, "修改密码失败!");
42         }
43         request.getRequestDispatcher("pwdmodify.jsp").forward(request, response);
44     }
45 }

  (5)下一部分:修改密码的时候去验证旧密码