接着上一期的问题,我们刷新用户列表页面,通过控制台信息告诉我们,数据再一次被保存了。我们先来看一看更改后的代码在进行解析。
1.struts.xml文件的改变:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtd/struts-2.0.dtd"> <struts> <package name="hibernate" extends="struts-default"> <action name="save" class="com.test.action.UserAction" method="save"> <result name="success" type="redirect">listUser.action</result> </action> <action name="listUser" class="com.test.action.UserAction" method="listAll"> <result name="success">listAll.jsp</result> </action> <action name="getUser" class="com.test.action.UserAction" method="getUser"> <result name="success">/getPerson.jsp</result> </action> <action name="deleteUser" class="com.test.action.UserAction" method="deleteUser"> <result name="success">/listAll.jsp</result> </action> </package> </struts>
为了避免运行多次,只要把刷界面的业务改成只是显示用户列表即可,所以第一次不采用转发,而是采用重定向,重定向到显示用户列表的方法,这样就能比较完美的解决了问题
2.显示列表的方法,在UserAction添加方法listAll:
public String listAll() throws Exception { List<User> list =UserDB.listall(); HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("list", list); return SUCCESS; }
再次运行程序,就不会出现不正常的信息了。
3.更新用户信息的实现:
添加链接:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> function del() { if(confirm("are you sure")) { return true; } return false; } </script> </head> <body> <table width="80%" align="center" border="1"> <tr> <th>username</th> <th>password</th> <th>delete</th> <th>update</th> </tr> <s:iterator value="#request.list" id="user"> <tr> <td><s:a href="getUser.action?username=%{#user.username}"> <s:property value="username" /></s:a></td> <td><s:a href="getUser.action?username=%{#user.user}"></s:a> <s:property value="password" /></td> <td><s:a href="deleteUser.action?username=%{#user.username}" onclick="return del()">delete</s:a></td> <td><s:a href="updateUser.jsp">update</s:a></td> </tr> </s:iterator> </table> </body> </html>
4.增加修改信息updateUser.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> <form action="updateUser"> username:<input type="text" name="username"><br> password:<input type="text" name="password"><br> <input type="submit" value="submit"> </form> </body> </html>
5.增加struts.xml配置信息:
<action name="updateUser" class="com.test.action.UserAction" method="updateUser"> <result name="success" type="redirect">listUser.action</result> </action>
只需要增加一个update方法来更新传递过来的信息就可以完成,当然这里还是需要使用重定向的方式,否则会一直执行更新方法。
对于updateUser方法的实现,希望通过前面的代码来改变一下就可以完成。