Struts2(七.删除和修改用户功能的实现)
一.删除功能
之前跳转用户列表的时候把用户id,用户名,用户密码存入了ActionContext
1.userlist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户列表</title> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"> <script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-1.11.1.js"></script> <script type="text/javascript"> $(function(){ //删除用户 $(".delete").click(function(){ var str=this.lang.split("!"); if(!confirm("你确定要删除"+ str[1] +"这个用户吗?")) { return; } //jquery ajax方式请求action $.post("${pageContext.request.contextPath}/user/delete",{"user.id":str[0]},function(){ location.href="${pageContext.request.contextPath}/user/list"; }); }); }); </script> </head> <body> 用户列表 <br> <br> <table class="bordered"> <thead> <tr><th>序号</th><th>用户名</th><th>密码</th><th>照片</th><th>删除</th><th>修改</th></tr> </thead> <!-- USERLIST,cuser,s存入的Stack Context --> <s:iterator value="#USERLIST" id="cuser" status="s"> <tr> <td><s:property value="#s.index+1"/></td> <td><s:property value="#cuser.userName"/></td> <td><s:property value="#cuser.pwd"/></td> <td><a href="#" class="picture" lang="<s:property value="#cuser.id"/>">照片</a></td> <td><a href="#" class="delete" lang="<s:property value="#cuser.id"/>!<s:property value="#cuser.userName"/>">删除</a></td> <td><a href="#" class="modify" lang="<s:property value="#cuser.id"/>">修改</a></td> </tr> </s:iterator> </table> <br> <br> <a href="${pageContext.request.contextPath}/main.jsp">返回主页面</a> </body> <!-- 调试 Value Stack 访问时不用加# Stack Context 访问时要加# --> <s:debug></s:debug> </html>
点击确认删除,把用户id利用domain model的方式存入action
2.UserAction
/** * 删除用户 * @return * @throws ClassNotFoundException * @throws SQLException * @throws NamingException */ public String delete() throws ClassNotFoundException, SQLException, NamingException { UserDAO dao=new UserDAO(); dao.deleteUser(user); return null; }
3.UserDAO
/** * 删除用户 * @param user * @throws SQLException */ public void deleteUser(User user) throws SQLException { sql="delete from users where id=?"; ps=conn.prepareStatement(sql); ps.setInt(1, user.getId()); ps.execute(); conn.close(); }
二.修改功能
1.userlist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户列表</title> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"> <script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-1.11.1.js"></script> <script type="text/javascript"> $(function(){ //删除用户 $(".delete").click(function(){ var str=this.lang.split("!"); if(!confirm("你确定要删除"+ str[1] +"这个用户吗?")) { return; } //jquery ajax方式请求action $.post("${pageContext.request.contextPath}/user/delete",{"user.id":str[0]},function(){ location.href="${pageContext.request.contextPath}/user/list"; }); }); //修改用户 $(".modify").click(function(){ //为保证跳转的控制权在action中 location.href="${pageContext.request.contextPath}/user/modify?user.id=" + this.lang; }); }); </script> </head> <body> 用户列表 <br> <br> <table class="bordered"> <thead> <tr><th>序号</th><th>用户名</th><th>密码</th><th>照片</th><th>删除</th><th>修改</th></tr> </thead> <!-- USERLIST,cuser,s存入的Stack Context --> <s:iterator value="#USERLIST" id="cuser" status="s"> <tr> <td><s:property value="#s.index+1"/></td> <td><s:property value="#cuser.userName"/></td> <td><s:property value="#cuser.pwd"/></td> <td><a href="#" class="picture" lang="<s:property value="#cuser.id"/>">照片</a></td> <td><a href="#" class="delete" lang="<s:property value="#cuser.id"/>!<s:property value="#cuser.userName"/>">删除</a></td> <td><a href="#" class="modify" lang="<s:property value="#cuser.id"/>">修改</a></td> </tr> </s:iterator> </table> <br> <br> <a href="${pageContext.request.contextPath}/main.jsp">返回主页面</a> </body> <!-- 调试 Value Stack 访问时不用加# Stack Context 访问时要加# --> <s:debug></s:debug> </html>
2.UserAciton
点击修改用户按钮跳转到修改用户界面
/** * 为用户准备照片,以便在modify.jsp中显示 * @return * @throws SQLException * @throws ClassNotFoundException * @throws NamingException */ public String modify() throws SQLException, ClassNotFoundException, NamingException { UserDAO dao=new UserDAO(); //这个user会在Value Stack中出现 user=dao.getUserById(user.getId()); return "modify"; }
这里的user存入了Value Stack中,在modify页面中可以调用
3.UserDAO
/** * 通过id得到用户 * @param id * @return * @throws SQLException */ public User getUserById(int id) throws SQLException { sql="select * from users where id=?"; User user=new User(); ps=conn.prepareStatement(sql); ps.setInt(1, id); ResultSet rs=ps.executeQuery(); rs.next(); user.setId(rs.getInt(1)); user.setUserName(rs.getString(2)); user.setPwd(rs.getString(3)); conn.close(); return user; }
4.user.xml
<result name="modify">/WEB-INF/user/modify.jsp</result>
5.modify.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>修改</title> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"> <script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-1.11.1.js"></script> </head> <body> 修改用户信息 <br> <br> <!-- 修改用户信息 --> <form method="post" action="${pageContext.request.contextPath}/user/save"> <table> <tr><td>用户名</td><td><input type="text" name="user.userName" value="<s:property value="user.userName"/>"/></td></tr> <tr><td>密码</td><td><input type="text" name="user.pwd" value="<s:property value="user.pwd"/>"/></td></tr> <tr><td><input type="hidden" name="user.id" value="<s:property value="user.id"/>"/></td></tr> <tr><td colspan="2"><input type="submit" value="修改"></td></tr> </table> </form> <br> <br> <a href="${pageContext.request.contextPath}/main.jsp">返回主页面</a> <s:debug></s:debug> </body> </html>
6.UserAction
通过domain model的方式将modify.jsp中修改的user信息传入
/** * 修改用户 * @return * @throws ClassNotFoundException * @throws SQLException * @throws NamingException */ public String save() throws ClassNotFoundException, SQLException, NamingException { UserDAO dao=new UserDAO(); dao.modifyUser(user); //跳转到list这个action重新加载userlist.jsp return "userlist"; }
最后跳转到list这个action重新加载userlist,修改完成
7.UserDAO
/** * 修改用户信息 * @param user * @throws SQLException */ public void modifyUser(User user) throws SQLException { sql="update users set userName=?,pwd=? where id=?"; ps=conn.prepareStatement(sql); ps.setString(1, user.getUserName()); ps.setString(2, user.getPwd()); ps.setInt(3, user.getId()); ps.execute(); conn.close(); }