您的位置:首页 > 编程语言 > Java开发

struts2常用的标签介绍

2014-03-12 21:06 471 查看
一:Struts2框架的标签库可以分为以下三类:

    1.用户界面标签(UI标签):主要用来生成HTML元素的标签。

(1)表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。

(2)非表单标签:主要用于生成页面上的tree,Tab页等。

   2.非用户界面标签(非UI标签):主要用于数据访问,逻辑控制。

(1)数据访问标签:主要包含用于输出值栈(ValueStack)中的值,完成国际化等功能的标签。

(2)流程控制标签:主要包含用于实现分支,循环等流程控制的标签。

   3.AJAX标签:用于支持Ajax效果

   二:Struts2标签的使用

1.在struts2-core-2.3.16.jar压缩文件的META-INF目录下找到Struts-tags.tld文件,这个文件里定义了Struts2的标签。如图:

       


 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.要在jsp中使用Struts2的标签,先要指明标签的引入。通过jsp的代码的顶部加入以下的代码:

                   < 
%@taglib prefix="s" uri="/Struts-tags" %>



                     

 

 

 

 

 

 

 

 

 

 

 

 

     具体使用案例观看我写的“在线考试系统”博客

三:Struts2标签语法

Struts2标签的属性按照下列的三个规则进行计算。

(1)所有的字符串属性类型都会解析“%{…}”这样的语法。

(2)所有的非字符属性类型都不会被解析,而是直接被看作一个OGNL表达式进行求值

(3)对于第二个规则的例外情况是,如果非字符串属性使用了“%{…}”语法,那么%{…}将被忽略,花括号中的内容将作为表达式计算。

四:Struts2通用标签

Struts2中通用标签可以分为二类:控制标签和数据标签。

        我在此先写一个User类

package model;

public class User {

private String name;
private int age;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

}

创建MessageAction类

package action;

import model.User;
import com.opensymphony.xwork2.ActionSupport;

public class MessageAction extends ActionSupport {
private String message;
private User user;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

@Override
public String execute() throws Exception {
user = new User();
user.setName("csdn");
user.setAge(22);
message = "Hello!";
return SUCCESS;
}

public String login() {
boolean b = true;
if (user.getName() == null || user.getName().trim().equals("")) {
addFieldError("name", "用户名不得为空");
b = false;
}
if (user.getAge() <= 0) {
addFieldError("age", "年龄不合法");
b = false;
}
if (b) {
return SUCCESS;
}
return INPUT;
}
}


配置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>

<package name="User" namespace="/user" extends="struts-default">
<action name="message" class="action.MessageAction" >
<result name="success">
/index.jsp
</result>
</action>

<action name="login" class="action.MessageAction" method="login" >
<result name="success">
/index.jsp
</result>
<result name="input">
/lodin.jsp
</result>
</action>
</package>
</struts>


配置web文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>message</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


创建页面index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
</body>
</html>

 

数据标签

1.property标签:

标签用于输出值栈中的对象的属性(property)值,使用value属性来指定要输出的对象属性,如果没有指定value属性,那么默认输出栈顶对象

    property标签属性






1<s:property value="message" />
<br />
2<s:property value="'message'" />
<br />
3<s:property value="%{message}" />
<br />
4<s:property value="%{csdn}" default="csdn"/>
<br />

输出结果:



输出结果看

第一种和第三种方法取出MessageAction.java类中的赋给message的hello值(即栈值),

第三种方法取的是message的name值,

但是如果第四种方法不给出缺省的值。不会输出任何的值
set标签的使用

Set标签将一个值赋给指定范围内变量。Set标签在某些情况下是比较有用的,例如在页面中多次引用一个复杂的表达式,我们可以将这个表达式赋给一个变量,然后直接引用变量。带来的好处就是:

1.提升了性能(表达式的计算只有一次)

2.提高了代码的可读性。



<s:set name="xxx" value="user.name" />
1<s:property value="#session.xxx" /><br/>
2<s:property value="#request.xxx" /><br/>
3<s:property value="xxx" /><br/>
4<s:property value="#xxx" />
</s:set>

输出结果:



bean标签和param标签

¨bean标签用于实例化一个JavaBean对象(必须遵照JavaBean规范),bean标签的标签体内可以包含多个param标签,用于设置Bean的属性(必须有相应的setter方法)。如果指定了id属性(Struts2.2.1.1已经不建议使用,使用var属性替代),则创建的Bean实例将被放入到OgnlContext中。

注意:

id属性是可选的,无论是否指定id属性,bean标签创建的JavaBean实例都会被压入到值栈的顶部,在bean标签内部可以直接访问创建的对象,无须使用”#”标记,当bean标签结束的时候,bean标签创建的实例将从值栈中删除。

如果指定了id属性,那么bean标签创建的JavaBean实例还将被放到OgnlContext中,这样在bean标签的外部,也可以访问创建的对象了,不过此时就要使用”#”标记了。

 


 param标签被用作其他标签的子标签,用于为其他标签提供参数



<s:bean name="model.User">
<s:param name="name" value="'csdn'"/>
<s:param name="age" value="'22'"/>
<s:property value="name"/>
<s:property value="age"/></s:bean>

输出结果:



include标签

    include标签类似于JSP的<jsp:include>标签,用于包含一个Servlet或JSP页面。include标签的标签体内可以包含多个param标签,用于向被包含的页面传递请求参数

  


<s:include value="include.jsp">
<s:param name="name" value="csdn"/>
<s:param name="age" value="22"/>
</s:include>


 控制标签

  用于在呈现结果页面时控制程序的执行流程,根据程序执行的状态输出不同的结果

 

控制标签包括下列标签:

1.if:用于控制选择输出。

2.elseif:同if标签结合使用,用来控制选择输出。

3.else:同if标签结合使用,用来控制选择输出。

4.append:用来将多个集合拼接为一个新的集合。

5.generator:为一个字符串解析器,用来将一个字符串解析为一个集合。

6.iterator:迭代器,用来迭代输出集合数据。

7.merge:用来将多个集合拼接为一个新的集合,同append有所区别。

8.sort:用来对集合排序。

9.subset:用来截取集合的部分集合,开成新的集合子集合。

if/elseif标签属性test:为必填属性,是一个Boolean类型值,决定是否显示if标签内容。该标签标准格式如下:

<s:if test=“表达式”>

     ……..

</s:if>

<s:elseif test=“表达式”>

     ……..

</s:elseif>

<s:else>

     ………..

</s:else>

 案例:

<s:set name="age" value="'61'"/>
<s:if test="#age>60">      老人      </s:if>
<s:elseif test="#age>40">       中年人      </s:elseif>
<s:elseif test="#age>20">      青年人      </s:elseif>
<s:else>      少年      </s:else>


iterator(迭代标签)

用于遍历集合(java.util.Collection)List,Map,数组或枚举值(java.util.iterator)



案例:

<s:iterator value="{'java','jsp','hibernate','struts2','html'}" id="skill" status="status">
<s:property value="#status.odd"/><br/>
<s:if test="#status.odd">
<s:property value="skill"/><br/>
</s:if>
<!--下标  -->
<s:property value="#status.index"/>
<!-- 页面显示序号 -->
<s:property value="#status.count"/>
</s:iterator>


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java web开发 struts2