zoukankan      html  css  js  c++  java
  • struts2官方 中文教程 系列三:使用struts2 标签 tag

    避免被爬,先贴上本帖地址: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 2 Application - Welcome</title>
      </head>
      <body>
        <h1>Welcome To Struts 2!</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 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>
      </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标签的更多详情信息。

     1 <!DOCTYPE html>
     2 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
     3 <%@ taglib prefix="s" uri="/struts-tags" %>
     4 <html>
     5   <head>
     6     <meta charset="UTF-8">
     7     <title>Basic Struts 2 Application - Welcome</title>
     8   </head>
     9   <body>
    10     <h1>Welcome To Struts 2!</h1>
    11      <p><a href="<s:url action='hello'/>">Hello World</a></p>
    12      <!--url tag-->
    13     <s:url action="hello" var="helloLink">
    14       <s:param name="userName">零号芯片</s:param>
    15   </s:url>
    16   <p><a href="${helloLink}">Hello 芯片</a></p>
    17     <!-- form tag -->
    18     <p>Get your own personal hello by filling out and submitting this form.</p>
    19     <s:form action="hello">
    20           <s:textfield name="userName" label="Your name" />
    21           <s:submit value="Submit" />
    22     </s:form>
    23   </body>
    24 </html>

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

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

    好吧,这看上去是什么鬼!??一脸懵。但有一点,这个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变量。

     1 package action;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 import model.MessageStore;
     6 
     7 public class HelloWorldAction extends ActionSupport {
     8     private MessageStore messageStore;
     9 
    10     public String execute() {
    11         messageStore = new MessageStore() ;
    12         
    13         return SUCCESS;
    14     }
    15 
    16     public MessageStore getMessageStore() {
    17         return messageStore;
    18     }
    19     //添加一个static int变量
    20     private static int helloCount = 0;
    21     
    22     public int getHelloCount() {
    23         return helloCount;
    24     }
    25 }

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

     1 package action;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 import model.MessageStore;
     6 
     7 public class HelloWorldAction extends ActionSupport {
     8     private MessageStore messageStore;
     9 
    10     public String execute() {
    11         //每次调用helloCount++
    12         helloCount++;
    13         messageStore = new MessageStore() ;
    14         
    15         return SUCCESS;
    16     }
    17 
    18     public MessageStore getMessageStore() {
    19         return messageStore;
    20     }
    21     //添加一个static int变量
    22     private static int helloCount = 0;
    23     
    24     public int getHelloCount() {
    25         return helloCount;
    26     }
    27 }

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

     1 <!DOCTYPE html>
     2 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
     3 <%@ taglib prefix="s" uri="/struts-tags" %>
     4 <html>
     5   <head>
     6     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7     <title>Hello World!</title>
     8   </head>
     9   <body>
    10     <h2><s:property value="messageStore.message" /></h2>
    11     <!-- 显示helloCount的值 -->
    12     <p>I've said hello <s:property value="helloCount" /> times!</p>
    13   </body>
    14 </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>

    运行如下:

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

  • 相关阅读:
    从0开始学习ssh之搭建环境
    yii2-user 一个好用的用户扩展
    yii2下使用支付宝
    SQL迅速增加表中记录语句
    浅谈Java分页技术
    浅谈JavaWEB入门必备知识之Servlet入门案例详解
    CSS控制之IE常见BUG及解决方案
    Java-Swing编程之对话框案例详解
    浅谈Java工具类CommonUtils的使用
    浅谈Log4j
  • 原文地址:https://www.cnblogs.com/linghaoxinpian/p/6901316.html
Copyright © 2011-2022 走看看