前言:

Struts2提供了大量的标签 ,用来帮助开发表现层页面,这些表现一方面解决了美观性的需求,因为它们具有html标签一样的外观,另一方面它们解决了功能性的需求,

因为它们具有jsp脚本一样的逻辑控制能力。相对于struts1提供的标签库,struts2的标签库功能更加强大,而且简单易用。

1.Struts2标签基础:

struts2把所有的标签都定义在URI为“/struts-tags”的空间下,这点与struts1不同。

struts2提供的标签可以分为三大类:

UI标签:  主要是用于生成Html元素的标签

UI标签又可分为:

表单标签:主要用于生成Html页面的form元素。

非表单标签:主要用于生成页面上的树,Tab页等标签

非UI标签 : 主要是用于数据访问,逻辑控制的标签

非UI标签又可分为:

流程控制标签:主要包括实现分支,循环等流程控制标签

数据访问标签:主要用于输出后台传过来的值。

Ajax标签: 主要是用于支持ajax的标签

使用struts2的标签:

使用<%@taglib prefix="s"  uri="/struts-tags" %> 在页面身上导入标签库   prefix属性是为标签库的前缀

2.OGNL表达式语言:  #

OGNL表达式的功能类似于EL表达式功能,就是把“存入特定银行中的对象的值取出来”,在未使用OGNL表达式时,这几大银行是request,response,session,application

等等。而使用OGNL表达式时,OGNL表达式维护了一个比较复杂的银行结构:

Stack Context:  这是最大银行  所有的其他银行 对象  都放在它中

Value Stack:    这是Stack Context银行中,比较重要的部门,它用于存放 系统创建的Action类的实例对象   把存入其中的Action实例对象称为根对象

Action Context:   这是Stack Context银行中,一个普通的部门  ,  它用于存放 一次请求某个Action类时 生成的上下文对象   ,若在该上下文对象对象中放入的值 ,会直接放入Stack Context中

Stack Context银行还可以包含

parameters对象

request对象

session对象

application对象

attr对象:

关系图如下:

在Action处理中我们可以选择把一个值放入parameters对象  request对象 request对象 attr对象这些普通的对象中去(放在Stack Context中),也可把值放入Action Context的对象中(也是放在 Stack Context中),也可以选择把要返回值放入该Action类的实例对象中去(放入在Value Stack中)。

由于把值放入Action实例对象中 ,即存在Value Stack中 ,在页面上取值时比较方便,所有Struts2建议我们把要放回的值放在Action实例对象中,而不是通过得到parameters对象  request对象 request对象 attr对象(这些称为命名对象)等Servlet的相关对象,把值放入它们之中。

访问value Stack中Action实例对象的值:

${name}      或    标签<s:property  value="name">

访问命名对象中值:

标签<s:property value="#request.name ">

OGNL中的集合操作:

创建一个List集合,里面包含e1,e2,e3三元素   :   {e1,e2,e3}

创建Map类型集合:  #{key1:value1,key2:value3,key3:value3}

提供两个运算符  : in和 not in   判断某个元素是不是在指定集合中 和 某个元素是不是不在某个集合中   返回boolean值

表达式:'foo'  in   {'foo','bar'}  返回 true

'foo' not  in   {'foo','bar'}  返回 false

OGNL提供访问某个类的静态成员的功能:

首先要在struts.xml文件中通过常量struts.ognl.allStaticMethodAccess 设置为 true

OGNL通过如下规则访问某个类的静态成员  :

访问类的静态Field  :   @className@staticField

访问类的静态方法:    @className@staticMetod(value1,value2)

如:

<s:property  value="@java.lang.System@getenv('JAVA_HOME')">      输出jdk的目录           访问System类的静态getenv()方法

<s:property value="@java.lang.Math@PI">            显示3.1415926....                           访问Math类的静态Field   PI

通过上面可以看出 OGNL表达式与EL表达式 不同 OGNL表达式必须结合Struts2的标签 才能完成值得输出   而EL表达式可以直接输出放在几大对象中的值。

3.UI标签:

表单标签:

非表单标签:

4.非UI标签:

流程控制标签:   共有9个

if     :<s:if   test="   " ></s:if>             test属性是一个可以返回boolean值的 表达式

else if  :  <s:elseif  test=" "></s:elseif>   test属性是一个可以返回boolean值的 表达式

else  :  <s:else>  </s:else>

iterator : <s:iterator  value="  "   id=" "  status="  "> </s:iterator>    value属性是被迭代的集合,或者数组     id属性 是迭代元素的ID     status属性指定当前迭代器的实例对象名(该对象在Stack Context中 该对象有属性

count:当前迭代了几个对象那个  index:当前迭代的对象的索引  even:当前迭代元素的索引是不是偶数  odd:当前迭代元素的索引是不是奇数  first:当前迭代元素是不是第一个元素  last:当前迭代元素是不是最后一个元素)

append :  <s:append var=" ">                          apeend标签用于将多个集合对象 拼接成一个新的集合对象,并把新的集合对象放入 Stack Context中     var属性指定生成新的对象的名称

<s:param  value=" "> </s:param>          value属性指定  要拼接的对象

<s:param  value=" "> </s:param>           value属性指定  要拼接的对象

</s:append>

generator:

merge:

sort:

subset:

数据访问标签:

property:  <s:property  value=" "></s:property>   用于输出Stack Context , ValueStack, 和 Action Context中的值

debug : <s:debug/>   用于在页面上生成一个调试链接     可以看到 Value Stack 和 Stack Context中的值    方便输出

