struts2常用的标签介绍

一:Struts2框架的标签库可以分为以下三类:

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

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

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

   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>




 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值