Struts2标签

Struts2通用标签

Struts2中通用标签可以分为二类:控制标签和数据标签。控制标签用于呈现页面时控制执行流程,数据标签用于访问值栈中的数据。

数据标签:用于访问ActionContext和值栈中的数据。数据标签包括:

property    set push    param  bean action include

url a i18n text date debug

控制标签:用于在呈现结果页面时控制程序的执行流程,根据程序执行的状态输出不同的结果,控制标签包括下列标签:

if/elseif/else   iterator append     merge

generator   subset sort

数据标签-----property标签:

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

数据标签-----set标签:

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

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

提高了代码的可读性。

创建User类:

package model;

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

}

创建MessageAction类:

package action;

import model.User;

import com.opensymphony.xwork2.ActionSupport;

public class MessageAction extends ActionSupport {
	private User user;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		user=new User();
		user.setName("csdn");
		user.setAge("20");
		return SUCCESS;
	}
}

配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  
  <package name="hello" namespace="/hello" extends="struts-default">
    <action name="message" class="action.MessageAction">
    	<result name="success">/index.jsp</result>
   </action>
  </package>
</struts>	

Index页面:

<%@ 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>
    <title>My JSP 'index.jsp' starting page</title>
  </head> 
  <body>
    <s:set name="xxx" value="user.name"/>
    <s:property value="xxx"/>
    <s:property value="#request.xxx"/>    
  </body>
</html>

结果:

csdn csdn

数据标签-----param标签:

param标签被用作其他标签的子标签,用于为其他标签提供参数,例如:为bean标签和include标签提供参数

当使用param标签时, 参数的值可以通过value属性给出,也可以在标签体中给出(开始标签和结束标签之间的文本)。这二种用法有一些区别。我们看下面的例子:

<param name=“color”>blue</param>    <!--  (1) -->

<param name=“color” value=“blue” />   <!--  (2) -->

在第(1)种情形中,参数值将作为java.lang.String对象(即字符串)被放入栈中;

在第(2)种情形中,参数值将作为表达式进行计算,如果blue不存在,则color参数的值为null。

在第(1)种情形中,要为color指定字符串值,可以写为:

<param name=“color” value=“ ‘ blue ‘ ”/>或者<param name=“color” value=“%{‘ blue ‘ }“/>

使用单引号包围字符串,表明这是一个字符串常量

数据标签-----bean标签:

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标签的外部,也可以访问创建的对象了,不过此时就要使用”#”标记了。

index页面:

<%@ 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>
    <title>My JSP 'index.jsp' starting page</title>
  </head> 
  <body>
    <s:bean name="model.User">
    <s:param name="name" value="'csdn'"/>
    <s:param name="age" value="'20'"/>
    <s:property value="name"/>
    <s:property value="age"/>
    </s:bean>
  </body>
</html>

结果:

csdn 20 

数据标签-----include标签:

在jsp2.jsp中,我们使用JSP的EL表达式来获取传的请求参数。

#parameters引用的实质是一个Map对象,并不等同于HttpServletRequest对象。

在包含页面时,如果页面中有中文,将会出现乱码,要解决这个问题,可以在Struts.xml文件中配置Struts.i18n.encoding属性,如下:

<constant name=“Struts.i18n.encoding” value=“gbk” />

Index页面:

<%@ 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>
    <title>My JSP 'index.jsp' starting page</title>
  </head> 
  <body>
    <s:include value="include.jsp">
    <s:param name="name" value="'csdn'"/>
    <s:param name="age" value="'22'"/>
    </s:include>
    
  </body>
</html>

Include页面:

<%@ 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>
   
    <title>My JSP 'include.jsp' starting page</title>

  </head>
  
  <body>
    ${param.name }
    ${param.age }
  </body>
</html>

结果:

csdn 22









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值