javaweb-37:smbms架构分析及方法学习

系统架构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PBoMKaaA-1635584316120)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030165551396.png)]

源文件

用户管理

  • 增加用户

    UserDao

    //增加用戶信息
    int add(Connection connection, User user) throws SQLException;
    

    UserDaoImpl

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

    UserService

    //增加用户信息
    boolean add(User user);
    

    UserServiceImpl

    @Override
    public boolean add(User user) {
        boolean flag = false;
        Connection connection = null;
        try {
            connection = BaseDao.getConnection();
            connection.setAutoCommit(false);//开启JDBC事务管理
            int updateRows = userDao.add(connection, user);
            connection.commit();
            if (updateRows > 0) {
                flag = true;
                System.out.println("add success!");
            } else {
                System.out.println("add failed!");
            }
    
        } catch (Exception e) {
            e.printStackTrace();
            try {
                System.out.println("rollback==================");
                connection.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } finally {
            //在service层进行connection连接的关闭
            BaseDao.closeResource(connection, null, null);
        }
        return flag;
    }
    
    @Test
    public void testAddUser() {
        UserServiceImpl userService = new UserServiceImpl();
        User user = new User();
        user.setUserCode("gongyitest");
        user.setUserName("工一测试");
        user.setUserRole(1);
        user.setGender(1);
        user.setBirthday(new Date());
        user.setPhone("13716267463");
        user.setAddress("北京昌平区");
        userService.add(user);
    }
    

    UserServlet

    else if (method != null && method.equals("add")) {
        //增加操作
        this.add(req, resp);
    }
    
    private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        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("address");
        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.setCreateBy(((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);
        }
    }
    
  • 删除用户

    UserDao

    //通过userId删除user
    int deleteUserById(Connection connection, Integer delId) throws Exception;
    

    UserDaoImpl

    @Override
    public int deleteUserById(Connection connection, Integer delId) throws Exception {
        PreparedStatement pstm = null;
        int flag = 0;
        if (null != connection) {
            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;
    }
    

    UserService

    //根据ID删除user
    boolean deleteUserById(Integer delId);
    

    UserServiceImpl

    @Override
    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;
    }
    
    @Test
    public void testDeleteUser() {
        UserServiceImpl userService = new UserServiceImpl();
        boolean b = userService.deleteUserById(15);
        System.out.println(b);
    }
    

    UserServlet

    else if (method != null && method.equals("deluser")) {
        this.delUser(req, resp);
    }
    private void delUser(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String id = req.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");
            }
        }
    
        //把resultMap转换成json对象输出
        resp.setContentType("application/json");
        PrintWriter outPrintWriter = resp.getWriter();
        outPrintWriter.write(JSONArray.toJSONString(resultMap));
        outPrintWriter.flush();
        outPrintWriter.close();
    }
    
  • 修改用户

    UserDao

    //修改用户信息
    int modify(Connection connection, User user) throws Exception;
    
    //通过userId获取user
    User getUserById(Connection connection, String id) throws Exception;
    

    UserDaoImpl

    @Override
    public int modify(Connection connection, User user) throws Exception {
        int flag = 0;
        PreparedStatement pstm = null;
        if (null != connection) {
            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()};
            System.out.println(sql);
            flag = BaseDao.execute(connection, pstm, sql, params);
            BaseDao.closeResource(null, pstm, null);
        }
        return flag;
    }
    
    @Override
    public User getUserById(Connection connection, String id) throws Exception {
        User user = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        if (null != connection) {
            String sql = "select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where u.id=? and u.userRole = r.id";
            Object[] params = {id};
            System.out.println(sql);
            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.setCreateBy(rs.getInt("createBy"));
                user.setCreationDate(rs.getTimestamp("creationDate"));
                user.setModifyBy(rs.getInt("modifyBy"));
                user.setModifyDate(rs.getTimestamp("modifyDate"));
                user.setUserRoleName(rs.getString("userRoleName"));
            }
            BaseDao.closeResource(null, pstm, rs);
        }
        System.out.println(user);
        return user;
    }
    

    UserService

    //修改用户信息
    boolean modify(User user);
    
    //根据ID查找user
    User getUserById(String id);
    

    UserServiceImpl

    @Override
    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;
    }
    
    
    @Override
    public User getUserById(String id) {
        User user = null;
        Connection connection = null;
        try {
            connection = BaseDao.getConnection();
            user = userDao.getUserById(connection, id);
        } catch (Exception e) {
            e.printStackTrace();
            user = null;
        } finally {
            BaseDao.closeResource(connection, null, null);
        }
        return user;
    }
    
    @Test
    public void testGetUserById() {
        UserServiceImpl userService = new UserServiceImpl();
        User user = userService.getUserById("1");
        System.out.println(user.getUserName());
    }
    
    @Test
    public void testUpdateUser() {
        UserServiceImpl userService = new UserServiceImpl();
        User user = new User();
        user.setId(1);
        user.setAddress("gonngyilovemuzi");
        boolean modify = userService.modify(user);
        System.out.println(modify);
    }
    

    UserServlet

    else if (method != null && method.equals("modify")) {
        this.getUserById(req, resp, "usermodify.jsp");
    }else if (method != null && method.equals("modifyexe")) {
        this.modify(req, resp);
    }
    
    private void getUserById(HttpServletRequest req, HttpServletResponse resp, String url) throws ServletException, IOException {
        String id = req.getParameter("uid");
        if (!StringUtils.isNullOrEmpty(id)) {
            //调用后台方法得到user对象
            UserService userService = new UserServiceImpl();
            User user = userService.getUserById(id);
            req.setAttribute("user", user);
            req.getRequestDispatcher(url).forward(req, resp);
        }
    }
    
    private void modify(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("uid");
        String userName = req.getParameter("userName");
        String gender = req.getParameter("gender");
        String birthday = req.getParameter("birthday");
        String phone = req.getParameter("phone");
        String address = req.getParameter("address");
        String userRole = req.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) req.getSession().getAttribute(Constants.USER_SESSION)).getId());
        user.setModifyDate(new Date());
    
        UserService userService = new UserServiceImpl();
        if (userService.modify(user)) {
            resp.sendRedirect(req.getContextPath() + "/jsp/user.do?method=query");
        } else {
            req.getRequestDispatcher("usermodify.jsp").forward(req, resp);
        }
    }
    
  • 查看用户

    UserServlet

    else if (method != null && method.equals("view")) {
        this.getUserById(req, resp, "userview.jsp");
    }
    
  • 判断用户是否存在

    UserDao

    //得到要登录的用户
    User getLoginUser(Connection connection, String userCode) throws SQLException;
    

    UserDaoImpl

    //得到要登录的用户
    public User getLoginUser(Connection connection, String userCode) throws SQLException {
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User user = null;
        if (connection != null) {
            String sql = "select * from smbms_user where userCode=?";
            Object[] params = {userCode};
            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.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.setCreateBy(rs.getInt("createBy"));
                user.setCreationDate(rs.getTimestamp("creationDate"));
                user.setModifyBy(rs.getInt("modifyBy"));
                user.setModifyDate(rs.getTimestamp("modifyDate"));
            }
            BaseDao.closeResource(null, pstm, rs);
        }
        return user;
    }
    

    UserService

    //根据userCode查询出User
    User selectUserCodeExist(String userCode);
    

    UserServiceImpl

    @Override
    public User selectUserCodeExist(String userCode) {
        Connection connection = null;
        User user = null;
        try {
            connection = BaseDao.getConnection();
            user = userDao.getLoginUser(connection, userCode);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            BaseDao.closeResource(connection, null, null);
        }
        return user;
    }
    
    @Test
    public void testUserExist() {
        UserServiceImpl userService = new UserServiceImpl();
        User gongyi = userService.selectUserCodeExist("gongyi1");
        System.out.println(gongyi.getPhone());
    }
    

    UserServlet

    else if (method != null && method.equals("ucexist")) {
        this.userCodeExist(req, resp);
    } 
    
    private void userCodeExist(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        //判断用户账号是否可用
        String userCode = req.getParameter("userCode");
    
        HashMap<String, String> resultMap = new HashMap<String, String>();
        if (StringUtils.isNullOrEmpty(userCode)) {
            //userCode == null || userCode.equals("")
            resultMap.put("userCode", "exist");
        } else {
            UserService userService = new UserServiceImpl();
            User user = userService.selectUserCodeExist(userCode);
            if (null != user) {
                resultMap.put("userCode", "exist");
            } else {
                resultMap.put("userCode", "notexist");
            }
        }
    
        //把resultMap转为json字符串以json的形式输出
        //配置上下文的输出类型
        resp.setContentType("application/json");
        //从response对象中获取往外输出的writer对象
        PrintWriter outPrintWriter = resp.getWriter();
        //把resultMap转为json字符串 输出
        outPrintWriter.write(JSONArray.toJSONString(resultMap));
        outPrintWriter.flush();//刷新
        outPrintWriter.close();//关闭流
    }
    

