Day60 综合案例

1.思维导图

2.代码部分

监听器的注解开发

  • @WebListener
@WebListener
public class MyServletContextLIstener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("ServletContext创建");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContext销毁");
    }
}

综合案例:用户列表

  • UserDao
 @Override
    public List<User> selectUserList() throws Exception {
        return new QueryRunner(JDBCUtil.getDataSource())
                .query("select * from tb_user",
                        new BeanListHandler<User>(User.class));
    }
  • ShowIndexSerlvet
@WebServlet(name = "ShowIndexServlet" ,urlPatterns = "/showIndex")
public class ShowIndexServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        User existUser = (User) request.getSession().getAttribute("existUser");
        StringBuffer responseBody = new StringBuffer();
        if (null != existUser) {
            //已经在登录状态
            responseBody.append("欢迎回来~ " + existUser.getUsername());
            responseBody.append(" <a href='/day60/logout'>注销</a><br>");

            //获取用户列表
            UserDao userDao = new UserDaoImpl();
            try {
                List<User> userList = userDao.selectUserList();
                System.out.println(userList);
                responseBody.append("<table border='1px' cellspaceing='0px' cellpadding='10px' width='500px' height='200px'>");

                responseBody.append("<tr>");
                responseBody.append("<td>ID</td>");
                responseBody.append("<td>账户</td>");
                responseBody.append("<td>密码</td>");
                responseBody.append("</tr>");

                for (User user : userList) {
                    //遍历一个User对象,对应就应该有一个tr
                    responseBody.append("<tr>");
                    responseBody.append("<td>"+user.getId()+"</td>");
                    responseBody.append("<td>"+user.getUsername()+"</td>");
                    responseBody.append("<td>"+user.getPassword()+"</td>");
                    responseBody.append("</tr>");

                }

                responseBody.append("</table>");
            } catch (Exception e) {
                e.printStackTrace();
            }

        } else {
            //不在登录状态
            responseBody.append("您还没有登录,<a href='/day60/login.html'>请登录</a><br>");
        }

        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write(responseBody.toString());
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

综合案例:删除用户

  • UserDao
 @Override
    public void deleteUserById(Integer id) throws Exception {
        new QueryRunner(JDBCUtil.getDataSource())
                .update("delete from tb_user where id = ?",
                        id);
    }
  • ShowIndexServlet
responseBody.append("<table border='1px' cellspaceing='0px' cellpadding='10px' width='500px' height='200px'>");
responseBody.append("<tr>");
responseBody.append("<td>ID</td>");
responseBody.append("<td>账户</td>");
responseBody.append("<td>密码</td>");
responseBody.append("<td>操作</td>");
responseBody.append("</tr>");

for (User user : userList) {

    if ( user.getId() != existUser.getId()) {
        //遍历一个User对象,对应就应该有一个tr
        responseBody.append("<tr>");
        responseBody.append("<td>"+user.getId()+"</td>");
        responseBody.append("<td>"+user.getUsername()+"</td>");
        responseBody.append("<td>"+user.getPassword()+"</td>");
        responseBody.append("<td><a href='/day60/deleteUser?id="+user.getId()+"'>删除</a></td>");
        responseBody.append("</tr>");
    }
}

responseBody.append("</table>");
  • DeleteUserServlet
@WebServlet(name = "DeleteUserServlet" ,urlPatterns = "/deleteUser")
public class DeleteUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String idStr = request.getParameter("id");
        Integer id = Integer.parseInt(idStr);
        UserDao userDao = new UserDaoImpl();
        try {
            userDao.deleteUserById(id);
        } catch (Exception e) {
            e.printStackTrace();
        }
        response.sendRedirect("/day60/showIndex");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

综合案例:批量删除

  • UserDao
    public void deleteUsersByIds(List<Integer> idList) throws Exception {
        for (Integer id : idList) {
            deleteUserById(id);
        }
    }
  • ShowIndexServlet
responseBody.append("<form action='/day60/deleteUsers' method='post'>");
responseBody.append("<table border='1px' cellspaceing='0px' cellpadding='10px' width='500px' height='200px'>");
responseBody.append("<tr>");
responseBody.append("<td></td>");
responseBody.append("<td>ID</td>");
responseBody.append("<td>账户</td>");
responseBody.append("<td>密码</td>");
responseBody.append("<td>操作</td>");
responseBody.append("</tr>");

