SMBMS

SMBMS

在这里插入图片描述

项目搭建

  1. 搭建一个maven web项目

  2. 配置Tomcat

  3. 测试项目是否能够跑起来

  4. 导入项目中会遇到的jar包

    jsp,servlet,mysql驱动,jstl,starand

  5. 创建项目包结构

在这里插入图片描述

  1. 编写实体类

    ORM映射:表-类映射

  2. 编写基础公共类

    1. 数据库配置文件

      driver=com.mysql.jdbc.Driver
      url=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8
      username=root
      password=0927
      
      
    2. 编写数据库公共类

      package com.hao.dao;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.sql.*;
      import java.util.Properties;
      
      /**
       * @author 许浩
       * @date 2020/7/19 - 16:19
       */
      
      //操作数据库的公共类
      public class BaseDao {
      
          private static String driver;
          private static String url;
          private static String username;
          private static String password;
      
          //静态代码块,类加载的时候就初始化了
          static {
              Properties properties = new Properties();
              //通过类加载器来加载资源
              InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
      
              try {
                  properties.load(is);
              } catch (IOException e) {
                  e.printStackTrace();
              }
      
              driver = properties.getProperty("driver");
              url = properties.getProperty("url");
              username = properties.getProperty("username");
              password = properties.getProperty("password");
          }
      
          //获取数据库的连接
          public static Connection getConnection() {
              Connection connection = null;
              try {
                  Class.forName(driver);
                  connection = DriverManager.getConnection(url, username, password);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return connection;
          }
      
          //编写查询公共类
          public static ResultSet execute(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet, String sql, Object[] params) throws SQLException {
              preparedStatement = connection.prepareStatement(sql);
      
              for (int i = 0; i < params.length; i++) {
                  preparedStatement.setObject(i + 1, params[i]);
              }
      
              resultSet = preparedStatement.executeQuery();
              return resultSet;
          }
      
          //编写增删改公共方法
          public static int execute(Connection connection, PreparedStatement preparedStatement, String sql, Object[] params) throws SQLException {
              preparedStatement = connection.prepareStatement(sql);
      
              for (int i = 0; i < params.length; i++) {
                  preparedStatement.setObject(i + 1, params[i]);
              }
      
              int updateRows = preparedStatement.executeUpdate();
              return updateRows;
          }
      
      
          //释放资源
          public static boolean closeResource(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
              boolean flag = true;
      
              if (resultSet != null) {
                  try {
                      resultSet.close();
                      //GC回收
                      resultSet = null;
                  } catch (SQLException e) {
                      e.printStackTrace();
                      flag = false;
                  }
              }
      
              if (preparedStatement != null) {
                  try {
                      preparedStatement.close();
                      //GC回收
                      preparedStatement = null;
                  } catch (SQLException e) {
                      e.printStackTrace();
                      flag = false;
                  }
              }
      
              if (connection != null) {
                  try {
                      connection.close();
                      //GC回收
                      connection = null;
                  } catch (SQLException e) {
                      e.printStackTrace();
                      flag = false;
                  }
              }
      
              return flag;
          }
      }
      
      
    3. 编写字符编码过滤器并注册

      package com.hao.filter;
      
      import javax.servlet.*;
      import java.io.IOException;
      
      /**
       * @author 许浩
       * @date 2020/7/19 - 16:51
       */
      public class CharacterEncodingFilter implements Filter {
          public void init(FilterConfig filterConfig) throws ServletException {
      
          }
      
          public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
              servletRequest.setCharacterEncoding("utf-8");
              servletResponse.setCharacterEncoding("utf-8");
      
              filterChain.doFilter(servletRequest,servletResponse);
          }
      
          public void destroy() {
      
          }
      }
      
      
  3. 导入静态资源

登录功能实现

