Struts2标签

来源:互联网 发布:网络ip地址怎么修改 编辑:程序博客网 时间:2024/06/06 12:33

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;}@Overridepublic String execute() throws Exception {// TODO Auto-generated method stubuser=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