原创:Struts2数据标签的解析

    数据标签主要用于提供各种数据访问相关的功能,比如显示一个Action里的属性,以及生成的国际化输出等。
    Struts2数据标签主要分为以下几种:
         property:用于生成输出某个值 值包:valueStack、StackContext和ActionContext中的值
         bean:该标签用于创建一个JavaBean实例,如果指定了id属性,则可以将创建的Javabean实例存放入Stack Context中。
         set:用于设置一个新变量,并将该新变量放入指定的范围内
         url:用于生成一个URL地址
         text:用于输出国际化信息
         param:用于设置一个参数,通用用做bean标签 URL标签的子标签
         date:用于输出一个日期
         debug:用于在页面上生成一个连接,当点击链接时,可以看到ValueStack 和 Stack Context中的内容
         include:用于在JSP页面中包含其他的jsp资源等
         i18n:用于指定国际化资源文件的baseName
         action:该标签用于在JSP页面直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到

本页面中
         push:用于将某个值放入ValueStack的栈顶。

以下是部分标签的案例供学员参考:
 

Java代码 复制代码
  1. /**首先创建一个JavaBean 供bean标签使用*/  
  2. package edu.bean;   
  3.   
  4. import java.io.Serializable;   
  5.   
  6. public class Admin implements Serializable{   
  7.   
  8.     /**  
  9.      *   
  10.      */  
  11.     private static final long serialVersionUID = 1L;   
  12.     private int id;   
  13.     private String name;   
  14.     private String pass;   
  15.   
  16.     public Admin() {   
  17.   
  18.     }   
  19.   
  20.     public Admin(int id, String name, String pass) {   
  21.         this.id = id;   
  22.         this.pass = pass;   
  23.         this.name = name;   
  24.     }   
  25.   
  26.     public int getId() {   
  27.         return id;   
  28.     }   
  29.   
  30.     public void setId(int id) {   
  31.         this.id = id;   
  32.     }   
  33.   
  34.     public String getName() {   
  35.         return name;   
  36.     }   
  37.   
  38.     public void setName(String name) {   
  39.         this.name = name;   
  40.     }   
  41.   
  42.     public String getPass() {   
  43.         return pass;   
  44.     }   
  45.   
  46.     public void setPass(String pass) {   
  47.         this.pass = pass;   
  48.     }   
  49.        
  50.     public void study(){   
  51.         System.out.println("管理员正在学习管理的方式.....");   
  52.     }   
  53.   
  54. }   
  55.   
  56. /**以下是视图层中的案例原码供学员参考*/  
  57.   
  58.     <body>   
  59.             <h1>   
  60.             数据标签案例   
  61.         </h1>   
  62.         <!--bean用于创建一个JavaBean实例   
  63.                  name属性:必填属性 该属性指定要实例化的JavaBean的实现类。   
  64.                  id属性:该属性是一个可选属性.如果指定了该属性,则该JavaBean实例会被存入Stack Context中,从   
  65.                  而允许直接通过id属性来访问该JavaBean实例   
  66.                 -->   
  67.         <s:bean name="edu.bean.Admin" id="p">   
  68.             <!-- 使用param标签为Java实例传入参数  name是属性名称  value是属性值-->   
  69.             <s:param name="id" value="12"></s:param>   
  70.             <s:param name="name" value="'redarmy'"></s:param>   
  71.             <s:param name="pass" value="'123'"></s:param>   
  72.             <!--备注:在value属性值中我们使用了" '  ' " 既外层是""内层是'' 为什么呢?   
  73.                          其实暗藏玄机,如果没有加''那么它redarmy当成变量来取值,而不是看成字符串。   
  74.                          所以要想看成字符串必须加单引号,而对于整数无此要求   
  75.                         -->   
  76.         </s:bean>   
  77.         <!--在使用bean标签的时候 要获取p的实例加#前缀-->   
  78.         <s:set name="entity" value="#p"></s:set>   
  79.         <s:property value="#entity.name" />   
  80.         <br />   
  81.         <!--在这里你明白为什么加''吗?如果还是不明白请参考上面-->   
  82.         <s:set name="username" value="'redarmyChen'" scope="session"></s:set>   
  83.         <s:property value="#session['username']" />   
  84.         <br />   
  85.         <!-- URL标签中的method方法 指明的是Action中的处理方法 -->   
  86.         <s:url action="./adminLogin.action" namespace="/" id="login">   
  87.             <s:param name="name" value="'redarmy'"></s:param>   
  88.             <s:param name="pass" value="'123'"></s:param>   
  89.         </s:url>   
  90.         <s:a href="%{login}">用户登录</s:a>   
  91.         <br />   
  92.         <!-- 用于输出日期的标签 -->   
  93.         <%   
  94.             Date nowdt = new Date(300000000);   
  95.             //将nowdt存入到PageContext里的属性   
  96.             pageContext.setAttribute("nowdt", nowdt);   
  97.         %>   
  98.         <!-- 默认的格式:YYYY-MM-DD HH:mm:ss -->   
  99.         <s:date name="#attr.nowdt" />   
  100.         <br />   
  101.         <!-- format:是一个可选属性 如果指明该属性 则就按照指明的格式输出 -->   
  102.         <s:date name="#attr.nowdt" format="dd/MM/yyyy" />   
  103.         <br />   
  104.         <!-- nice:是一个可选属性,true|false 它用于指定是否输出指定日期和当前日期之间时差-->   
  105.         <br />   
  106.         <s:date name="#attr.nowdt" nice="true"></s:date>   
  107.         <!-- 怎么输出国际化信息呢 可以采用如下方式 -->   
  108.         <s:property value="%{getText('helloworld')}" />   
  109.         <s:text name="helloworld"></s:text>   
  110.         <!--生成一个debug的链接 链接中显示ValueStack Stack Context中的所有的值信息-->   
  111.         <s:debug></s:debug>   
  112.     </body>   
  113. /**以下是struts.xml文件*/  
  114. <?xml version="1.0" encoding="UTF-8" ?>   
  115. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"    
  116.   
  117. "http://struts.apache.org/dtds/struts-2.1.dtd">   
  118. <struts>   
  119.     <!-- 国际化资源文件的声明  -->   
  120.     <constant name="struts.custom.i18n.resources" value="globalMessages"></constant>   
  121.     <package name="sts" extends="struts-default" namespace="/">   
  122.         <!-- 全局的结果 -->   
  123.         <global-results>   
  124.             <result name="input">/admin/error.jsp</result>   
  125.         </global-results>   
  126.         <!-- action处理 -->   
  127.         <action name="adminLogin" class="edu.saction.AdminAction"  
  128.             method="login">   
  129.             <result>/admin/main.jsp</result>   
  130.         </action>   
  131.     </package>   
  132.   
  133. </struts>     

