java web从零单排第二十二期《hibernate》代码分析之查看,删除用户信息

前两期的内容不知道大家理解的怎么样,我并没有详细的去解释代码的意思,如果你已经自己都钻研明白了,那最好过,但还是一知半解的话,接下来我会仔细分析代码。

1.register.jsp:这部分代码只是简单的注册界面,把数据提交到UserAction,执行其save方法,save方法都执行了哪些内容呢?

根据之前的学习可知,UserAction会接受到register提交来的信息,由于我们输入了username和password,那么就会自动调用对应的set方法。在save方法中,创建了一个user实例,并把信息储存进去,调用UserDB的静态save方法把实例保存到数据库,如果这一句执行成功的话,就能保证信息存储在数据库中了。之后为了显示用户的列表,需要把数据库中的所有注册信息拿出来,只要调用UserDB的listall ()方法即可,为了转发list中的信息,我们可以把list信息放到request中,方法就是调用期setAttribute方法,我们知道,request的作用范围是在一个转发状态下,这样,我们在页面转发的过程中,就可以随时取得request中的list。最后如果没有没问题,会return一个success。

对于delete方法和getUser方法道理是一样的。

2.listAll.jsp:

返回success后,通过默认的dispatch方式,转发到listAll.jsp,这样listAll.jsp中就会收到信息了。

<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>
										
			</tr>
		</s:iterator>

首先调用iterator标签,得到要迭代的列表,td标签中表面上包含了三个超链接,实际上只有两个,因为第二个并没有在<s:a></s:a>之间,对于第一个超链接代表含义如下:

1.getUser.action:超链接到的url,这里和form的action中的意思是一样的。

2.?username=%{#user.username}:信息的传递,?后面的username其实是在getUser.action中的,也就是UserAction中的username,那么这个username的只是什么呢,就是user.username,由于每一个user都是一个bean对象,前面需要加入#来取值,前面的%,是保证{}内的是OGNL表达式。

3.property标签:username和password都是存放在值栈中的,可以直接输出。

4.del(),这里其实涉及到了javasript的知识,其目的知识弹出来一个对话框,如果确定则执行程序。javascript代码如下:

 

<script type="text/javascript">
   
   function del()
   {
   if(confirm("are you sure"))
   {
          return true;
   }
   return false;
   }
   </script>


javascript一定包含在head里。

 

查看的执行结果:

点击一个链接:

点击delete链接:

这样我们就完成了信息的查看与删除。

不知道细心的同学不知道有没有注意到,如果我们注册一个用户,在用户列表界面刷新一下界面,控制台会有:


也就是说,我们刷新了界面,再一次执行了save,但是由于主键不能重复,会显示增加用户异常,这不是我们希望看到的,我们要做到,刷新界面,不会添加新的数据到数据库。

在下一期中会给出解决办法,和更新用户的方法。

 

posted @ 2013-09-13 19:55  pangbangb  阅读(164)  评论(0编辑  收藏  举报