jpetstore4.0学习笔记

7 篇文章 0 订阅
 
看了这个struts+ibatis的例子,感觉它的设计思想很不错.和以前的jpetstore的模式有很大变化.
变化最明显的就是他只定义了一个BeanAction, (也只有一个BaseBean,其他的form bean都继承自BaseBean),它将以前的action都定义到了form bean中,这样form bean就不在只是处理数据这么简单.BeanAction中采用反射机制,来对应调用form bean中的action.这样就简化了BeanAction的处理.在配置文件中主要有三种调用action的方式:
1.URL Pattern
<action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"    name="orderBean" scope="session"    validate="false">    <forward name="success" path="/order/ViewOrder.jsp"/> </action>

此种方式表示,控制将被转发到 "orderBean" 这个 form bean 对象 "viewOrder" 方法(行为)来处理。方法名取 "path" 参数的以 "/" 分隔的最后一部分。
它对应于 BeanAction 中的这部分代码 :
if (method == null && !"*".equals(methodName)) {
          methodName = mapping.getPath();
          if (methodName.length() > 1) {
            int slash = methodName.lastIndexOf("/") + 1;
            methodName = methodName.substring(slash);
            if (methodName.length() > 0) {
              try {
                method = form.getClass().getMethod(methodName, null);
                forward = (String) method.invoke(form, null);
              } catch (Exception e) {
                throw new BeanActionException("Error dispatching bean action via URL pattern ('" + methodName + "').  Cause: " + e, e);
              }
            }
          }
        }
是通过 path 来取得要调用的 action 函数 .
2.Method Parameter
<action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"    name="orderBean" parameter="viewOrder" scope="session"    validate="false">    <forward name="success" path="/order/ViewOrder.jsp"/> </action>


此种方式表示,控制将被转发到 "orderBean" 这个 form bean 对象的 "viewOrder" 方法(行为)来处理。配置中的 "parameter" 参数表示 form bean 类上的方法。 "parameter" 参数优先于 "path" 参数。
它对应与 BeanAction 中的 :  
 Method method = null;
        String methodName = mapping.getParameter();
        if (methodName != null && !"*".equals(methodName)) {
          try {
            method = form.getClass().getMethod(methodName, null);
            forward = (String) method.invoke(form, null);
          } catch (Exception e) {
            throw new BeanActionException("Error dispatching bean action via method parameter ('" + methodName + "').  Cause: " + e, e);
          }
        }
通过paramater来调用对应的action函数
3.No Method call
<action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"    name="orderBean" parameter="*" scope="session"    validate="false">    <forward name="success" path="/order/ViewOrder.jsp"/> </action>


此种方式表示, form bean 上没有任何方法被调用。如果存在 "name" 属性,则 struts 把表单参数等数据填充到 form bean 对象后,把控制转发到 "success" 。否则,如果 name 为空,则直接转发控制到 "success"
这种 parameter 值为 * 的不调用任何 action 函数 , name 属性则填充数据然后 success. 没有则直接 success.
当然若 name,parameter 都没有则直接 success.
 
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值