依赖注入

模块包含

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的差别

struts2一些概念介绍和标签的使用的更多相关文章

  1. 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍

    第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...

  2. HTML基本概念及基本标签

    HTML基本概念及基本语法 1.HTML的基本概念 1.1  B/S.C/S基本概念 B/S(Browser/Server):指的是浏览器端与服务器端工作模式,优点相对节省本地存储空间,不足是需要占用 ...

  3. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  4. Linux LVM硬盘管理之一:概念介绍

    一.LVM概念介绍: LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现.LVM将一个或多个硬盘的分区在逻 ...

  5. Java SE/ME/EE的概念介绍

    转自 Java SE/ME/EE的概念介绍 多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不同的包,以面向特定的应用. ...

  6. 解决Struts2.2.20版本的标签不支持style属性的问题

    我先把Exception错误信息贴出来:org.apache.jasper.JasperException: /WEB-INF/jsp/topicAction/addUI.jsp (line: 40, ...

  7. struts2防止重复提交的标签

    struts2 token 使用说明 --------------------------------------------------------------------------------- ...

  8. rocketMq概念介绍

    rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注:    改图片分享自李占卫的网上家园 说明: 在rocketM ...

  9. 框架学习之Struts2(四)---拦截器和标签

    一.拦截器概述 1.1 在struts2框架中封装了很多功能,struts2里面封装的功能都是在拦截器里面,struts2里面又很多拦截器,但不是每次这些拦截器都执行,每次执行型默认的拦截器. 默认拦 ...

随机推荐

  1. 第四章ContentProvider

    No resource found that matches the given name 'Theme.AppCompat.Light'.

  2. linux 学习 14 日志管理

    第十四讲 日志管理 14.1 日志管理-简介 .日志服务 在CentOS .x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服 ...

  3. visual c++ 2010安装失败导致CRM2015安装失败

    记录一下: 今天重新安装CRM2015时碰到以下错误: 安装一个或多个缺少的必备组件失败...,查看日志发现是 Microsoft Visual C++ 运行时 的安装失败,但查看系统发现vc++20 ...

  4. 掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)

    ---恢复内容开始--- 今天我们来讲的就是项目<掷骰子> 首先我们先下载资源包,也就是我们需要的图片[点击图片下载] 在我们下载完图片之后,我们就可以开始创建项目 一.我们项目的做法可以 ...

  5. MVC数据传递和多表单

    1.数据传递(1)session和TempData 全局变量,可以将值从一个动作传递到另一个动作,也可以从控制层传递到视图层. TempData取一遍值后自动销毁. session使用: //控制器中 ...

  6. 循序渐进Python3(八) -- 0 -- 初识socket

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...

  7. 初学c# -- 学习笔记(五) winfrom无边框四周阴影

    刚用到这个功能,网上扯淡的东西太多了,都是2边阴影,还什么窗口叠加.ps作图啥的,什么玩意.还是老外实在,google找的,无边框窗体,四边透明阴影. public partial class For ...

  8. 汉化PLSQL怎么改变字体的大小及关键字颜色

    打开工具---首选项-----编辑器---语法高亮进行设置自己喜欢的颜色---应用--确定 英文版PLSQL:tools----preferences---userinterface项目下的edite ...

  9. Matrix Calculator

    表达式分析+矩阵+计算器+寄存器=矩阵计算器 怎么想起来搞这个呢.. //刚看龙书兴致勃勃要搞表达式分析 这个寄存器比较简陋,26字母+4缓存,//字母不分大小写 当然,不只能算矩阵,还能算数= = ...

  10. Android笔记:DrawerLayout抽屉布局的使用

    DrawerLayout(抽屉布局),在各种app中经常出现,比如csdn.. 如下示,只要从屏幕侧边滑一下,或者点击左上角的图标,抽屉就会出来. DrawerLayout要点: 1.使用Drawer ...