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: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方法的实现,希望通过前面的代码来改变一下就可以完成。

 

 

你可能感兴趣的:(java,Hibernate,Web)