系统架构图
用户管理
-
增加用户
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为例
switch中用中文是jdk7的新特性
3.没事画画架构图,成长特别快
4.日常开发宝典:
阿里巴巴Java开发手册(正式版)
6.点击添加用户时无法输入日期,前端报错
判断用户是否存在接口:后端实现
http://localhost:8080/smbms_war/calendar/WdatePicker.js可以访问
http://localhost:8080/smbms_war/calendar/My97DatePicker.htm重定向到了:http://www.my97.net/
现在是404,说明不是重定向问题
把/smbms_war去掉,清除缓存也不行
发现这里有特殊字符,把它复制到地址栏:
回车:
发现是双引号惹的祸
打断点调试:
去掉圈中的内容
重启服务验证
不行,多删除了代码,补回来
还不行,补全代码:
ok,正常界面:
7.url中的%20是空格
8.点击用户角色无下拉列表:
前端也无报错:
发现缺少方法: