逻辑标签
逻辑库的标记能够用来处理外观逻辑而不需要使用scriptlet Struts逻辑标签库包含的标记能够有条件的产生输出文本, 在对象集合中循环从而重复地产生输出文本,以及应用程序 流程控制。它也提供了一组在JSP页中处理流程控制的标记。 这些标记封装在文件名为struts-logic.tld的标记包中。逻辑标 记库定义的标记能偶执行下列三个功能:
条件逻辑 重复
转发/重定向响应 Logic:iterate
单重循环使用 双重循环使用 例子:
要先设置把taglib这个<%@ taglib rul=”http://struts.apache.org/tags-logic” prefix=”logic”%>
先做数据准备,这是例子,当然一般可以在后台代码做这个事情
上图的循环解析:
Id可以随便起,就像我们随便起的遍历时用来存储数据的一个临时变量,可以理解为for(Object o: oo)的o,scope是指定在哪个域里面查找,name指的就是我们要查找的那个变量,在这里就是我们在上面存的那个usernames,可以理解为我们平时通过getParameter获得usernames,这里应该是通过了一定的封装。
这个个人可以理解为java中的双重for循环,有明显的痕迹,表现在两个logic:iterate而图中有个property属性,这就再提一下logic:iterate标签的用法了,就是说没有property属性的时候,name指定的必须是一个集合数组或者迭代(如:String[] name = {“a”,”b”,”c”}),党有property的时候,property指定的必须是一个集合数组或者迭代(如:有一个a.property property是a中的一个数组那么这时候name可以指定为a,而property则可以指定为property),不懂的话上图还有例子
动态FormBean
普通的FromBean
动态FormBean
由上图可以简单的理解为动态FormBean就是写在struts-config.xml里面的,还有不同的就是动态FormBean是使用默认DynaActionForm的,再在form-bean标签里面配置FormBean的属性。
Name 属性名 Type 类型
Form-property中的type必须使用包装类
因为使用的类型是DynaActionForm,所以必须转成DynaActionForm(我们平时都转成ActionForm),再通过get(“属性名”)来获取属性,很明显这个就有点不方便了,还要知道属性名。
在页面提取属性,为什么这样取呢,貌似是因为动态FormBean存储时是以map存储的
Struts中的异常处理
一,配置异常(在struts-config.xml文件中定义)
定制异常有两种:全局异常和局部异常 全局异常定义方法如下:
path=”/Login.jsp”
其中ItcaseException是自己定义的异常,不必太在意,随便定义就行,名字也随便起。当对应的Action抛出异常时就不会继续往下运行,而是跳转到指定的页面。(当然,一般都是有错才会抛出异常,比如说输入了敏感数据)
Type指的是抛出的异常
Path指的是抛出type指定的异常时会往path指定的路径跑去
个人感觉:就像一个另类的跳转,只不过exception是抛出了才会跳转