struts2官方 中文教程 系列三:使用struts2 标签 tag

时间:2021-01-22 00:59:13

避免被爬,先贴上本帖地址:struts2 官方系列教程一:使用struts2 标签 tag http://www.cnblogs.com/linghaoxinpian/p/6901316.html

本教材假定你已完成了HelloWorld项目,你可以 下载本章节的代码

在上一节教程中,我们在index.jsp中使用 url tag 创建了一个超链接hello.action 这节我们将探索struts2中其它tags

Web应用程序与传统网站不同,Web应用程序可以创建动态响应。为了更方便地引用页面上的动态数据,Struts 2框架提供了一系列标签(tag)。有些标签模仿标准的HTML标签,同时提供了一个value属性,有些标签创建是非标准的但却非常有用。

为了使用struts2 tag,我们必须首先引入一个taglib库指令 通常这个指令是这样的:<%@ taglib prefix="s" uri="/struts-tags" %\> 这样所有的struts2 tag 将会以 “s”为前缀,如果你想阅读一下 struts2 tag的TLD文件,你可以在 Struts 2 core jar里的META-INF 文件夹里找到。

Struts 2 url Tag(tag即标签,以下文章可能会两者都用,都是一个意思)

虽然HTML为创建超链接提供了一个简单的标签:a标签,但是a标签通常包含冗余信息。此外,HTML标签不是很容易就能动态访问框架提供的动态数据。一个常见的例子是链接到其他页面。在系列二中,我们使用 url tag在index.jsp中添加了一个链接到hello.action。有关url tag的更多信息可以参考 url documentation

index.jsp

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Basic Struts Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts !</h1>
<p><a href="<s:url action='hello'/>">Hello World</a></p>
</body>
</html>

一个常见的用例是,URL还需要包含一个查询字符串参数,比如userName。如果要添加一个查询字符串参数,则使用Struts2的 param标记,嵌套在url标记内。

带参数的url tag 

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Basic Struts Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts !</h1>
<p><a href="<s:url action='hello'/>">Hello World</a></p>
<!--url tag-->
<s:url action="hello" var="helloLink">
    <s:param name="userName">零号芯片</s:param>
  </s:url>
  <p><a href="${helloLink}">Hello 芯片</a></p>
</body>
</html>

然后将url tag作为a标签的href属性值,我们将s:url tag分离到它自己的代码块中。我们可以从上面的代码中看出,嵌套在 url tag 中的是param tag,这个 tag允许我们指定一个参数名name:userName,和参数值:零号芯片。注意参数值将会被进行URL编码,在下一个教程中,我们将讨论如何在struts2中访问参数值。

注意url tag中var属性的使用。var属性的值是一个引用,我们可以在代码中使用它来引用创建的url,上面代码中,a标签的href即var属性值。

Struts 2 Form Tag标签

多数Web Application都会使用多表单录入数据,struts2标签(tag)使得创建表单更加容易,我们在index.jsp中添加如下内容,你可以参考Form Tags Reference来了解struts2 form标签的更多详情信息。

 <!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<p><a href="<s:url action='hello'/>">Hello World</a></p>
<!--url tag-->
<s:url action="hello" var="helloLink">
    <s:param name="userName">零号芯片</s:param>
  </s:url>
  <p><a href="${helloLink}">Hello 芯片</a></p>
<!-- form tag -->
<p>Get your own personal hello by filling out and submitting this form.</p>
<s:form action="hello">
<s:textfield name="userName" label="Your name" />
<s:submit value="Submit" />
</s:form>
</body>
</html>

textfield标签会创建一个input文本框(而里面label属性会创建一个label标签),submit标签会创建一个submit提交按钮,如下所示:

struts2官方 中文教程 系列三:使用struts2 标签 tag

来来来,看一下源码是这样子的,为了让我们能看清,特地用sublime格式化了一下代码。

struts2官方 中文教程 系列三:使用struts2 标签 tag

好吧,这看上去是什么鬼!??一脸懵。但有一点,这个form表单是提交给hello.action无疑的。

我们注意到,struts2在form标签里创建了一个table来定位 label、input、submit这三个标签。在后面的教程中,我们将学习如何指定布局(table、CSS)。在下一篇教程中,将介绍如何使用Struts 2来处理这种表单的提交。

Struts 2 property tag标签

在 struts2入门系列二之Hello World  中的HelloWorld.jsp,我们使用了这样的一句话:

<s:property value="messageStore.message" />

一个常用的使用方式是调用Action中的公开getter方法获取值作为value属性的属性值,然后struts2会将这个值替代property标签返回给浏览器。

这里在说一次,就一次咯,正如在Hello World教程中所讨论的,messageStore.message指示Struts2到Action类去第一次调用getMessageStore()方法。该方法调用返回一个MessageStore对象 而 .message部分指示Struts 2调用MessageStore对象的getMessage()方法。getMessage方法返回一个字符串,该字符串将包含在返回到浏览器的HTML中。

