Struts2的标签库(二)之数据标签
数据标签主要用于提供各种数据访问相关的功能,包含显示一个Action里的属性,以及生成国际化输出等功能。
1. action标签
该标签用于在JSP页面直接调用一个Action,通过指定executeResult参数,还可以将Action处理结果包含到本页面中来。该标签有如下几个属性:
(1). var: 这是一个可选属性,一旦定义了该属性,该Action将被放入Stack Context中。
(2). name:这是一个必填属性,通过属性指定该标签调用哪个Action。
(3). namespace:这是一个可选属性,该属性指定义该调用的Action所在的namespace。
(4). executeResult:这是一个可选属性,指定是否将Action结果页面包括到本页面。默认值是false.
(5). ignoreContextParam:这是一个可选属性,指定该页面中的请求参数是否需要传入调用的Action。默认值是false,即本页面的请求参数传入被调用的Action.
下面笔者通过个例子来说明,首先创建个TagAction.java
public class TagAction extends ActionSupport
{// 封装用户请求参数的author成员变量private String author;// author的setter和getter方法public void setAuthor(String author){this.author = author;}public String getAuthor(){return this.author;}// 定义第一个处理逻辑public String execute() throws Exception{return "done";}// 定义第二个处理逻辑public String login() throws Exception{ActionContext.getContext().put("author", getAuthor());return "done";}
}
其次,在struts.xml中加入action.
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
<struts><constant name="struts.i18n.encoding" value="GBK"/><package name="owen" extends="struts-default"><!-- 定义第一个Action,使用TagAction的execute方法作为控制处理逻辑 --><action name="tag1" class="com.owen. app.action.TagAction"><result name="done">/WEB-INF/content/succ.jsp</result></action><!-- 定义第二个Action,使用TagAction的login方法作为控制处理逻辑 --><action name="tag2" class="com.owen.app.action.TagAction"method="login"><result name="done">/WEB-INF/content/loginSucc.jsp</result></action><action name="*"><result>/WEB-INF/content/{1}.jsp</result></action></package>
</struts>
最后,在JSP视图上设置,访问时,直接访问s-action.jsp.它自己就会去调用struts.xml中的action.同时,自己可在访问地址栏后填写?author=owen.第一处有owen,后两处没有owen.
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>使用s:action标签在页面中调用Action</title>
</head>
<body>
下面调用第一个Action,并将结果包含到本页面中。<br/>
<s:action name="tag1" executeResult="true"/>
<hr/>
下面调用第二个Action,并将结果包含到本页面中。<br/>
但阻止本页面请求参数传入Action。<br/>
<s:action name="tag2" executeResult="true"ignoreContextParams="true"/>
<hr/>
下面调用第三个Action,且并不将结果包含到本页面中。<br/>
<s:action name="tag2" executeResult="false"/>
本页面是否可访问?<s:property value="author"/>
</body>
</html>
2. bean标签
该标签用于创建一个JavaBean.如果指定了var属性,则可以将创建的JavaBean实例放入StackContext中。bean标签可以指定下面属性:
(1). name:该属性是一个必填属性,指定要实现的JavaBean的实现类。
(2). var:该属性是一个可选属性,如果指定了。则JavaBean实例会被放入Stack Context中,并放入requestScope中。下面是一个简单的JavaBean。
首先,先定义一个Person.java的类
public class Person
{private String name;private int age;// name的setter和getter方法public void setName(String name){this.name = name;}public String getName(){return this.name;}// age的setter和getter方法public void setAge(int age){this.age = age;}public int getAge(){return this.age;}
}
其次,在jsp视图中应用
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>使用s:bean标签创建JavaBean的实例</title>
</head>
<body>
<!-- 使用bean标签创建一个Person类的实例 -->
<s:bean name="com.owen.app.dto.Person" var=”p”><!-- 使用param标签为Person类的实例传入参数 --><s:param name="name" value="willieam"/><s:param name="age" value="29"/><!-- 因为在bean标签内,Person实例位于ValueStack的栈顶,故可以直接访问lee.Person实例 -->Person实例的name为:<s:property value="#p.name"/><br/>Person实例的age为:<s:property value="#p.age"/>
</s:bean>
</body>
</html>
3. date标签
date标签主要用于格式化一个日期,可以指定发下的属性:
(1). format:这是一个可选属性,如果指定了该属性,将根据属性指定的格式来格式日期。
(2). nice:这是一个可选属性,该属性只能为true或者false,用于指定是否指定输出指定日期和当前时刻之间的时间差。该属性默认是false,即只能表示不输出时间差。
(3). name:这是一个必填属性,该属性指定要格式化日期值
(4). var:这是一个可选属性,如果指定了该属性,格式化后的字符串将被放入Stack Context中,并放入requestScope中,但不会在页面上输出。
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>使用s:date标签格式化日期</title>
</head>
<body>
<s:bean var="now" name="java.util.Date"/>
nice="false",且指定format="dd/MM/yyyy"<br/>
<s:date name="#now" format="dd/MM/yyyy" nice="false"/><hr/>
nice="true",且指定format="dd/MM/yyyy"<br/>
<s:date name="#now" format="dd/MM/yyyy" nice="true"/><hr/>
指定nice="true"<br/>
<s:date name="#now" nice="true" /><hr/>
nice="false",且没有指定format属性<br/>
<s:date name="#now" nice="false"/><hr/>
nice="false",没有指定format属性,指定了var<br/>
<s:date name="#now" nice="false" var="abc"/><hr/>
${requestScope.abc} <s:property value="#abc"/>
</body>
</html>
4. include标签
include标签用于一个JSP页面,或者一个Servlet包含到本页面中。
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>使用s:include标签来包含目标页面</title>
</head>
<body>
<h2>使用s:include标签来包含目标页面</h2>
<!-- 使用include标签来包含其他页面 -->
<s:include value="included-file.jsp"/>
<!-- 使用include标签来包含其他页面,并且传入参数 -->
<s:include value="included-file.jsp"><s:param name="author" value="'yeeku'"/>
</s:include>
</body>
</html>
5. push标签
push标签用于将某个值放到ValueStack的栈顶,从而可以更简单地访问该值。
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>使用s:push来将某个值放入ValueStack的栈顶</title>
</head>
<body>
<h2>使用s:push来将某个值放入ValueStack的栈顶</h2>
<!-- 使用bean标签创建一个JavaBean实例,指定var属性,并将其放入Stack Context中 -->
<s:bean name="com.owen.app.dto.Person" var="p"><s:param name="name" value="owen"/><s:param name="age" value="29"/>
</s:bean>
<!-- 将Stack Context中的p对象放入ValueStack栈顶-->
<s:push value="#p"><!-- 输出ValueStack栈顶对象的name和age属性 -->ValueStack栈顶对象的name属性:<s:property value="name"/><br/>ValueStack栈顶对象的age属性:<s:property value="age"/><br/>
</s:push>
</body>
</html>
6. set标签
使用set标签可以理解为定义一个新变量,且将一个已有的值复制给新变量,并且可以将新变量指定的范围。set标签有如下属性。
(1). scope:这是一个可选属性,指定新变量被放置的范围,该属性可以接受application、session、request、page或action 5个值。该属性默认值是action.
(2). value:这是一个可选属性,指定将赋给变量的值。如果没有指定该属性,则将ValueStack栈顶的值赋值给新变量。
(3). var:这是一个可选属性,如果指定了该属性,则会将值放入ValueStack中。
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>使用s:set设置一个新变量</title>
</head>
<body>
<h2>使用s:set设置一个新变量</h2>
<!-- 使用bean标签定义一个JavaBean实例 -->
<s:bean name="com.owen.app.dto.Person" id="p"><s:param name="name" value="owen"/><s:param name="age" value="29"/>
</s:bean>
将Stack Context中的p值放入默认范围(action)内。<br/>
<s:set value="#p" name="xxx"/>
Stack Context内xxx对象的name属性:<s:property value="#xxx.name"/><br/>
Stack Context内xxx对象的age属性:<s:property value="#xxx.age"/><br/>
request范围的xxx对象的name属性:${requestScope.xxx.name}<br/>
request范围的xxx对象的age属性:${requestScope.xxx.age}<hr/>
将Stack Context中的p值放入application范围内。<br/>
<s:set value="#p" name="yyy" scope="application"/>
application范围的yyy对象的name属性:${applicationScope.yyy.name}<br/>
application范围的yyy对象的age属性:${applicationScope.yyy.age}<hr/>
将Stack Context中的p值放入session范围内。<br/>
<s:set value="#p" name="zzz" scope="session"/>
session范围的zzz对象的name属性:${sessionScope.zzz.name}<br/>
session范围的zzz对象的age属性:${sessionScope.zzz.age}
</body
7. url标签
url标签用于生成一个URL地址,可以通过url标签指定param子元素,从而指定URL发送参数。有发下几个属性:
(1). action:这是一个可选属性,指定生成URL的地址为哪个Action。如果Action不提供,就使用value作为URL的地址值。
(2). anchor:这是一个可选属性,指定URL的锚点。
(3). encode:这是一个可选属性,指定是否需要对参数进行编码,默认是true。
(4). escapeAmp:这是一个可选属性,指定是否需要对&符号进行编码,默认是true.
(5). forceAddSchemeHostAndPort:这是一个可选参数,指定是否需要在URL对应的地址里强制添加scheme、主机号和端口。
(6). incldeContext:这是一个可选属性,指定是否需要将当前上下文包含在URL地址中。
(7). incldeParams:这是一个可选属性,该属性指定是否包含请求参数,该属性的属性值只能为none、get或all。该属性的默认值是get.
(8). method:这是一个可选属性,该属性指定Action的方法。当使用Action来生成URL时,如果指定了该属性,则URL链拉到指定Action特定方法。
(9). namespace:这是个可选属性,该属性指定命名空间。当使用Action来生成URL时,如果指定了该属性,则是URL将链接到此namespace的指定Action处。
(10). portalMethod:这是一个可选属性,指定结果页面的portlet模式。
(11). scheme:这是一个可选属性,用于设置scheme属性。
(12). value:这是一个可选属性,指定生成URL的地址值,如果value不提供就用action属性指定的Action作为URL地址。
(13). var:这是一个可选属性,如果指定了该属性,将会把该链接放入Struts2的valueStack中。
(14). windowState:这是一个可选属性,指定结果页面的portlet的窗口状态。
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>使用s:url来生成一个URL地址</title>
</head>
<body>
<h2>s:url来生成一个URL地址</h2>
只指定value属性的形式。<br/>
<s:url value="editGadget.action"/>
<hr/>
指定action属性,且使用param传入参数的形式。<br/>
<s:url action="showBook"><s:param name="author" value="'yeeku'" />
</s:url>
<hr/>
既不指定action属性,也不指定value属性,但使用param传入参数的形式。<br/>
<s:url includeParams="get" ><s:param name="id" value="%{'22'}"/>
</s:url>
<hr/>
同时指定action属性和value属性,且使用param传入参数的形式。<br/>
<s:url action="showBook" value="xxxx"><s:param name="author" value="'yeeku'" />
</s:url>
</body>
</html>
8. 其它标签
当然还有debug和param标签,debug的标签主要是用于测试的,生成一个超级链接,可以看到ValueStack和Stack Contextr中所有的值信息。param标签主要用于其它标签提供参数。
Struts2的标签库(二)之数据标签相关推荐
- 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )
文章目录 安卓直播推流专栏博客总结 一. AAC 音频格式解析 二. FLV 音频数据标签解析 1. 分析 FLV 格式中的 AAC 音频格式数据 2. AAC 音频特殊配置 3. AAC 音频数据标 ...
- JSTL标签库 | 深入解析JSTL标签库
目录 一:深入解析JSTL标签库 1.什么是JSTL标签库 2.使用JSTL标签库的步骤 3.JSTL标签的原理 4.jstl中的核心标签库core当中常用的标签 一:深入解析JSTL标签库 1.什么 ...
- 大数据 客户标签体系_大数据标签体系建立
我们要不的期是范添事大部会基近说小间进围砖本的为大数据平台建立一套标签体系,首先要明确我们要建立什么,在我看来我们需要建立独立的三样东西:类目标签体系.用户画像支器事的后功发久这含层请间业在屏有随些气 ...
- html 的c标签库,jstl C标准标签库Ⅰ
1. 库:Core(核心库) 前缀:c 描述:标签是一个最常用的标签,用于在JSP中显示数据.它的作用是用来替代通过JSP内置对象out或者标签来输出对象的值. 语法: 没有Body时的语法 有Bod ...
- bboss标签库使用大全-逻辑标签使用介绍
bbossgroups标签库使用大全(续),接上篇<bbossgroups标签库使用大全>,本片重点介绍逻辑标签的使用.同样在使用的时候需要在jsp页头中倒入标签定义文件tld: Html ...
- html5自定义标签库,Bootstrap tagsinput自定义标签插件
tagsinput是一款基于Bootstrap的自定义标签插件.该自定义标签插件提供api接口,可以将input和select元素转换为标签.并能和typehead.js插件结合,提供查询提示信息. ...
- html标签库大全,HTML的标签大全.
用户提问 我想学习一些关于网页设计的一些知识,当然最基础的HTML语言也是我要学习的东西,我现在只了解一些最基本的东西.我打开一些大的网站,比如网易,查看它的原文件.有很多HTML中的标签看不明白是什 ...
- (转)Struts2的标签库
http://blog.csdn.net/yerenyuan_pku/article/details/68638679 Struts2的标签库 对于一个MVC框架而言,重点是实现两部分:业务逻辑控制器 ...
- spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写 一.EL表达式 作用: ${} 简化脚本表达式 <%= %> j2ee1.4以前版本需指定<%@ page is ...
- struts2:数据标签
目录 数据标签 1. a标签 2. set标签 3. push标签 4. bean/param标签 5. date标签 6. include标签 7. url标签 8. property标签 9. d ...
最新文章
- 新技术“红”不过十年,半监督学习为什么是个例外?
- ubuntu, debian 安装redis,设置开机自动启动和密码,允许外网访问
- mongodb 内存限制
- 区块链系统之《基于区块链的PKI数字证书系统》
- android 每隔2秒执行_Android中实现延迟执行操作的三种方法
- apache日志记录格式LogFormat参数说明
- seajs打包部署工具spm的使用总结
- [李景山php]每天TP5-20161225|thinkphp5-Console.php-2
- rocketmq存储结构_rocketMq高性能存储设计
- TensorFlow 基础
- python安装Selenium,配置ChromeDriver
- 华为首次赶超苹果;拼多多遭调查;Google 计划推中国版搜索引擎 | 极客头条
- 【安装包】eclipseEE(IDE)
- base64原理及其编解码的python实现
- 无源滤波器设计与选型
- 苹果设备(iPhone、iPad、iPod)尺寸及数据 iOS
- “二选一”是支付宝首创,背后是帝国的霸权逻辑
- ios底层是linux,深入iOS系统底层之CPU寄存器介绍
- 怎样恢复计算机到桌面,电脑任务栏怎么还原到下面 电脑任务栏还原方法【图文】...
- 了解到的生二孩最好的理由