• 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,但是由于主键不能重复,会显示增加用户异常,这不是我们希望看到的,我们要做到,刷新界面,不会添加新的数据到数据库。

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

  • 相关阅读:
    STL_算法_05_集合算法
    STL_算法_04_算术和生成算法
    STL_算法_03_拷贝和替换算法
    STL_算法_02_排序算法
    STL_算法_01_查找算法
    STL_容器使用时机
    STL_容器共通能力
    Qt5_选择文件对话框
    Qt5_当前exe所在路径
    Java 静态代理和动态代理
  • 原文地址:https://www.cnblogs.com/pangblog/p/3320042.html
Copyright © 2020-2023  润新知