美文网首页JSP
学习笔记 Eclipse Struts2 Examples-Us

学习笔记 Eclipse Struts2 Examples-Us

作者: Android那些事儿 | 来源:发表于2017-07-19 20:36 被阅读0次

    文章摘要
    1、Struts 2 url标签
    2、Struts 2表单标签
    3、Struts 2属性标签


    英文文献请点击此处~

    Hello World中,我们添加了一个Struts 2 url标签index.jsp
    来创建一个超链接hello.action。

        <body>
            <h1>Welcome To Struts 2!</h1>
            <p><a href="<s:url action='hello'/>">Hello World</a></p>
        </body>
    

    要在视图页面上使用Struts 2标签,您必须包含一个标签库指令。通常,taglib伪指令是<%@ taglib prefix="s" uri="/struts-tags" %\>。所以所有Struts 2标签的前缀将为“s”。如果要实际读取Struts 2标签TLD文件,您可以在Struts 2核心jar的“META-INF”文件夹中找到它。

    接下来,我们在Hello World的基础上,增加标签的使用案例。

    一、Struts 2 url标签

    Struts 2标签的一个用途是创建到其他Web资源的链接,特别是本地应用程序中的其他资源。

    虽然HTML为创建超链接提供了一个简单的标签,但HTML标签通常需要我们包含重复、冗余信息。HTML标签也不容易访问框架提供的动态数据。

    • 1、Web应用程序中非常常见的用例是链接到其他页面。
      Hello World中,我们hello.action在index.jsp使用Struts 2的URL标签内添加了一个链接。
    <p><a href="<s:url action='hello'/>">Hello World</a></p>
    
    • 2、使用标签,添加参数s:param。
    <s:url action="hello" var="helloLink">
          <s:param name="userName">Bruce Phillips</s:param>
        </s:url>
        <p><a href="${helloLink}">Hello Bruce Phillips</a></p>
    

    二、Struts 2表单标签

    大多数应用程序将使用多个数据输入表单。Struts 2标签使得创建输入表单变得容易。
    每个Struts 2表单标签都有许多属性来模拟正常的HTML表单标签属性。

    要创建窗体的外壳,请使用Struts 2表单标签。action属性设置要提交的操作名称。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE html>
    <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>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>
    

    表单标签,在浏览时,浏览页面:

    页面中的struts 标签,会转化为html:

    <form id="hello" name="hello" action="/using-tags/hello.action;jsessionid=6233ot11na1mtshbr292hu1w" method="post">
      <table class="wwFormTable">
        <tr>
          <td class="tdLabel"><label for="hello_userName" class="label">Your name:</label></td>
          <td class="tdInput"><input type="text" name="userName" value="" id="hello_userName"/></td>
        </tr>
        <tr>
          <td colspan="2">
            <div class="formButton">
              <input type="submit" value="Submit" id="hello_0"/>
            </div>
          </td>
        </tr>
      </table>
    </form>
    

    三、Struts 2属性标签

    • 1、属性标签:
    <s:property value="messageStore.message" />
    

    属性标签最常见的用法是通过调用公共get方法(Action类)“获取”返回的值,然后将该值包含在返回给浏览器的HTML中。

    Hello World教程中所讨论的,messageStore.message指示Struts 2首先调用getMessageStore Action类的方法的值。该方法调用返回一个MessageStore对象。该.message部分指示Struts 2调用MessageStore对象的getMessage方法。该getMessage方法返回一个String,该字符串将包含在返回给浏览器的HTML中。

    Struts 2属性标签的一个非常有用的功能是它会自动将最常见的数据类型(int,double,boolean)转换为其等效字符串。为了演示此功能,我们将一个静态int变量添加到类中HelloWorldAction。

    HelloWorldAction.java

    package wanghailu.apache.struts.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    import wanghailu.apache.struts.model.MessageStore;
    
    public class HelloWorldAction extends ActionSupport {
    
        private static final long serialVersionUID = 1L;
        
    
        private MessageStore messageStore;
        
        private static int helloCount = 0;
        
        public int getHelloCount() {
            return helloCount;
        }
    
        public String execute() throws Exception {
            messageStore = new MessageStore() ;
            
            helloCount++;
            
            return SUCCESS;
        }
    
        public MessageStore getMessageStore() {
            return messageStore;
        }
    
    }
    

    每次调用execute方法时,我们将增加helloCount1.所以将这个代码添加到类的execute方法中HelloWorldAction.

    每当用户单击页面index.jsp上的链接之一(或提交表单)时,将运行execute类的方法,HelloWorldAction并将静态字段helloCount增加1。

    要包含helloCount属性的值,HelloWorld.jsp我们可以使用Struts 2属性标记。

    • 2、使用属性标签显示helloCount值:
    <p>I've said hello <s:property value="helloCount" /> times!</p>
    

    所以即使该getHelloCount方法返回一个整数类型,Struts 2将其转换为String类型并将其放入p标签的正文中。

    请注意,即使helloCount是静态字段,get方法helloCount也不是静态的。对于Struts 2调用getHelloCount方法来获取值helloCount,该getHelloCount方法不能是静态的。

    如果get方法返回的值是一个对象,那么属性标签将导致Struts 2调用该对象的toString方法。当然,您应该始终toString在模型类中覆盖Class Object的方法。将以下toString方法添加到MessageStore类中:

    public String toString() {
       return message + " (from toString)";
    }   
    
    • 3、使用属性调用toString:
    <p><s:property value="messageStore" /></p>
    

    由于getMessageStore的HelloWorldAction类返回MessageStore对象,搭片2将调用toString类的方法MessageStore。该toString方法返回的字符串将显示在浏览器中。

    相关文章

      网友评论

        本文标题:学习笔记 Eclipse Struts2 Examples-Us

        本文链接:https://www.haomeiwen.com/subject/ddkrkxtx.html