for (User user : userList) {
    if ( user.getId() != existUser.getId()) {
        //遍历一个User对象,对应就应该有一个tr
        responseBody.append("<tr>");
        responseBody.append("<td><input name='ids' type='checkbox' value='"+user.getId()+"'></td>");
        ......
        responseBody.append("</tr>");
    }
}
responseBody.append("</table>");
responseBody.append("<button type='submit'>批量删除</button>");
responseBody.append("</form>");

综合案例:添加用户

  • UserDao
 public void addUser(User inputUser) throws Exception {
        new QueryRunner(JDBCUtil.getDataSource())
                .update("insert into tb_user(username ,password) values(?,?)",
                        inputUser.getUsername(),
                        inputUser.getPassword());
    }
  • ShowIndexServlet
//已经在登录状态
responseBody.append("欢迎回来~ " + existUser.getUsername());
responseBody.append(" <a href='/day60/logout'>注销</a><br>");
responseBody.append("<a href='/day60/add.html'>添加用户</a><br>");
  • AddUserServlet
@WebServlet(name = "AddUserServlet" ,urlPatterns = "/addUser")
public class AddUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User inputUser = new User();
        inputUser.setUsername(username);
        inputUser.setPassword(password);
        //方式一:在添加之前,校验下用户名是否存在
        //方式二:让username字段有唯一约束!
        UserDao userDao = new UserDaoImpl();
        try {
            userDao.addUser(inputUser);
            //添加成功,跳转到首页
            response.sendRedirect("/day60/showIndex");

        } catch (Exception e) {
            e.printStackTrace();
            //添加失败,跳转到添加用户页面
            response.sendRedirect("/day60/add.html");
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

综合案例:修改用户

  • UserDao
@Override
    public void updateUser(User user) throws Exception {
        new QueryRunner(JDBCUtil.getDataSource())
                .update("update tb_user set username = ? , password = ? where id = ?",
                        user.getUsername(),
                        user.getPassword(),
                        user.getId());
    }
  • ShowIndexServlet
for (User user : userList) {
    if ( user.getId() != existUser.getId()) {
        //遍历一个User对象,对应就应该有一个tr
        responseBody.append("<tr>");
        responseBody.append("<td><input name='ids' type='checkbox' value='"+user.getId()+"'></td>");
        responseBody.append("<td>"+user.getId()+"</td>");
        responseBody.append("<td>"+user.getUsername()+"</td>");
        responseBody.append("<td>"+user.getPassword()+"</td>");
        responseBody.append("<td>" +
                            "<a href='/day60/deleteUser?id="+user.getId()+"'>删除</a> " +
                            "<a href='/day60/showUpdateUser?id="+user.getId()+"'>修改</a>"+
                            "</td>");
        responseBody.append("</tr>");
    }
}
  • 显示修改用户页面
@WebServlet(name = "ShowUpdateUserServlet" , urlPatterns = "/showUpdateUser")
public class ShowUpdateUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Integer id = Integer.parseInt(request.getParameter("id"));
        //根据id查询用户
        UserDao userDao = new UserDaoImpl();
        StringBuffer responseBody = new StringBuffer();
        try {
            User user = userDao.selectUserById(id);
            System.out.println(user);
            responseBody.append("<form action='/day60/updateUser' method='post'>");
            responseBody.append("<input type='hidden' name='id' value='"+user.getId()+"'/>");
            responseBody.append("账户:<input type='text' name='username' value='"+user.getUsername()+"'/><br>");
            responseBody.append("密码:<input type='text' name='password' value='"+user.getPassword()+"'/><br>");
            responseBody.append("<button type='submit'>修改</button>");
            responseBody.append("</form>");

        } catch (Exception e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write(responseBody.toString());

    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
  • 修改用户
@WebServlet(name = "UpdateUserServlet" ,urlPatterns = "/updateUser")
public class UpdateUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Integer id = Integer.parseInt(request.getParameter("id"));
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username : " + username + ", password : " + password);
        //要修改的内容:username、password
        User user = new User(id,username,password);
        UserDao userDao = new UserDaoImpl();
        try {
            userDao.updateUser(user);
            //修改成功,跳转到首页
            response.sendRedirect("/day60/showIndex");
        } catch (Exception e) {
            e.printStackTrace();
            //修改失败,跳转到修改页面
            response.sendRedirect("/day60/showUpdateUser?id="+id);
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

猜你喜欢

转载自www.cnblogs.com/Her4c/p/12769885.html
今日推荐