struts2一些概念介绍和标签的使用
依赖注入
模块包含
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>
- <s:set var=”includepage” value=”'/index.html'” />
- <s:property value=”#includepage” />
- <s:include value="#includepage" /> include标签value的type是字符串类型,"#includepage" 在解析的时候会被解析成字符串
- <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的差别
struts2一些概念介绍和标签的使用的更多相关文章
- 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍
第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...
- HTML基本概念及基本标签
HTML基本概念及基本语法 1.HTML的基本概念 1.1 B/S.C/S基本概念 B/S(Browser/Server):指的是浏览器端与服务器端工作模式,优点相对节省本地存储空间,不足是需要占用 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...
- Linux LVM硬盘管理之一:概念介绍
一.LVM概念介绍: LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现.LVM将一个或多个硬盘的分区在逻 ...
- Java SE/ME/EE的概念介绍
转自 Java SE/ME/EE的概念介绍 多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不同的包,以面向特定的应用. ...
- 解决Struts2.2.20版本的标签不支持style属性的问题
我先把Exception错误信息贴出来:org.apache.jasper.JasperException: /WEB-INF/jsp/topicAction/addUI.jsp (line: 40, ...
- struts2防止重复提交的标签
struts2 token 使用说明 --------------------------------------------------------------------------------- ...
- rocketMq概念介绍
rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注: 改图片分享自李占卫的网上家园 说明: 在rocketM ...
- 框架学习之Struts2(四)---拦截器和标签
一.拦截器概述 1.1 在struts2框架中封装了很多功能,struts2里面封装的功能都是在拦截器里面,struts2里面又很多拦截器,但不是每次这些拦截器都执行,每次执行型默认的拦截器. 默认拦 ...
随机推荐
- grep sed 大批量替换字符串
sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...
- 滴滴与Uber的竞争分析
滴滴与Uber的竞争分析 随着互联网时代的到来,智能手机的普及,互联网不再是一个完全虚拟的东西,它开始慢慢地融入到我们的生活中来.这些年我们可以明显地感受到我们的生活方式在一天天发生着变化,我们也逐渐 ...
- MySQL_订单类型细分_20161222
#目前在做一个各城市日订单角度的对比分析,因此需要对订单类型进行一下规整.由于App上产品活动许多,查询了多个表,将订单类型规则进行了统一,优惠券和满减券不能同时使用,创建的这两个表都是以订单ID为k ...
- SRM 146 DIV2 1000
Problem Statement A well-known riddle goes like this: Four people are crossing an old bridge. T ...
- unity5.0新功能-布料、动画系统
原作者:只待苍霞 这一章讲一下布料系统, 这次的布料系统有很大的改良.Unity4中, 需要对SkinnedMeshRenderer使用SkinnedCloth, 或者对Cloth Renderer使 ...
- springmvc spring mybatis插入mysql中文乱码
springmvc 插入mysql数据库中文乱码问题: 1.将页面中的编码改成utf-8 2.用SQLyog右击->改变数据库 以上两步可以保证页面数据编码一致 3.在mybatis连接的地方加 ...
- leetCode 354. Russian Doll Envelopes
You have a number of envelopes with widths and heights given as a pair of integers (w, h). One envel ...
- LoadRunner ---协议分析
在做性能测试的时候,协议分析是困扰初学者的难题,选择错误的协议会导致Virtual User Generator 录制不到脚本:或录制的脚本不完整,有些应用可能需要选择多个协议才能完整的记录 客户端与 ...
- CentOS7安装问题及解决方案记录
CentOS7系统已安装好: 一.我想要实现系统桌面化. 需要运行 yum 命令. 出现第一个error: 1.提示错误:can not find a valid baseurl 86_X64.... ...
- DIOCP之开发流程图之Client
本次分析开发流程图采用的是DIOCP群里的群友[彩蛋]所给的DEMO,依然是win7的画图作品. 本人分析认为:学习网络开发不同本地开发,首先你应该知道完整的开发流程即网络程序运行的先后顺序,有个整体 ...