java web从零单排第二十三期《Hibernate》重定向显示用户列表
接着上一期的问题,我们刷新用户列表页面,通过控制台信息告诉我们,数据再一次被保存了。我们先来看一看更改后的代码在进行解析。
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:propertyvalue="username" /></s:a></td><td><s:a href="getUser.action?username=%{#user.user}"></s:a> <s:propertyvalue="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方法的实现,希望通过前面的代码来改变一下就可以完成。