struts 2的标签非常容易使用,只要在页面中导入 <%@ taglib uri="/struts-tags" prefix="s" %>就可以了,而struts 2标签库根据用途不同可以分为5类:
1、数据标签:主要用于输出值栈中的值,或者将值输入到值栈中。
1.1、<s:action>标签:用于直接在页面调用一个action请求,属性如下:
id:属性可选,用于作为该action的应用标志id。
name:属性必选,用于指定该标签调用哪个action。
namespace:属性可选,指定该标签调用的action所在的namespace。
executeResult:属性可选,指定是否将action的处理结果页面包含进来,true为包含,false不包含,默认情况下为false。
ignoreContextParam:属性可选,指定该页面中的请求参数是否需要传入调用的action,false传入,true不传,默认为false。
1.2、<s:property>标签:输出value属性指定的值,属性如下:
default:属性可选,如果输出的属性值是null,则显示default属性指定的值。
escape:属性可选,指定是否经过HTML的转义,默认为true。
value:属性可选,指定需要输出的属性值,如果没有指定则默认输出值栈栈顶的值。
1.3、<s:param>标签:主要用于为其他标签提供参数,属性如下:
name:属性可选,指定需要设置的参数的参数名。
value:属性可选,指定需要设置的参数的参数值。使用方式如下:
第一种方式
<s:param name="参数名">参数值</s:param>
<s:param name="people">zhang3</s:param>
第二种方式
<s:param name="参数名" value="参数值"/>
<s:param name="people" value="zhang3"/>
两段代码的意思并不一样,前者是指定一个名为“people”的参数,参数值为“zhang3”字符串。而后者是指定一个名为“people”的参数,参数值为“zhang3”对象的值,如果“zhang3”对象不存在,则“people”参数的值为null,如果想要指定“people”参数的值为“zhang3”字符串,则需要把值加上引号,代码如下:
<s:param name="people" value="'zhang3'"/>
1.4、<s:bean>标签:用于创建一个JavaBean实例。属性如下:
name:属性必选,用来指定需要实例化的JavaBean的实现类。
id:属性可选,指定该属性后,该JavaBean实例会被放入Stack Context中,从而允许直接通过id属性来访问该JavaBean实例。下面给出一部分代码:
Student类,属性name,有setter和getter方法。
package org.user;
public class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<s:bean name="org.user.Student" id="stu">
在bean标签内部可以直接输出:<br>
<s:param name="name">zhang3</s:param>
<!-- 还有其他赋值的方式,前面说过了,可以自己编写代码测试一下。 -->
<s:property value="name"/>
</s:bean>
在bean标签外表取值可以利用id:
<s:property value="#stu.name"/>
</body>
</html>
1.5、<s:date>标签:用于格式化输出日期,属性如下:
format:属性可选,指定了该属性后,将根据该属性指定的格式来格式化日期。
nice:属性可选,用于指定是否输出指定日期和当前日期之间的时差。默认为false,不输出。
name:属性必选,指定要格式化的日期值。
id:指定引用该元素的id。
1.6、<s:debug>标签:略过,个人感觉有debug调试。
1.7、<s:set>标签:将某个值放入指定的范围,属性如下:
id:属性可选,为这个引用的元素赋一个id值。
name:属性必选,指定重新生成的新变量的名字。
scope:属性可选,指定新变量存放的位置,该属性有5个值,分别是application、session、request、page、action,该属性默认值是action。
value:若为未指定该属性,则将值栈栈顶的值赋予新变量。
<s:set name="java EE" value="'Struts 2教程'"/>
<s:property value="java"/>
2、控制标签:主要用于控制页面流程。
2.1、<s:if>/<s:elseif>/<s:else>标签:用于分支控制,与if、elseif、else在java中的用法一样。
2.2、<s:iterator>标签:对集合进行迭代,属性如下:
value:属性可选,指定被迭代的集合,通常由OGNL表达式指定,如果没有指定该属性,则使用值栈栈顶的集合。
id:属性可选,指定集合元素的id。
status:属性可选,指定迭代时的IteratorStatus实例,通过该实例可以判断当前迭代元素的属性,该实例包含以下方法:
int getCount():返回当前迭代了几个元素。
int getIndex():返回当前迭代元素的索引。
boolean isEven():返回当前迭代元素的索引元素是否是偶数。
boolean isOdd():返回当前迭代元素的索引元素是否是奇数。
boolean isFirst():返回当前迭代元素是否是第一个元素。
boolean isLast():返回当前迭代元素是否是最后一个元素。部分代码如下:
<s:iterator value="{'语文','数学','英语','物理'}" id="book" status="st">
<s:property value="book"/>
当前迭代索引为:<s:property value="#st.getIndex()"/>
当前迭代了的元素个数为:<s:property value="#st.getCount()"/><br>
</s:iterator>
2.3、<s:append>标签与<s:merge>标签:将集合进行拼接,但是二者拼接方式不一样前者的新集合是:集合1、集合2...,后者是:集合1元素1、集合2元素1、集合1元素2、集合2元素2...。属性:id,用来指定拼接之后的新集合的引用id。
一下三者略过,因为稍有基础就能理解运用,如果有需要请在评论处说明,我会更新文章。
3、表单标签:主要用于生成HTML页面的表单元素。
4、非表单标签:主要用于生成页面上的树、Tab页标签等。
5、Ajax标签:主要用于支持Ajax效果。