Struts2 property标签的一个非常有用的特性是它将自动地将最常用的数据类型(int、double、boolean)转换为字符串等价值。为了演示这个特性,让我们向HelloWorldAction类中添加一个静态int变量。

 package action;

 import com.opensymphony.xwork2.ActionSupport;

 import model.MessageStore;

 public class HelloWorldAction extends ActionSupport {
private MessageStore messageStore; public String execute() {
messageStore = new MessageStore() ; return SUCCESS;
} public MessageStore getMessageStore() {
return messageStore;
}
//添加一个static int变量
private static int helloCount = 0; public int getHelloCount() {
return helloCount;
}
}

每次execute()方法被调用时,我们便让helloCount++

 package action;

 import com.opensymphony.xwork2.ActionSupport;

 import model.MessageStore;

 public class HelloWorldAction extends ActionSupport {
private MessageStore messageStore; public String execute() {
//每次调用helloCount++
helloCount++;
messageStore = new MessageStore() ; return SUCCESS;
} public MessageStore getMessageStore() {
return messageStore;
}
//添加一个static int变量
private static int helloCount = 0; public int getHelloCount() {
return helloCount;
}
}

在HelloWorld.jsp的h2标签下添加property标签

 <!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World!</title>
</head>
<body>
<h2><s:property value="messageStore.message" /></h2>
<!-- 显示helloCount的值 -->
<p>I've said hello <s:property value="helloCount" /> times!</p>
</body>
</html>

这样getHelloCount()方法返回一个整数类型,Struts 2将它转换为类型字符串,并将其放入p标签的主体中。

注意:尽管helloCount是静态的,但它的getter方法不是静态的,对于struts2来说,getter方法必须不能是静态的!!

如果方法返回值是一个object类型,那么就会调用该类型的toString()方法,Of course,我们应该总是重写override模型类的toString()方法。在MessageStore类中添加toString()方法,如下:

public String toString() {
return message + " (from toString)";
}

继续在HelloWorld.jsp中添加如下代码:

<p><s:property value="messageStore" /></p>

运行如下:

struts2官方 中文教程 系列三:使用struts2 标签 tag

我们在本教程中介绍了很多,但是我们只讨论了如何使用Struts 2标签。有关Struts 2标记的更多信息,请参阅Struts 2 Tag Reference

struts2官方 中文教程 系列三:使用struts2 标签 tag的更多相关文章

  1. struts2官方 中文教程 系列十:Form标签

    介绍 在本教程中,我们将探索其他Struts 2表单控件.在前面的教程中,我们介绍了如何使用Struts 2表单(处理表单.表单验证和消息资源文件),我们介绍了如何使用Struts 2 head, f ...

  2. struts2官方 中文教程 系列十四:主题Theme

    介绍 当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...

  3. struts2官方 中文教程 系列八:异常处理

    在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...

  4. struts2官方 中文教程 系列十三:利用通配符选择方法

    介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...

  5. struts2官方 中文教程 系列十二:控制标签

    介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...

  6. struts2官方 中文教程 系列十一:使用XML进行表单验证

    在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让 ...

  7. struts2官方 中文教程 系列九:Debugging Struts

    介绍 在Struts 2 web应用程序的开发过程中,您可能希望查看由Struts 2框架管理的信息.本教程将介绍两种工具,您可以使用它们来查看.一个工具是Struts 2的配置插件,另一个是调试拦截 ...

  8. struts2官方 中文教程 系列七:消息资源文件

    介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...

  9. struts2官方 中文教程 系列五:处理表单

    先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单  即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...

随机推荐

  1. 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳

    <Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...

  2. 【SSH】 之 Struts2环境搭建及简单应用开发

    在上一篇文章中,我们一起了解了一下struts2的工作机制原理,接下来让我们进行一下简单应用的开发 (一)配置环境 1.建立web项目 2.导入jar包 其中struts2中有很多jar包,我们不需要 ...

  3. &lbrack;问题2014A13&rsqb; 解答

    [问题2014A13]  解答 先引入两个简单的结论. 结论 1  设 \(\varphi\) 是 \(n\) 维线性空间 \(V\) 上的线性变换, 若存在正整数 \(k\), 使得 \(\math ...

  4. Linux查看BIOS信息

    http://www.linuxde.net/2013/02/12499.html

  5. codeforces C&period; DZY Loves Sequences

    http://codeforces.com/contest/447/problem/C 题意:给你n个数的序列,然后让你改变其中的一个数,求得最长上升连续序列的长度值. 思路:先从左边开始求出连续递增 ...

  6. 理解session机制

    理解session机制 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序需要为某个客户端的请求创建一个session的时候,服务器首 ...

  7. 设计模式Adapter模式的五分钟

    五分钟一个设计模式.来形容叙述的设计模式的最简单方法.看到许多其他设计模式,请点击五分钟一个设计模式系列 http://blog.csdn.net/daguanjia11/article/catego ...

  8. Virtual Drive Manager V1&period;3&period;2(小巧实用的虚拟光驱)绿色版

    软件名称: Virtual Drive Manager V1.3.2(小巧实用的虚拟光驱)汉化绿色修正版软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 ...

  9. pandas的apply操作

    pandas的apply操作类似于Scala的udf一样方便,假设存在如下dataframe: id_part pred pred_class v_id 0 d [0.722817, 0.650064 ...

  10. Hbase G1 gc 调优最终参数

    export HBASE_HEAPSIZE=16384export HBASE_OFFHEAPSIZE=25gexport HBASE_MASTER_OPTS="$HBASE_MASTER_ ...