如上是用户的增,删,改核心代码,smbms完整版项目:完整项目Servlet版源码

彩蛋

1.学习方法之类比学习

2.代码学习之反编译

拷贝项目(maven一般在target目录找到)到tomcat,修改tomcat端口号,启动项目

然后点击页面操作,看tomcat日志

1)代码反编译工具

JD-GUI

IDEA:直接把class文件 放到相应的文件夹下就行(直接拷贝不行,得show explorer找到项目本地路径,然后复制class文件,然后idea打开)

2)源代码与反编译代码是有些许区别的?【只要没有中文和switch,一般区别都不大】

以含有switch语句的demo为例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVc9qyHC-1635584316126)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030123806699.png)]

switch中用中文是jdk7的新特性

3.没事画画架构图,成长特别快

4.日常开发宝典:

阿里巴巴Java开发手册(正式版)

5.SMBMS源码参考

6.点击添加用户时无法输入日期,前端报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MSLlOF1v-1635584316131)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030131336004.png)]

判断用户是否存在接口:后端实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z7ZOx25Q-1635584316133)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030132015636.png)]

http://localhost:8080/smbms_war/calendar/WdatePicker.js可以访问

http://localhost:8080/smbms_war/calendar/My97DatePicker.htm重定向到了:http://www.my97.net/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgYLBJUa-1635584316135)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030135800077.png)]

