struts2一些概念介绍和标签的使用

简介:  依赖注入 模块包含struts.xml的模块包含格式 OGNL  对象导航语言   有个超大的好处就是根据对象访问属性,避免混乱。 OGNL标签分为:data tags和 control  tags一、数据标签property标签获取值栈中的普通对象是访问哪些有get和set的属性的方法name:name:访问值栈中的普通对象的普通方法   1.

 

 

依赖注入

 

模块包含

struts.xml的模块包含格式

<include file="xx.xml" >

 

OGNL  

对象导航语言   有个超大的好处就是根据对象访问属性,避免混乱。

 OGNL标签分为:data tags和 control  tags

一、数据标签

property标签

获取值栈中的普通对象

<s:property   value=""/>

是访问哪些有get和set的属性的方法

name:<s:property value="name"/><br>
name:<s:property value="user.name"/><br>

访问值栈中的普通对象的普通方法

   1.password是String类型

   password:<s:property   value="password.length()"/><br>

   2.实体类中自定义对象的普通方法

eat:<s:property   value="person.eat()"/><br>

   3.Action类中定义的普通方法

<s:property   value="methodaction1()"/>

   4.访问集合

      1>array  

        和list一样

      2> list

           访问list

           <s:property   value="listname"/>

           访问list某个属性的集合

           <s:property   value="listname.{age}"/>

           访问list某个集合的某特定值

            <s:property   value="listname.{age}[0]"/>或者

            <s:property   value="listname[o].age"/>更容易理解和记忆

 

      3>set

          和list一样

      4>map

                 访问map单个元素

                 <s:property   value="mapname.key"/>或者 <s:property   value="mapname['key']"/>  单引号

                 访问map所有key

                 <s:property   value="mapname.keys"/>

                 访问map所有value

                 <s:property   value="mapname.values"/>

                 访问容器的大小

                  <s:property   value="mapname.size()"/>或者  <s:property   value="mapname.size"/>

 

 

 

注:什么是普通方法和属性:就是非static的方法和非构造方法和属性

   5.访问静态方法和和属性(需要改设置)

 <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>struts.xml中修改

 

 

<s:property   value="@全类名@方法或属性"/>

 

 

6.投影

   users为set集合

   <s:property   value="users.{?#this.age==1}.{0}"/>

   <s:property   value="users.{^#this.age>1}.{age}"/>  age大于1集合中的第一个元素

   <s:property   value="users.{$#this.age>1}.{age}"/>  age大于1集合中的第后一个元素

   <s:property   value="users.{$#this.age==1}.{age}==null"/> 判断集合是否为空

两者都可以但是第二个更明确。

name:<s:property value="name"/><br>
name:<s:property value="user.name"/><br>

 

 

set标签

<s:set var=""   value=""/>  value的type为object,可以用来重命名

如:在浏览器中地址栏中输入...&age=-8

 

      <s:set var="age"   value="#parameters.age[0]"/>

      <s:if test="#age<0">wrong yong!</s:if>

 

  1. <s:set var=”includepage” value=”'/index.html'” />  
  2.  <s:property value=”#includepage” />
  3. <s:include  value="#includepage"  />     include标签value的type是字符串类型,"#includepage" 在解析的时候会被解析成字符串
  4. <s:include  value="%{#includepage}"  />这一个加上%{}就会被当做ognl表达式

 二、控制标签

if标签 

 <s:if test=""></s:if>  test的type是布尔型 boolean

 

 iterator标签

遍历集合:
<s:iterator value="{'1','2','3'}">
<s:property/>
</s:iterator>
<br>
自定义变量:
<s:iterator value="{'aa','bb','cc'}" var="w">
<s:property value="#w.toUpperCase()"/>
</s:iterator>
<br>
遍历map
<s:iterator value="#{'a':'A','b':'B','c':'C'}">
<s:property value="key"/>|<s:property value="value"/>
</s:iterator>

使用status

使用status <br>
<s:iterator value="{'aa','bb','cc'}" status="status">
<s:property/>
遍历过的总数:<s:property value="#status.count"/><br>
当前遍历的的索引位置:<s:property value="#status.index"/><br>
当前是奇数?:<s:property value="#status.even"/><br>
当前是偶数?:<s:property value="#status.odd"/><br>
当前是第一个元素?:<s:property value="#status.firt"/><br>
当前是最后一个元素?:<s:property value="#status.last"/>
<hr>
</s:iterator>

 subset标签

 

 

注:从例子可以看出定义list和map的差别

 

目录
相关文章
|
Java 容器
JSP第六篇【自定义标签之传统标签】(一)
JSTL标签库只提供了简单的输出等功能,没有实现任何的HTML代码封装,并且某些复杂类型转换,或者逻辑处理的时候,JSTL标签库完成不了,需要自定义标签!
106 0
JSP第六篇【自定义标签之传统标签】(一)
|
Java
JSP第六篇【自定义标签之传统标签】(三)
JSTL标签库只提供了简单的输出等功能,没有实现任何的HTML代码封装,并且某些复杂类型转换,或者逻辑处理的时候,JSTL标签库完成不了,需要自定义标签!
91 0
JSP第六篇【自定义标签之传统标签】(三)
|
缓存 Java
JSP第六篇【自定义标签之传统标签】(四)
JSTL标签库只提供了简单的输出等功能,没有实现任何的HTML代码封装,并且某些复杂类型转换,或者逻辑处理的时候,JSTL标签库完成不了,需要自定义标签!
96 0
JSP第六篇【自定义标签之传统标签】(四)
|
XML Java 数据格式
JSP第六篇【自定义标签之传统标签】
为什么要使用自定义标签? JSTL标签库只提供了简单的输出等功能,没有实现任何的HTML代码封装,并且某些复杂类型转换,或者逻辑处理的时候,JSTL标签库完成不了,需要自定义标签! 编写自定义标签的步骤: 编写一个实现Tag接口的Java类【标签处理器类】 在WEB-INF目录下创建tld(Tag...
1025 0
|
JavaScript 数据库
|
Java 数据安全/隐私保护 Spring
struts2 标签大全
1): ---- 文本输入框 使用: (2): ----- 文本域输入框 使用: (3): ----- 密码输入框 使用: 前三个基本都是一样的。
1030 0