/**首先创建一个JavaBean 供bean标签使用*/
package edu.bean;

import java.io.Serializable;

public class Admin implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int id;
	private String name;
	private String pass;

	public Admin() {

	}

	public Admin(int id, String name, String pass) {
		this.id = id;
		this.pass = pass;
		this.name = name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}
	
	public void study(){
		System.out.println("管理员正在学习管理的方式.....");
	}

}

/**以下是视图层中的案例原码供学员参考*/

	<body>
	        <h1>
			数据标签案例
		</h1>
		<!--bean用于创建一个JavaBean实例
                 name属性:必填属性 该属性指定要实例化的JavaBean的实现类。
                 id属性:该属性是一个可选属性.如果指定了该属性,则该JavaBean实例会被存入Stack Context中,从
                 而允许直接通过id属性来访问该JavaBean实例
                -->
		<s:bean name="edu.bean.Admin" id="p">
			<!-- 使用param标签为Java实例传入参数  name是属性名称  value是属性值-->
			<s:param name="id" value="12"></s:param>
			<s:param name="name" value="'redarmy'"></s:param>
			<s:param name="pass" value="'123'"></s:param>
			<!--备注:在value属性值中我们使用了" '  ' " 既外层是""内层是'' 为什么呢?
                         其实暗藏玄机,如果没有加''那么它redarmy当成变量来取值,而不是看成字符串。
                         所以要想看成字符串必须加单引号,而对于整数无此要求
                        -->
		</s:bean>
		<!--在使用bean标签的时候 要获取p的实例加#前缀-->
		<s:set name="entity" value="#p"></s:set>
		<s:property value="#entity.name" />
		<br />
		<!--在这里你明白为什么加''吗?如果还是不明白请参考上面-->
		<s:set name="username" value="'redarmyChen'" scope="session"></s:set>
		<s:property value="#session['username']" />
		<br />
		<!-- URL标签中的method方法 指明的是Action中的处理方法 -->
		<s:url action="./adminLogin.action" namespace="/" id="login">
			<s:param name="name" value="'redarmy'"></s:param>
			<s:param name="pass" value="'123'"></s:param>
		</s:url>
		<s:a href="%{login}">用户登录</s:a>
		<br />
		<!-- 用于输出日期的标签 -->
		<%
			Date nowdt = new Date(300000000);
			//将nowdt存入到PageContext里的属性
			pageContext.setAttribute("nowdt", nowdt);
		%>
		<!-- 默认的格式:YYYY-MM-DD HH:mm:ss -->
		<s:date name="#attr.nowdt" />
		<br />
		<!-- format:是一个可选属性 如果指明该属性 则就按照指明的格式输出 -->
		<s:date name="#attr.nowdt" format="dd/MM/yyyy" />
		<br />
		<!-- nice:是一个可选属性,true|false 它用于指定是否输出指定日期和当前日期之间时差-->
		<br />
		<s:date name="#attr.nowdt" nice="true"></s:date>
		<!-- 怎么输出国际化信息呢 可以采用如下方式 -->
		<s:property value="%{getText('helloworld')}" />
		<s:text name="helloworld"></s:text>
		<!--生成一个debug的链接 链接中显示ValueStack Stack Context中的所有的值信息-->
		<s:debug></s:debug>
	</body>
/**以下是struts.xml文件*/
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 

"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<!-- 国际化资源文件的声明  -->
	<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
	<package name="sts" extends="struts-default" namespace="/">
		<!-- 全局的结果 -->
		<global-results>
			<result name="input">/admin/error.jsp</result>
		</global-results>
		<!-- action处理 -->
		<action name="adminLogin" class="edu.saction.AdminAction"
			method="login">
			<result>/admin/main.jsp</result>
		</action>
	</package>

</struts>   


/**以下是globalMessages_zh_CN.properties文件内容*/
helloworld=/u6B22/u8FCE.....


希望以上内容对学员学习struts2的数据标签有所帮助,以上内容属个人上课记录,如要转发请注明出处。愿你有所收获!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值