现在是404,说明不是重定向问题
在这里插入图片描述

把/smbms_war去掉,清除缓存也不行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HF6JTyC5-1635584316140)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030141200298.png)]

发现这里有特殊字符,把它复制到地址栏:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F6ZjVDTU-1635584316141)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030141223913.png)]

回车:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S7LPqRrU-1635584316143)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030141238524.png)]

发现是双引号惹的祸

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vRnvv2vF-1635584316144)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030141438351.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAY69w9J-1635584316145)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030141521929.png)]

打断点调试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rKom1heX-1635584316147)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030141752430.png)]

去掉圈中的内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-thShNlYO-1635584316148)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030141854491.png)]

重启服务验证

不行,多删除了代码,补回来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1vuOvBH-1635584316150)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030142313178.png)]

还不行,补全代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ogHa3sEY-1635584316151)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030142631152.png)]

ok,正常界面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UHv4c3Jt-1635584316153)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030142737812.png)]

7.url中的%20是空格

参考

8.点击用户角色无下拉列表:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CQMjjmuM-1635584316155)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030143029710.png)]

前端也无报错:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9d9LtsJM-1635584316156)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030143046280.png)]

发现缺少方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tU23ojA1-1635584316158)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-37:smbms架构分析及方法学习.assets\image-20211030143202837.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值