【Web开发】Struts2标签使用——数据标签

这里写图片描述

数据标签:用于实现获得或访问各种数据的功能

1.action标签

(1)executeResult:可选属性,为一个Boolean类型值,用来指定是否显示action的执行结果,默认值为false,即不显示。
(2)id:可选属性,用来引用该action的标识。
(3)name:必填属性,用来指定该action的实现类位置。
(4)namespace:可选属性,用来指定该标签调用的action所在的命名空间。
(5)ignoreContextParams:可选属性,用来指定该页面中的请求参数是否需要传入调用的action,默认值为false,即将本页面的请求参数传入被调用的action。

TagAction.java

public class TagAction extends ActionSupport{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String execute()throws Exception{
        return "ok";
    }
    public String login() throws Exception{
        ServletActionContext.getRequest().setAttribute("name", getName());
        return "ok";
    }
}

struts.xml

<include file="struts-default.xml"/>
<package name="ch4" extends="struts-default" namespace="/tags">
    <action name="tag1" class="ch4.TagAction">
        <result name="ok">succ.jsp</result>
    </action>
    <action name="tag2" class="ch4.TagAction" method="login">
        <result name="ok">loginSucc.jsp</result>
    </action>
</package>

succ.jsp

<body>
调用Action!!
</body>

loginSucc.jsp

<body>
<s:property value="#request.name"/>登录成功!
</body>

调用Action的界面

<body>
<s:action name="tag1" executeResult="true" namespace="/tags" /><hr/>
<s:action name="tag2" executeResult="true" ignoreContextParams="false" namespace="/tags" /><hr/>
<s:action name="tag2" executeResult="true" ignoreContextParams="true" namespace="/tags" /><hr/>
<s:action name="tag2" executeResult="false" ignoreContextParams="false" namespace="/tags" /><hr />
<s:property value="#request.name"/>
</body>

在url后输入?name=aa
action使用测试

2.bean标签

用于在当前页面中创建JavaBean实例对象,可嵌套param标签,为该JavaBean实例化属性值
name:必选属性,用来指定可以实例化JavaBean的实现类
id:可选属性,指定后可通过id访问该实例。

这里就用了之前写的Book.java

当需要输入字符串时,需加 ‘ ’;
price是double,这里故意输错,发现并没有输出,如果将图书单价的value改为23.4,会正常输出。
图书数量是int型,没有赋值,所以输出了int的初值0。

<s:bean name="ch3.Book" id="book">
    <s:param name="name" value="'Book1'" />
    <s:param name="price" value="'Book1'" />
</s:bean>
图书名称:<s:property value="#book.name"/>
图书单价:<s:property value="#book.price"/>
图书数量:<s:property value="#book.num"/>

bean测试

3.debug标签

用于辅助调试,通过该标签可以在页面上生成一个链接,单击链接可查看当前ValueStack和Stack Context中的所有信息。

4.include标签

用于将Jsp或Servlet等资源内容包含到当前界面中,可以嵌套param标签,实现将当前页面的参数传给被包含的页面。
value:必选属性,用于指定被包含的JSP或Servlet等资源文件。
id:可选属性,用于指定该标签的引用ID。

includefile.jsp

<h3>被包含界面</h3>
传递的值为:<% out.println(request.getParameter("user")); %>

includeTag.jsp

<h1>这里是主界面</h1>
<s:include value="includefile.jsp">
    <s:param name="user" value="'Hello'"/>
</s:include>

include标签测试

5.param标签

通常与其他标签结合使用,用于给其他标签提供参数。
如果要传递字符串,需要加单引号。
两种用法:

<s:param name="user">Hello</param>
<s:param name="user" value="'Hello'"/>

6.property标签

用于输出value属性指定的值
default:用于指定属性值为null时输出的值。
escape:用于指定是否显示标签代码
value:用于指定要输出的属性值
id:用于指定该元素的引用ID。

前面已使用多次,所以就不举例了。

关于value何时用#何时不用#,请阅读记录:s:property 标签——value属性使用事项

7.set标签

用于定义一个新的变量,并把一个已有的变量值复制给该新变量,同时可将该新变量放到指定范围内,例如application范围和session范围等。
name:用于定义新变量的名字。
scope:用于定义新变量的使用范围,可选值有application、session、request、response、page和action。
value:用来定义将要赋给新变量的值。
id:用来定义该元素的引用ID。

<s:set name="testName" value="'Struts 2'"/>
testName:<s:property value="#testName"/>
<h3>设置一个新变量</h3>
<s:bean name="ch3.Book" id="book">
    <s:param name="name">Book</s:param>
</s:bean> 
<s:set value="#book" name="user" scope="action"/>
<s:property value="#attr.user.name"/>
<s:set value="#book" name="user" scope="session"/>
<s:property value="#session.user.name"/>

首先给一个新的变量赋值并输出,再定义一个Book实例,并放到action和session范围内并输出。
#attr 是ognl表达式,用于访问上下文数据的,按照page->request->session->application的顺序搜索。
set标签测试

7.url标签

用来生成一个URL地址,可以通过嵌套param标签来为URL指定发送参数。
action:用来指定一个action作为URL的地址值,如果没有给出,那么url使用value的值来指定action,如果都有,使用value的值
value: 用来指定URL的地址值
includeParams: 该属性有三个值:none get all,默认值为get。当该属性值为get时,该url会将访问其所在jsp的请求的所有get方法的参数添加到自身来当它的属性值,为all时将get和post的的参数值全部添加到自身。一般我们并不需要额外的参数,所以定义为none
namespace:用于指定命名空间
method:用来指定调用Action的方法名
encode:用于指定是否编码请求参数
includeContext:用于指定是否将当前上下文包含在URL的地址值中。
id:用于指定URL元素的引用ID。

<s:url action="showBook">
    <s:param name="name" value="'Book1'"/>
</s:url><br>
<s:url value="http://localhost:8080/Test/ch4/urlTag.jsp">
    <s:param name="name" value="'Book2'"/>
</s:url><br>
<s:url includeParams="get">
    <s:param name="name" value="%{'Book3'}"/>
</s:url>

url标签测试
两种value赋值写法作用相同

9.date标签

用于按指定格式输出一个日期,还可以计算指定时间到当前的时间的时差。
format:用于指定日期格式化
nice:用于指定是否输出指定时间与当前时间的时差,默认值为false,即不输出时差。
关于将英文配置成中文请参考 【转】< s:date >使用nice 属性 实现 ‘XX分钟前’ 日期显示

name:用于指定要被格式化输出的日期值。
id:用于指定该元素的引用ID。

format和nice属性不能同时指定,同时指定时则format属性失效

<h3>date使用</h3>
<s:bean name="java.util.Date" id="currentDate"></s:bean>
<ul><li>日期格式</li><li>日期</li></ul>
<ul><li>Year/Month/Day</li><li><s:date name="#currentDate" format="yyyy/MM/dd"/></li></ul>
<ul><li>Year/Day/Month</li><li><s:date name="#currentDate" format="yyyy/dd/MM"/></li></ul>
<ul><li>Day/Month/Year</li><li><s:date name="#currentDate" format="dd/MM/yyyy"/></li></ul>
<ul><li>Nice Date</li><li><s:date name="#currentDate" nice="true"/></li></ul>

date标签测试

猜你喜欢

转载自blog.csdn.net/tjj1998/article/details/80550673