1.思维导图
2.代码部分
监听器的注解开发
@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销毁");
}
}
综合案例:用户列表
@Override
public List<User> selectUserList() throws Exception {
return new QueryRunner(JDBCUtil.getDataSource())
.query("select * from tb_user",
new BeanListHandler<User>(User.class));
}
@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);
}
}
综合案例:删除用户
@Override
public void deleteUserById(Integer id) throws Exception {
new QueryRunner(JDBCUtil.getDataSource())
.update("delete from tb_user where id = ?",
id);
}
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>");
@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);
}
}
综合案例:批量删除
public void deleteUsersByIds(List<Integer> idList) throws Exception {
for (Integer id : idList) {
deleteUserById(id);
}
}
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>");
综合案例:添加用户
public void addUser(User inputUser) throws Exception {
new QueryRunner(JDBCUtil.getDataSource())
.update("insert into tb_user(username ,password) values(?,?)",
inputUser.getUsername(),
inputUser.getPassword());
}
//已经在登录状态
responseBody.append("欢迎回来~ " + existUser.getUsername());
responseBody.append(" <a href='/day60/logout'>注销</a><br>");
responseBody.append("<a href='/day60/add.html'>添加用户</a><br>");
@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);
}
}
综合案例:修改用户
@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());
}
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);
}
}