表单标签
<s:form action=“login” method=“post”></<s:form>
(对应着:)
<s:textfield name=“userName” label=“用户名”/>
(对应着:用户名:)
<s:password name=“password” label=“密码”/>
(对应着:密码:)
控制标签
用来完成流程的控制,如条件分支、循环操作,也可以实现对集合的排序和合并。
<s:if>标签、<s:elseif>标签和<s:else>标签
<s:if test="%{value==-1}">
(对应着:if、elseif、else语句)
<s:iterator>标签
iterator标签主要是对集合进行迭代操作,集合可以使List、Map、Set和数组。
var:指定集合元素的ID。
value:指定迭代输出的集合,该集合可以是OGNL表达式,也可以通过Action返回一个集合类型。
status:指定集合中元素的status属性。指定status属性后,每次迭代都会产生一个IteratorStatus实例对象。
int getCount():返回当前迭代元素的个数。
int getIndex():返回当前迭代元素的索引值。
boolean isEven():返回当前迭代元素的索引值是否为偶数。
boolean isOdd():返回当前迭代元素的索引值是否为奇数。
boolean isFirst():返回当前迭代元素的是否是第一个元素。
boolean isLast():返回当前迭代元素的是否是最后一个元素。
使用iterator标签的属性status时,其实例对象包含以上的方法,
而且也包含的有对应的属性,如#status.count、#status.even、#status.odd、#status.first等。
OGNL表达式
三个参数:表达式、根对象和上下文环境。
表达式:指出OGNL操作要做的工作,例如,name、student.name等表达式,表示取name或者student中的name的值。
根对象:指定OGNL要操作的对象,例如,<s:property value="#request.name"/>中,request就是对象,这个对象取出name属性的值。
上下文环境:是OGNL要操作的地点
如果使用OGNL需要访问的不是根对象,则需要使用名称空间,用“#”来表示
如果访问的是一个根元素,则不用使用名称空间,可以直接访问根对象的属性。
根元素是放入ValueStack的Action对象,Struts2框架将实例化的Action对象放入ValueStack中
struts2框架还将parameters,request,response,session,application,attr等对象放到 ActionContext中,访问这些对象需要加前缀#
一个OGNL表达式若没有指定目标对象,默认就是从根对象开始查找
输出属性标签
1.显示Action中的属性值:<s:property value=“属性名” />
2.显示字符串,使用单引号:<s:property value="‘字符串’" />
3.显示默认值,Action中找不到指定的属性时,显示default属性的值:<s:property value=“属性名” default=“默认值” />
示例:
M
书类目录类
V
catalog.jsp
C
Action对象
struts.xml配置action
执行过程:
1.启动tomcat,地址栏输入url http://localhost:8080/struts1/catalogList,发起请求
2.根据struts.xml,调用BookAction类的showCatalog方法,处理
3.处理完,根据return,交给catalog.jsp响应
ActionSupport
再进行action定义时我们可以继承ActionSupport来简化开发,并规范代码