在这里插入图片描述

  1. 编写前端页面

  2. 设置首页

    <!--设置欢迎页面-->
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
    
  3. 编写dao层登录用户登录的接口

    //得到要登录的用户
    public User getLoginUser(Connection connection, String userCode, String userPassword) throws SQLException;
    
  4. 编写dao接口的实现类

    //得到要登录的用户
    public User getLoginUser(Connection connection, String userCode, String userPassword) throws SQLException {
    
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User user = null;
    
        if (connection != null) {
            String sql = "select * from smbms_user where userCode=? and userPassword=?";
            Object[] params = {userCode, userPassword};
    
            rs = BaseDao.execute(connection, pstm, rs, sql, params);
            if (rs.next()) {
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUserCode(rs.getString("userCode"));
                user.setUserName(rs.getString("userName"));
                user.setUserPassword(rs.getString("userPassword"));
                user.setGender(rs.getInt("gender"));
                user.setBirthday(rs.getDate("birthday"));
                user.setPhone(rs.getString("phone"));
                user.setAddress(rs.getString("address"));
                user.setUserRole(rs.getInt("userRole"));
                user.setCreatedBy(rs.getInt("createdBy"));
                user.setCreationDate(rs.getTimestamp("creationDate"));
            }
            BaseDao.closeResource(null, pstm, rs);
        }
        return user;
    }
    
  5. 业务层接口

    public interface UserService {
        //用户登录
        public User login(String usercode, String password);
    }
    
  6. 业务层实现类

    package com.hao.service.user;
    
    import com.hao.dao.BaseDao;
    import com.hao.dao.user.UserDao;
    import com.hao.dao.user.UserDaoImpl;
    import com.hao.pojo.User;
    import org.junit.jupiter.api.DynamicTest;
    import org.junit.jupiter.api.Test;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    /**
     * @author 许浩
     * @date 2020/7/19 - 19:35
     */
    public class UserServiceImpl implements UserService {
    
        //业务层都会调用dao层,所以我们要引入Dao层
        private UserDao userDao;
    
        public UserServiceImpl() {
            userDao = new UserDaoImpl();
        }
    
        public User login(String usercode, String password) {
            Connection connection = null;
            User user = null;
    
            try {
                connection = BaseDao.getConnection();
                //通过业务层调用对应的具体的数据库操作
                user = userDao.getLoginUser(connection, usercode);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                BaseDao.closeResource(connection, null, null);
            }
            return user;
        }
    
    }
    
    
  7. 编写Servlet

    package com.hao.servlet;
    
    import com.hao.pojo.User;
    import com.hao.service.user.UserServiceImpl;
    import com.hao.util.Constants;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @author 许浩
     * @date 2020/7/19 - 20:11
     */
    public class LoginServlet extends HttpServlet {
    
        //Servlet:控制层,调用业务层代码
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            //获取用户名和密码
            String userCode = req.getParameter("userCode");
            String userPassword = req.getParameter("userPassword");
    
            //和数据库中的密码进行对比,调用业务层
            UserServiceImpl userService = new UserServiceImpl();
            User user = userService.login(userCode, userPassword);
    
            if (user != null) {    //查有此人,可以登录
                //将用户的信息放到Session中
                req.getSession().setAttribute(Constants.User_Session, user);
                //跳转到主页
                resp.sendRedirect("jsp/frame.jsp");
            } else { //查无此人
                //转发会登录页面,顺带提示用户名或密码错误
                req.setAttribute("error", "用户名或密码错误");
                req.getRequestDispatcher("login.jsp").forward(req, resp);
            }
    
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
    
  8. 注册Servlet

        <!--Servlet-->
        <servlet>
            <servlet-name>LoginServlet</servlet-name>
            <servlet-class>com.hao.servlet.LoginServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>LoginServlet</servlet-name>
            <url-pattern>/login.do</url-pattern>
        </servlet-mapping>
    
  9. 测试访问,确保以上功能成功

登录功能优化

注销功能:

思路:

  1. 移除Session

    public class LogoutServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //用处用户的Session
            req.getSession().removeAttribute(Constants.User_Session);
            //返回登录页面
            resp.sendRedirect("/login.jsp");
        }
    
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
  2. 注册xml

    <servlet>
        <servlet-name>LogoutServlet</servlet-name>
        <servlet-class>com.hao.servlet.LogoutServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LogoutServlet</servlet-name>
        <url-pattern>/jsp/logout.do</url-pattern>
    </servlet-mapping>
    

