一、技术组合框架的详情
这是一个采用 MyBatis 框架、Filter 过滤器、Servlet 容器、Jsp 页面、Bootstrap 前端框架实现增删改查的基础页面。由于采用了注解的方式,所以在 MyBatis 中的 Mapper 映射文件可以省略不写。 而 Filter 过滤器和 Servler 容器也是采用了注解的方式,故 web.xml 文件不做配置。
二、技术组合案例的实现
1、User 实体类
public class User {
/*与数据库相对应的字段*/
private Integer id; /*用户编号(数据库id自增)*/
private String userName; /*用户名称*/
private Date birthday; /*出生日期*/
private String sex; /*性别*/
private String address; /*地址*/
private Integer roleId; /*用户角色编号*/
/*提供getter和setter方法*/
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
public String getUserName() { return userName; }
public void setUserName(String userName) { this.userName = userName; }
public Date getBirthday() { return birthday; }
public void setBirthday(Date birthday) { this.birthday = birthday; }
public String getSex() { return sex; }
public void setSex(String sex) { this.sex = sex; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public Integer getRoleId() { return roleId; }
public void setRoleId(Integer roleId) { this.roleId = roleId; }
/*无参构造方法*/
public User() { }
/*有参构造方法*/
public User(Integer id, String userName, Date birthday, String sex, String address, Integer roleId) {
this.id = id;
this.userName = userName;
this.birthday = birthday;
this.sex = sex;
this.address = address;
this.roleId = roleId;
}
/*将对象转换为字符串*/
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
", roleId='" + roleId + '\'' +
'}';
}
}
2、Role 实体类
public class Role {
/*与数据库相对应的字段*/
private Integer id; /*角色编号*/
private String roleCode; /*角色编码*/
private String roleName; /*角色名称*/
/*提供getter和setter方法*/
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
public String getRoleCode() { return roleCode; }
public void setRoleCode(String roleCode) { this.roleCode = roleCode; }
public String getRoleName() { return roleName; }
public void setRoleName(String roleName) { this.roleName = roleName; }
/*无参构造方法*/
public Role() { }
/*有参构造方法*/
public Role(Integer id, String roleCode, String roleName) {
this.id = id;
this.roleCode = roleCode;
this.roleName = roleName;
}
/*将对象转换为字符串*/
@Override
public String toString() {
return "Role{" +
"id=" + id +
", roleCode='" + roleCode + '\'' +
", roleName='" + roleName + '\'' +
'}';
}
}
3、数据访问层 UserDao 接口(使用注解的方式)
public interface UserDao {
/*查询用户的信息*/
@Select("SELECT * FROM `user`")
List<User> getUserList();
/*添加用户的信息(用户编号数据库自增)*/
@Insert("INSERT INTO `user` VALUES (NULL,#{userName},#{birthday},#{sex},#{address}")
Integer addUserList(User user);
/*根据用户编号查询用户的信息*/
@Select("SELECT * FROM `user` WHERE id = #{id}")
User getUserById(@Param("id") Integer id);
/*修改用户的信息*/
@Update("UPDATE `user` SET userName = #{userName},birthday = #{birthday},sex = #{sex},address = #{address}")
Integer updateUserList(User user);
/*删除用户的信息*/
@Delete("DELETE FROM `user` WHERE id = #{id}")
Integer deleteUserList(@Param("id") Integer id);
}
4、数据访问层 RoleDao 接口(使用注解的方式)
public interface RoleDao {
/*获取用户角色的信息*/
@Select("SELECT * FROM `role`")
List<Role> getRoleList();
}
5、MyBatis 工具类
public class MyBatisTools {
/*创建SqlSessionFactory对象*/
private static SqlSessionFactory factory = null;
/*在静态代码块下,factory只会创建一次*/
static{
try {
/*创建输入流对象,读取mybatis-configure.xml配置文件*/
InputStream stream = Resources.getResourceAsStream("/mybatis-configure.xml");
factory = new SqlSessionFactoryBuilder().build(stream);
} catch (Exception e) {
e.printStackTrace();
}
}
/*创建SqlSession对象和打开SqlSession会话*/
public static SqlSession createSqlSession(){
return factory.openSession(true); /*true为自动提交事务*/
}
/*关闭SqlSession会话*/
public static void closeSqlSession(SqlSession SqlSession){
if (SqlSession != null) {
SqlSession.close();
}
}
}
6、数据库信息配置文件(database.properties)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/book
username=root
password=root
7、MyBatis 的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--引入数据库配置文件-->
<properties resource="database.properties"/>
<!--配置别名-->
<typeAliases>
<package name="entity"/>
</typeAliases>
<!--配置数据库信息-->
<environments default="goods">
<environment id="goods">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--配置映射文件的路径-->
<mappers>
<!--扫描 UserDao 接口中的方法-->
<package name="dao"/>
</mappers>
</configuration>
8、业务逻辑层 UserService 接口
public interface UserService {
/*查询用户的信息*/
List<User> findUserList();
/*添加用户的信息*/
boolean plusUserList(User user);
/*根据用户编号查询用户的信息*/
User findUserById(@Param("id") Integer id);
/*修改用户的信息*/
boolean modifyUserList(User user);
/*删除用户的信息*/
boolean removeUserList(@Param("id") Integer id);
}
9、业务逻辑层 RoleService 接口
public interface RoleService {
/*查询用户的信息*/
List<Role> findRoleList();
}
10、业务逻辑层 UserServiceImpl 实现类
public class UserServiceImpl implements UserService {
@Override
public List<User> findUserList() {
/*获取SqlSession会话对象*/
SqlSession sqlSession = MyBatisTools.createSqlSession();
/*获取UserDao代理对象*/
UserDao dao = sqlSession.getMapper(UserDao.class);
/*从数据访问层获取数据*/
List<User> userList = dao.getUserList();
/*释放资源*/
MyBatisTools.closeSqlSession(sqlSession);
/*返回结果对象*/
return userList;
}
@Override
public boolean plusUserList(User user) {
/*获取SqlSession会话对象*/
SqlSession sqlSession = MyBatisTools.createSqlSession();
/*获取UserDao代理对象*/
UserDao dao = sqlSession.getMapper(UserDao.class);
/*获取受影响的行数*/
Integer count = dao.addUserList(user);
/*释放资源*/
MyBatisTools.closeSqlSession(sqlSession);
/*返回已添加true&未添加false*/
return count > 0 ? true : false;
}
@Override
public User findUserById(Integer id) {
/*获取SqlSession会话对象*/
SqlSession sqlSession = MyBatisTools.createSqlSession();
/*获取UserDao代理接口*/
UserDao dao = sqlSession.getMapper(UserDao.class);
/*从数据访问层获取数据*/
User user = dao.getUserById(id);
/*释放资源*/
MyBatisTools.closeSqlSession(sqlSession);
/*获取结果对象*/
return user;
}
@Override
public boolean modifyUserList(User user) {
/*获取SqlSession会话对象*/
SqlSession sqlSession = MyBatisTools.createSqlSession();
/*获取UserDao代理对象*/
UserDao dao = sqlSession.getMapper(UserDao.class);
/*获取受影响的行数*/
Integer count = dao.updateUserList(user);
/*释放资源*/
MyBatisTools.closeSqlSession(sqlSession);
/*返回已修改true&未修改false*/
return count > 0 ? true : false;
}
@Override
public boolean removeUserList(Integer id) {
/*获取SqlSession会话对象*/
SqlSession sqlSession = MyBatisTools.createSqlSession();
/*获取UserDao代理对象*/
UserDao dao = sqlSession.getMapper(UserDao.class);
/*获取受影响的行数*/
Integer count = dao.deleteUserList(id);
/*释放资源*/
MyBatisTools.closeSqlSession(sqlSession);
/*返回已删除true&未删除false*/
return count > 0 ? true : false;
}
}
11、业务逻辑层 RoleServiceImpl 实现类
public class RoleServiceImpl implements RoleService {
@Override
public List<Role> findRoleList() {
/*获取SqlSession会话对象*/
SqlSession sqlSession = MyBatisTools.createSqlSession();
/*获取RoleDao代理对象*/
RoleDao dao = sqlSession.getMapper(RoleDao.class);
/*从数据访问层获取用户角色数据*/
List<Role> roleList = dao.getRoleList();
/*释放资源*/
MyBatisTools.closeSqlSession(sqlSession);
/*返回用户角色数据*/
return roleList;
}
}
12、Filter 的配置(使用注解的方式),处理请求与响应时的中文乱码
@WebFilter(filterName = "EncodingFilter", urlPatterns = "/*")
public class EncodingFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException { }
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {
/*1.将servletRequest, servletResponse父接口转换为子接口*/
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
/*2.处理post提交中文乱码*/
/*获取提交数据的方法类型*/
String method = request.getMethod();
/*判断提交数据访问为post请求才处理乱码*/
if("post".equalsIgnoreCase(method)){
request.setCharacterEncoding("utf-8");
}
/*3.处理response输出中文乱码*/
response.setContentType("text/html;charset=utf-8");
/*4.放行*/
filterChain.doFilter(request, response);
}
@Override
public void destroy() { }
}
13、处理 list.jsp 页面查询请求的 GetUserServlet 类
@WebServlet(name = "GetUserServlet", urlPatterns = "/GetUserServlet")
public class GetUserServlet extends HttpServlet {
/*获取业务层对象*/
private UserService service = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*调用业务层获取用户的数据*/
List<User> userList = service.findUserList();
/*存入请求域中*/
request.setAttribute("userList", userList);
/*跳转到list.jsp页面*/
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
}
14、list.jsp 页面实现用户信息展示
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<!DOCTYPE html>
<!-- 网页使用的语言 -->
<html lang="zh-CN">
<head>
<!-- 指定字符集 -->
<meta charset="utf-8">
<!-- 使用Edge最新的浏览器的渲染方式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
width: 默认宽度与设备的宽度相同
initial-scale: 初始的缩放比,为1:1 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>用户列表</title>
<!-- 1. 导入CSS的全局样式 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- 2. jQuery导入,建议使用1.9以上的版本 -->
<script src="js/jquery-2.1.0.min.js"></script>
<!-- 3. 导入bootstrap的js文件 -->
<script src="js/bootstrap.min.js"></script>
<style type="text/css">
td, th { text-align: center; }
</style>
</head>
<body>
<div class="container">
<table border="1" cellspacing="0" cellpadding="0" align="center" class="table table-bordered table-hover">
<caption style="background-color: green"><strong>用户信息列表</strong></caption>
<tr class="success" style="background-color: yellow">
<th>用户编号</th
<th>用户名称</th>
<th>出生日期</th>
<th>性别</th>
<th>地址</th>
<th>用户角色编号</th>
<th>操作</th>
</tr>
<c:forEach items="${userList}" var="user" varStatus="status">
<tr ${status.count % 2 == 0 ? "style='background-color:orangered'" : "style='background-color:red'"} align="center">
<th>${user.id}</th>
<th>${user.userName}</th>
<th>${user.birthday}</th>
<th>${user.sex}</th>
<th>${user.address}</th>
<th>
<c:if test="${user.roleId == 1}">系统管理员</c:if>
<c:if test="${user.roleId == 2}">经理</c:if>
<c:if test="${user.roleId == 3}">普通员工</c:if>
</th>
<td>
<a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/DetailUserServlet?id=${user.id}">修改</a>
<a class="btn btn-default btn-sm" onclick='deleteUser(${user.id})'>删除</a>
</td>
</tr>
</c:forEach>
<tr style="background-color:deeppink">
<td colspan="10" align="center"><a class="btn btn-primary" href="${pageContext.request.contextPath}/toAddUserPage">添加用户</a></td>
</tr>
</table>
</div>
<script type="text/javascript">
/*删除的点击事件*/
function deleteUser(id) {
if (confirm("您确认要删除吗?")) {
/*提交请求*/
location.href="${pageContext.request.contextPath}/DeleteUserServlet?id=" + id;
}
}
</script>
</body>
</html>
15、获取用户角色的信息,并跳转到 addUser.jsp 页面
@WebServlet(name = "AddUserPage", urlPatterns = "/toAddUserPage")
public class AddUserPage extends HttpServlet {
/*获取业务层用户角色对象*/
private RoleService roleService = new RoleServiceImpl();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*获取用户角色的信息*/
List<Role> roleList = roleService.findRoleList();
/*将用户角色的信息存入请求域中*/
request.setAttribute("roleList", roleList);
/*跳转到add.jsp页面*/
request.getRequestDispatcher("/addUser.jsp").forward(request, response);
}
}
16、添加用户信息的 addUser.jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<!-- 网页使用的语言 -->
<html lang="zh-CN">
<head>
<base href="<%=basePath%>"/>
<!-- 指定字符集 -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>添加用户</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery-2.1.0.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" style="width: 400px; text-align: center;">
<h3 style="text-align: center;">添加用户的信息</h3>
<form action="${pageContext.request.contextPath}/AddUserServlet" method="post">
<div class="form-group">
<label for="userName">用户名称:</label>
<input type="text" class="form-control" name="userName" placeholder="请输入用户名称"/>
</div>
<div class="form-group">
<label for="birthday">出生日期:</label>
<input type="text" class="form-control" id="birthday" name="birthday" placeholder="请输入出生日期"/>
</div>
<div class="form-group">
<label for="sex">性别:</label>
<input type="radio" name="sex" value="男" checked="checked"/>男
<input type="radio" name="sex" value="女"/>女
</div>
<div class="form-group">
<label for="address">地址:</label>
<input type="text" class="form-control" id="address" name="address" placeholder="请输入家庭地址"/>
</div>
<div class="form-group">
<label for="roleId">用户角色:</label>
<select id="roleId" name="roleId" class="form-control">
<option>--请选择用户角色--</option>
<c:forEach items="${roleList}" var="role">
<option value="${role.id}">${role.roleName}</option>
</c:forEach>
</select>
</div>
<div class="form-group" style="text-align: center">
<input class="btn btn-primary" type="submit" value="提交"/>
<input class="btn btn-default" type="reset" value="重置"/>
</div>
</form>
</div>
</body>
</html>
17、实现 addUser.jsp 页面添加用户信息的 AddUserServlet 类
@WebServlet(name = "AddUserServlet", urlPatterns = "/AddUserServlet")
public class AddUserServlet extends HttpServlet {
/*获取业务层用户对象*/
private UserService userService = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*创建用户对象*/
User user = new User();
try {
/*获取表单数据封装到User对象中*/
BeanUtils.populate(user, request.getParameterMap());
/*添加用户的信息*/
boolean flag = userService.plusUserList(user);
/*返回用户是否添加的信息*/
if (flag) {
/*添加用户的信息成功,提示成功再跳转到用户列表GetUserServlet*/
response.getWriter().write("<script>alert('添加成功');location.href='" + request.getContextPath() + "/GetUserServlet';</script>");
} else {
/*添加用户的信息失败,返回用户列表页面*/
response.getWriter().write("<script>alert('添加失败');history.back();</script>");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
/*添加用户的信息失败,返回用户列表页面*/
response.getWriter().write("<script>alert('添加失败');history.back();</script>");
}
}
}
18、获取被修改用户的信息,并跳转到 updateUser.jsp 页面
@WebServlet(name = "DetailUserServlet", urlPatterns = "/DetailUserServlet")
public class DetailUserServlet extends HttpServlet {
/*获取业务层用户对象*/
private UserService userService = new UserServiceImpl();
/*获取业务层用户角色对象*/
private RoleService roleService = new RoleServiceImpl();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*获取修改用户的用户编号*/
Integer id = Integer.valueOf(request.getParameter("id"));
/*获取修改用户的用户信息*/
User user = userService.findUserById(id);
/*获取用户角色的信息*/
List<Role> roleList = roleService.findRoleList();
/*将获取的用户对象及用户角色对象存入请求域中*/
request.setAttribute("user", user);
request.setAttribute("roleList", roleList);
/*跳转到update.jsp页面*/
request.getRequestDispatcher("/updateUser.jsp").forward(request, response);
}
}
19、修改用户信息的 updateUser.jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<!-- 网页使用的语言 -->
<html lang="zh-CN">
<head>
<base href="<%=basePath%>"/>
<!-- 指定字符集 -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>修改用户</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery-2.1.0.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" style="width: 400px; text-align: center;">
<h3 style="text-align: center;">修改用户的信息</h3>
<form action="${pageContext.request.contextPath}/UpdateUserServlet" method="post">
<%--使用隐藏域设置表单项id的值,提交给服务器端使用--%>
<input type="hidden" name="id" value="${user.id}">
<div class="form-group">
<label for="userName">用户名称:</label>
<input type="text" class="form-control" name="userName" value="${user.userName}" placeholder="请输入用户名称"/>
</div>
<div class="form-group">
<label for="birthday">出生日期:</label>
<input type="text" class="form-control" id="birthday" name="birthday" value="${user.birthday}" placeholder="请输入出生日期"/>
</div>
<div class="form-group">
<label for="sex">性别:</label>
<input type="radio" name="sex" value="男" ${user.sex=='男'?'checked="checked"':''}/>男
<input type="radio" name="sex" value="女" ${user.sex=='女'?'checked="checked"':''}/>女
</div>
<div class="form-group">
<label for="address">地址:</label>
<input type="text" class="form-control" id="address" name="address" value="${user.address}" placeholder="请输入家庭地址"/>
</div>
<div class="form-group">
<label for="roleId">用户角色:</label>
<select id="roleId" name="roleId" class="form-control">
<c:forEach items="${roleList}" var="role">
<option value="${role.id}" ${user.roleId == role.id ? 'selected="selected"':''}>${role.roleName}</option>
</c:forEach>
</select>
</div>
<div class="form-group" style="text-align: center">
<input class="btn btn-primary" type="submit" value="提交" />
<input class="btn btn-default" type="reset" value="重置" />
</div>
</form>
</div>
</body>
</html>
20、实现 updateUser.jsp 页面修改用户信息的 UpdateUserServlet 类
@WebServlet(name = "UpdateUserServlet", urlPatterns = "/UpdateUserServlet")
public class UpdateUserServlet extends HttpServlet {
/*获取业务层用户对象*/
private UserService service = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*创建User对象*/
User user = new User();
try {
/*获取表单数据封装到User对象中*/
BeanUtils.populate(user, request.getParameterMap());
/*修改用户的信息*/
boolean flag = service.modifyUserList(user);
/*返回用户是否修改的信息*/
if (flag) {
/*修改用户的信息成功,提示成功再跳转到用户详情列表DateilUserServlet*/
response.getWriter().write("<script>alert('修改成功');location.href='" + request.getContextPath() + "/GetUserServlet';</script>");
} else {
/*修改用户的信息失败,返回修改页面*/
response.getWriter().write("<script>alert('修改失败');history.back();</script>");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
/*修改用户的信息失败,返回修改页面*/
response.getWriter().write("<script>alert('修改失败');history.back();</script>");
}
}
}
21、实现删除用户信息的 DeleteUserServlet 类
@WebServlet(name = "DeleteUserServlet", urlPatterns = "/DeleteUserServlet")
public class DeleteUserServlet extends HttpServlet {
/**获取业务层用户对象*/
private UserService service = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*创建用户对象*/
User user = new User();
/*获取删除用户的用户编号*/
Integer id = Integer.valueOf(request.getParameter("id"));
/*删除用户的信息*/
boolean flag = service.removeUserList(id);
/*获取用户的信息是否删除成功*/
if (flag) {
/*删除用户的信息成功,提示成功再跳转到用户详情列表DateilUserServlet*/
response.getWriter().write("<script>alert('删除成功');location.href='" + request.getContextPath() + "/GetUserServlet';</script>");
} else {
/*删除用户的信息失败,返回用户列表页面*/
response.getWriter().write("<script>alert('删除失败');history.back();</script>");
}
}
}