action:

bean:

include:

param:

set:

url:

push:

Struts2之Struts2的标签库的更多相关文章

  1. java框架之Struts2(4)-拦截器&标签库

    拦截器 概述 Interceptor (拦截器):起到拦截客户端对 Action 请求的作用. Filter:过滤器,过滤客户端向服务器发送的请求. Interceptor:拦截器,拦截的是客户端对 ...

  2. (转)Struts2的标签库

    http://blog.csdn.net/yerenyuan_pku/article/details/68638679 Struts2的标签库 对于一个MVC框架而言,重点是实现两部分:业务逻辑控制器 ...

  3. 【struts2】Struts2的运行流程

    1)前提条件 在讲解流程之前,假设我们已经建立了的一个名为strutsDeepen的web工程,该工程仅仅实现了简单的用户登陆与欢迎界面.具体的实现为: 在web.xml中配置了Struts2的过滤器 ...

  4. Struts2入门(五)——OGNL和标签库

    一.前言 OGNL和标签库的作用,粗暴一点说,就是减少在JSP页面中出现java代码,利于维护. 1.1.OGNL 1.1.1.什么是OGNL? OGNL(Object-Graph Navigatio ...

  5. Struts2的标签库(五)——表单标签

    Struts2的标签库(五) --表单标签 几个特殊的表单标签的使用: 1.checkboxlist标签 该标签用于创建多个复选框,用于同时生成多个<input type="check ...

  6. Struts2的标签库(四)——数据标签

    Struts2的标签库(四) --数据标签 1.action标签 该标签用于在jsp页面直接调用一个Action,通过指定executeResult参数,还可以将Action的处理结果包含到此页面中来 ...

  7. Struts2的标签库(三)——控制标签

    Struts2的标签库(三) --控制标签 1.if/elseif/else标签 用于分支控制,取代JSP中的if语句,根据一个boolean(test属性的值)值判断是否进行下一步运算或者输出等. ...

  8. Struts2的标签库(二)——OGNL表达式

    Struts2的标签库(二) --OGNL表达式 1.Struts2中的OGNL表达式增加了ValueStack的支持. 注:ValueStack--实际上是一个容器对象,该对象在启动Struts2框 ...

  9. Struts2的标签库(一)——使用Struts2的标签库

    Struts2的标签库(一) --使用Struts2的标签库 1.Struts2的标签库其实就是一个自定义的标签库,所以它也有它的标签处理类和标签库定义文件: 2.和所有自定义标签一样,我们可以找到S ...

  10. java开发--struts2 标签库使用

    在工程中使用struts2标签 一.struts2标签定义文件在struts2-core-2.0.11.1\META-INF 下面,文件名为struts-tags.tld 二.如果工程使用了servl ...

随机推荐

  1. Luogu4149:[IOI2011]Race

    题目 bzoj权限题... Luogu Sol 点分治辣,边权非负,k>=1,开个\(1e6\)的桶就好辣 # include <bits/stdc++.h> # define RG ...

  2. Django使用Celery异步任务队列

    1  Celery简介 Celery是异步任务队列,可以独立于主进程运行,在主进程退出后,也不影响队列中的任务执行. 任务执行异常退出,重新启动后,会继续执行队列中的其他任务,同时可以缓存停止期间接收 ...

  3. 纯css实现图片的灯光照射效果,高逼格图片展示

    先不说技术,看实现的效果, 与原图(左图)相比,‘灯光’ 照射(右图)下的小姐姐是不是更有魅力了!! 那么下面就说说大家关心的技术实现过程. 其实这是我在学习css属性 mix-blend-mode ...

  4. 如何使用Git以及GitHub

    Git在程序的版本控制上有着极大的优势,下面是简单对其的简介 Git 的特点: 1 Snapshots, Not Differences 直接记录快照而非差异对比. 传统的版本控制系统(version ...

  5. Python标准库概览

    Python标准库通常被称为"自带的电池",自然地提供了广泛的功能,涵盖了大概200个左右的包与模块.不断有高质量的包或模块被开发出来,极大的丰富了标准库.但有些模块放在标准库中很 ...

  6. Android 音视频编解码——YUV视频格式详解

    一.YUV 介绍 YUV是一种颜色编码方方式,通常由彩色摄像机进行取像,然后把取得的彩色图像信号经过分色.分别放大校正后得到RGB,再经过矩阵变换得到亮度信号Y和两个色差信号B-Y(即U).R-Y(即 ...

  7. [解决]Linux Tomcat启动慢--Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [236,325] milliseconds

    一.背景 今天部署项目到tomcat,执行./startup.sh命令之后,访问项目迟迟加载不出来,查看日志又没报错(其实是我粗心了,当时tomcat日志还没打印完),一开始怀疑是阿里云主机出现问题, ...

  8. Git 初体验

    第一次接触git的时候,一直在纳闷git和github的区别,解释下,git是版本管理工具,github是开源共享平台,个人这么理解,理解这么多就行了 先说git吧,下载git客户端,地址:http: ...

  9. VMware 滴滴声解决

    去除虚拟机tab时的滴滴声 # cat /etc/inputrc Set bell-style none 重启生效

  10. canvas小球

      小球碰撞效果是采用面向对象的方式写的,在小球的构造器里包含了小球的属性值,大小,移动速度,半径大小以及颜色. 在小球的原型方法里,添加了小球运动的方法,当小球碰撞到屏幕边界的时候进行反弹. 小球是 ...