登录拦截优化

编写 过滤器,并注册

public class SysFilter implements Filter {

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest)req;
        HttpServletResponse response=(HttpServletResponse)resp;

        //过滤器,从Session中获取用户
        User user = (User) request.getSession().getAttribute(Constants.User_Session);

        if (user==null){    //已经移除或注销了
            response.sendRedirect("/smbms/error.jsp");
        }

        filterChain.doFilter(req,resp);
    }

    public void destroy() {

    }
}

密码修改

  1. 导入前端素材

  2. 写项目,建议从底层向上写
    在这里插入图片描述

  3. UserDao接口

    //修改当前用户密码
    public int updatePwd(Connection connection,String id,String password) throws SQLException;
    
  4. UserDao实现类

    //修改当前用户密码
    public int updatePwd(Connection connection, String id, String password) throws SQLException {
    
        PreparedStatement pstm = null;
        int excute = 0;
        if (connection != null) {
            String sql = "update smbms_user set userPassword=? where id=?";
            Object[] params = {password, id};
            excute = BaseDao.execute(connection, pstm, sql, params);
            BaseDao.closeResource(null, pstm, null);
        }
        return excute;
    }
    
  5. UserService接口

    //根据用户ID修改密码
    public boolean updatePwd(int id, String password);
    
  6. UserService实现类

    public boolean updatePwd(int id, String password) {
        Connection connection = null;
        boolean flag = false;
    
        //修改密码
        try {
            connection = BaseDao.getConnection();
            if (userDao.updatePwd(connection, id, password) > 0) {
                flag = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            BaseDao.closeResource(connection, null, null);
        }
        return flag;
    }
    
  7. 实现复用,需要提出取方法

    public void updatePwd(HttpServletRequest req,HttpServletResponse resp){
        //从Session里面拿ID;
        Object attribute = req.getSession().getAttribute(Constants.User_Session);
        String newpassword = req.getParameter("newpassword");
    
        boolean flag = false;
    
        if (attribute != null && newpassword != null) {
            UserServiceImpl userService = new UserServiceImpl();
            flag = userService.updatePwd(((User) (attribute)).getId(), newpassword);
            if (flag) {
                req.setAttribute("message", "修改密码成功,请退出,并使用新密码登录");
                //密码修改成功,移除当前Session
                req.getSession().removeAttribute(Constants.User_Session);
            } else {
                //密码修改失败
                req.setAttribute("message", "密码修改失败");
            }
        } else {
            req.setAttribute("message", "新密码有问题");
        }
    
        try {
            req.getRequestDispatcher("pwdmodify.jsp").forward(req, resp);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
  8. 注册xml

    <servlet>
        <servlet-name>UserServlet</servlet-name>
        <servlet-class>com.hao.servlet.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserServlet</servlet-name>
        <url-pattern>/jsp/user.do</url-pattern>
    </servlet-mapping>
    

优化密码修改使用Ajax

  1. 阿里巴巴的fastjson

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.4</version>
    </dependency>
    
  2. 代码实现

    //验证旧密码,session中有用户的密码
    public void pwdModify(HttpServletRequest req, HttpServletResponse resp) {
        Object o = req.getSession().getAttribute(Constants.User_Session);
        String oldpassword = req.getParameter("oldpassword");
    
        //万能的Map
        Map<String, String> resultMap = new HashMap<String, String>();
    
        if (o == null) {    //Session失效了
            resultMap.put("result", "sessionerror");
        } else if (StringUtils.isNullOrEmpty(oldpassword)) {  //输入密码为空
            resultMap.put("result", "error");
        } else {
            String userPassword = ((User) o).getUserPassword();    //Session中用户的密码
            if (oldpassword.equals(userPassword)) {
                resultMap.put("result", "true");
            } else {
                resultMap.put("result", "false");
            }
        }
    
        try {
            resp.setContentType("application/json");
            PrintWriter writer = resp.getWriter();
            //JSONArray 阿里巴巴的JSON工具类,转换工具
            /*
                resultMap=["result","sessionerror"]
                Json格式={key:value}
                */
            writer.write(JSONArray.toJSONString(resultMap));
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
  3. 测试

用户管理实现

思路:

在这里插入图片描述

  1. 用户分页的工具类

  2. 用户列表页面导入

    userlist.jsp

    rollpage.jsp

1、获取用户数量

  1. UserDao

    //查询用户总数
    public int getUserCount(Connection connection,String username,int userRole) throws SQLException;
    
  2. UserDaoImpl

    //根据用户名或角色查询用户总数
    public int getUserCount(Connection connection, String username, int userRole) throws SQLException {
    
        PreparedStatement pstm = null;
        ResultSet rs = null;
        int count = 0;
    
        if (connection != null) {
            List<Object> list = new ArrayList<Object>();
            StringBuffer sql = new StringBuffer();
            sql.append("SELECT COUNT(1) as count FROM smbms_user u,smbms_role r where u.userRole=r.id");
    
            if (!StringUtils.isNullOrEmpty(username)) {
                sql.append(" and u.userName like ?");
                list.add("%" + username + "%");//index:0
            }
    
            if (userRole > 0) {
                sql.append(" and u.userRole like ?");
                list.add(userRole); //index:1
            }
    
            //把list转换为数组
            Object[] params = list.toArray();
    
            rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
    
            if (rs.next()) {
                count = rs.getInt("count");
            }
            BaseDao.closeResource(null, pstm, rs);
        }
    
        return count;
    }
    
  3. UserService

    //查询记录数
    public int getUserCount(String username,int userRole);
    
  4. UserServiceImpl

    //查询记录数
    public int getUserCount(String username, int userRole) {
    
        Connection connection=null;
        int userCount = 0;
    
        try {
            connection=BaseDao.getConnection();
            userCount = userDao.getUserCount(connection, username, userRole);
    
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeResource(connection,null,null);
        }
    
        return  userCount;
    }
    

2.获取用户列表

  1. UserDao

    //通过条件查询-userList
    public List<User> getUserList(Connection connection, String userName, int userRole, int currentPageNo, int pageSize) throws SQLException;
    
  2. UserDaoImpl

    //通过条件查询-userList
    public List<User> getUserList(Connection connection, String userName, int userRole, int currentPageNo, int pageSize) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List<User> userList = new ArrayList<User>();
        if(connection != null){
            StringBuffer sql = new StringBuffer();
            sql.append("select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where u.userRole = r.id");
            List<Object> list = new ArrayList<Object>();
            if(!StringUtils.isNullOrEmpty(userName)){
                sql.append(" and u.userName like ?");
                list.add("%"+userName+"%");
            }
            if(userRole > 0){
                sql.append(" and u.userRole = ?");
                list.add(userRole);
            }
            sql.append(" order by creationDate DESC limit ?,?");
            currentPageNo = (currentPageNo-1)*pageSize;
            list.add(currentPageNo);
            list.add(pageSize);
    
            Object[] params = list.toArray();
            System.out.println("sql ----> " + sql.toString());
            rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
            while(rs.next()){
                User _user = new User();
                _user.setId(rs.getInt("id"));
                _user.setUserCode(rs.getString("userCode"));
                _user.setUserName(rs.getString("userName"));
                _user.setGender(rs.getInt("gender"));
                _user.setBirthday(rs.getDate("birthday"));
                _user.setPhone(rs.getString("phone"));
                _user.setUserRole(rs.getInt("userRole"));
                _user.setUserRoleName(rs.getString("userRoleName"));
                userList.add(_user);
            }
            BaseDao.closeResource(null, pstm, rs);
        }
        return userList;
    }
    
  3. UserService

    //根据条件查询用户列表
    public List<User> getUserList(String queryUserName, int queryUserRole, int currentPageNo, int pageSize);
    
  4. UserServiceImpl

    //根据条件查询用户列表
    public List<User> getUserList(String queryUserName,int queryUserRole,int currentPageNo, int pageSize) {
        Connection connection = null;
        List<User> userList = null;
        System.out.println("queryUserName ---- > " + queryUserName);
        System.out.println("queryUserRole ---- > " + queryUserRole);
        System.out.println("currentPageNo ---- > " + currentPageNo);
        System.out.println("pageSize ---- > " + pageSize);
        try {
            connection = BaseDao.getConnection();
            userList = userDao.getUserList(connection, queryUserName,queryUserRole,currentPageNo,pageSize);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            BaseDao.closeResource(connection, null, null);
        }
        return userList;
    }
    

3、获取角色操作

为了 职责统一,可以把角色的操作单独放在一个包,和pojo相对应

  1. RoleDao

    public interface RoleDao {
        //获取角色列表
        public List<Role> getRoleList(Connection connection) throws SQLException;
    }
    
  2. RoleDaoImpl

    //获取角色列表
    public List<Role> getRoleList(Connection connection) throws SQLException {
    
        ResultSet resultSet = null;
        PreparedStatement pstm = null;
        List<Role> list = new ArrayList<Role>();
    
        if (connection != null) {
            String sql = "select * from smbms_role";
            pstm = connection.prepareStatement(sql);
            Object[] params = {};
            resultSet = BaseDao.execute(connection, pstm, resultSet, sql, params);
    
            while (resultSet.next()) {
                Role _role = new Role();
                _role.setId(resultSet.getInt("id"));
                _role.setRoleCode(resultSet.getString("roleCode"));
                _role.setRoleName(resultSet.getString("roleName"));
                list.add(_role);
            }
            BaseDao.closeResource(null, pstm, resultSet);
        }
    
        return list;
    }
    
  3. RoleService

    public interface RoleService {
        //获得角色列表
        public List<Role> getRoleList();
    }
    
  4. RoleServiceImpl

    //获得角色列表
    public class RoleServiceImpl implements RoleService {
    
        //引入Dao
        private RoleDao roleDao;
    
        public RoleServiceImpl() {
            roleDao = new RoleDaoImpl();
        }
    
        public List<Role> getRoleList() {
    
            Connection connection = null;
            List<Role> roleList = null;
    
            try {
                connection = BaseDao.getConnection();
                roleList = roleDao.getRoleList(connection);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                BaseDao.closeResource(connection, null, null);
            }
            return roleList;
        }
    }
    

4、用户显示的Servlet

  1. 获取用户前端的数据
  2. 判断请求是否需要执行,看参数的值判断
  3. 为了实现分页,需要就算出当前页面和分页面,页面大小
  4. 用户列表展示
  5. 返回前端
//查询用户列表
public void query(HttpServletRequest req, HttpServletResponse resp) {

    //从前端获取数据
    String queryUsername = req.getParameter("queryname");
    String temp = req.getParameter("queryUserRole");  //临时量,会随用户选择而变化
    String pageIndex = req.getParameter("pageIndex"); //前端选择的页面值
    int queryUserRole = 0;    //用户选择角色默认为0(1,2,3)

    //获取用户列表
    UserServiceImpl userService = new UserServiceImpl();
    List<User> userList = null;

    //第一次走这个请求,一定是第一页,页面大小固定
    int pageSize = 5; //默认页面大小为5
    int currentPageNo = 1;    //起始页

    if (queryUsername == null) {
        queryUsername = "";
    }
    if (temp != null && !temp.equals("")) {
        queryUserRole = Integer.parseInt(temp); //获取角色
    }
    if (pageIndex != null) {
        currentPageNo = Integer.parseInt(pageIndex);
    }

    //获得用户的总数(用于分页)
    int totalCount = userService.getUserCount(queryUsername, queryUserRole);
    //分页数支持
    PageSupport pageSupport = new PageSupport();
    pageSupport.setCurrentPageNo(currentPageNo);
    pageSupport.setPageSize(pageSize);
    pageSupport.setTotalCount(totalCount);

    int totalPageCount = pageSupport.getTotalPageCount(); //获得分页数

    //控制首页和尾页
    if (totalPageCount < 1) {
        currentPageNo = 1;
    } else if (totalPageCount < currentPageNo) { //当前页大于总页数
        currentPageNo = totalPageCount;
    }

    //获取用户列表展示
    userList = userService.getUserList(queryUsername, queryUserRole, currentPageNo, pageSize);
    req.setAttribute("userList", userList);

    //获取角色列表
    RoleServiceImpl roleService = new RoleServiceImpl();
    List<Role> roleList = roleService.getRoleList();
    req.setAttribute("roleList", roleList); //用户列表
    req.setAttribute("totalCount", totalCount); //用户总数总数
    req.setAttribute("currentPageNo", currentPageNo);   //当前页
    req.setAttribute("totalPageCount",totalPageCount);   //页面总数
    req.setAttribute("queryUserName",queryUsername);
    req.setAttribute("queryUserRole",queryUserRole);

    //返回前端
    try {
        req.getRequestDispatcher("userlist.jsp").forward(req, resp);
    } catch (ServletException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

5、添加用户

  1. UserDao

    //增加用户信息
    public int add(Connection connection,User user) throws Exception;
    
  2. UserDaoImpl

    public int add(Connection connection, User user) throws Exception {
        PreparedStatement pstm = null;
        int updateRows = 0;
        if (connection != null) {
            String sql = "insert into smbms_user (userCode,userName,userPassword,userRole,gender,birthday,phone,address,creationDate,createdBy) values(?,?,?,?,?,?,?,?,?,?)";
            Object[] params = {user.getUserCode(), user.getUserName(), user.getUserPassword(), user.getUserRole(), user.getGender(), user.getBirthday(), user.getPhone(), user.getAddress(), user.getCreationDate(), user.getCreatedBy()};
            updateRows = BaseDao.execute(connection, pstm, sql, params);
            BaseDao.closeResource(null, pstm, null);
        }
        return updateRows;
    }
    
  3. UserService

    //添加用户
    public boolean add(User user);
    
  4. UserServiceImpl

    public boolean add(User user) {
        Connection connection = null;
        boolean flag = false;
        try {
            connection = BaseDao.getConnection();
            connection.setAutoCommit(false);//开启事务
            int updateRows = userDao.add(connection, user);
            connection.commit();
            if (updateRows > 0) {
                flag = true;
            } else {
                System.out.println("添加失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            try {
                connection.rollback();//添加失败,数据回滚
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    
        return flag;
    }
    
  5. UserServlet

    //添加用户
    public void add(HttpServletRequest req, HttpServletResponse resp) throws Exception {
        String userCode = req.getParameter("userCode");
        String userName = req.getParameter("userName");
        String userPassword = req.getParameter("userPassword");
        String gender = req.getParameter("gender");
        String birthday = req.getParameter("birthday");
        String phone = req.getParameter("phone");
        String address = req.getParameter("userName");
        String userRole = req.getParameter("userRole");
    
        User user = new User();
        user.setUserCode(userCode);
        user.setUserName(userName);
        user.setUserPassword(userPassword);
        user.setAddress(address);
        try {
            user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(birthday));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        user.setGender(Integer.valueOf(gender));
        user.setPhone(phone);
        user.setUserRole(Integer.valueOf(userRole));
        user.setCreationDate(new Date());
        user.setCreatedBy(((User) req.getSession().getAttribute(Constants.User_Session)).getId());
    
        UserService userService = new UserServiceImpl();
        if (userService.add(user)) {
            resp.sendRedirect(req.getContextPath() + "/jsp/user.do?method=query");
        } else {
            req.getRequestDispatcher("useradd.jsp").forward(req, resp);
        }
    }
    

6、删除用户

  1. UserDao

    //通过userID删除对象
    public int deleteUserById(Connection connection, Integer delId)throws Exception;
    
  2. UserDaoImpl

    //通过用户id删除用户
    public int deleteUserById(Connection connection, Integer delId) throws Exception {
        PreparedStatement pstm = null;
        int flag = 0;
        if (connection != null) {
            String sql = "delete from smbms_user where id=?";
            Object[] params = {delId};
            flag = BaseDao.execute(connection, pstm, sql, params);
            BaseDao.closeResource(null, pstm, null);
        }
        return flag;
    }
    
  3. UserService

    //删除用户
    public boolean deleteUserById(Integer delId);
    
  4. UserServiceImpl

    //通过id删除用户
    public boolean deleteUserById(Integer delId) {
        Connection connection = null;
        boolean flag = false;
        try {
            connection = BaseDao.getConnection();
            if (userDao.deleteUserById(connection, delId) > 0) {
                flag = true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            BaseDao.closeResource(connection, null, null);
        }
        return flag;
    }
    
  5. UserServlet

    //删除用户
    private void delUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("uid");
        Integer delId = 0;
        try {
            delId = Integer.parseInt(id);
        } catch (Exception e) {
            delId = 0;
        }
        HashMap<String, String> resultMap = new HashMap<String, String>();
        if (delId <= 0) {
            resultMap.put("delResult", "notexist");
        } else {
            UserService userService = new UserServiceImpl();
            if (userService.deleteUserById(delId)) {
                resultMap.put("delResult", "true");
            } else {
                resultMap.put("delResult", "false");
            }
        }
    }
    

7、修改用户

  1. UserDao

    //修改用户名信息
    public int modify(Connection connection, User user)throws Exception;
    
  2. UserDaoImpl

    //修改用户信息
    public int modify(Connection connection, User user) throws Exception {
        int flag = 0;
        PreparedStatement pstm = null;
        if (connection != null) {
            String sql = "update smbms_user set userName=?,gender=?,birthday=?,phone=?,address=?,userRole=?,modifyBy=?,modifyDate=? where id =?";
            Object[] params = {user.getUserName(), user.getGender(), user.getBirthday(),
                               user.getPhone(), user.getAddress(), user.getUserRole(), user.getModifyBy(),
                               user.getModifyDate(), user.getId()};
            flag = BaseDao.execute(connection, pstm, sql, params);
            BaseDao.closeResource(null, pstm, null);
        }
        return flag;
    }
    
  3. UserService

    //修改用户
    public boolean modify(User user);
    
  4. UserServiceImpl

    //修改用户
    public boolean modify(User user) {
        Connection connection = null;
        boolean flag = false;
        try {
            connection = BaseDao.getConnection();
            if (userDao.modify(connection, user) > 0)
                flag = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            BaseDao.closeResource(connection, null, null);
        }
        return flag;
    }
    
  5. UserServlet

    //修改用户数据
    private void modify(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        String id = request.getParameter("uid");
        String userName = request.getParameter("userName");
        String gender = request.getParameter("gender");
        String birthday = request.getParameter("birthday");
        String phone = request.getParameter("phone");
        String address = request.getParameter("address");
        String userRole = request.getParameter("userRole");
    
        User user = new User();
        user.setId(Integer.valueOf(id));
        user.setUserName(userName);
        user.setGender(Integer.valueOf(gender));
        try {
            user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(birthday));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        user.setPhone(phone);
        user.setAddress(address);
        user.setUserRole(Integer.valueOf(userRole));
        user.setModifyBy(((User) request.getSession().getAttribute(Constants.User_Session)).getId());
        user.setModifyDate(new Date());
    
        UserService userService = new UserServiceImpl();
        if (userService.modify(user)) {
            response.sendRedirect(request.getContextPath() + "/jsp/user.do?method=query");
        } else {
            request.getRequestDispatcher("usermodify.jsp").forward(request, response);
        }
    
    }
    
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值