Strude2 学习之旅

Strude2 学习之旅

第一个项目HelloWorld

创建一个helloworld,需要做四件事:

 

让我们创建一个基本的Struts project,需要添加一个用于存储数据的模型(model),一个显示信息的页面(view),一个扮演控制(controller)的Action class和一个配置文件来将上述联系在一起。

 

Step1 创建Model类MessageStore.java

MessageStore.java

package org.apache.struts.helloworld.model;

 

public class MessageStore {

    private String message;

    public MessageStore(){

        setMessage("Hello Struts User");

    }

    public String getMessage(){

        return message;

    }

    public void setMessage(String message){

        this.message = message;

    }

}

一定要为message设置set和get方法来允许访问私有变量message。

Step2 创建一个Action Class HelloWorldAction.java

我们需要一个Action class来充当控制器(Controller)。Action class会响应一个用户动作(例子中,用户点击一个html链接,发送一个特定的url到servlet容器)。一个或多个Action类的方法将被执行,并返回一个字符串结果,基于结果的值,一个指定的view page(例子中是HelloWorld.jsp)将会呈现。

HelloWorldAction.java

package org.apache.struts.helloworld.action;

import org.apache.struts.helloworld.model.MessageStore;

import com.opensymphony.xwork2.ActionSupport;

 

public class HelloWorldAction extends ActionSupport {

    

    private static final long serialVersionUID = 1L;

    private MessageStore messageStore;

    public String excute() throws Exception{

        messageStore = new MessageStore();

        return SUCCESS;

    }

    public MessageStore getMessageStore() {

        return messageStore;

    }

    public void setMessageStore(MessageStore messageStore) {

        this.messageStore = messageStore;

    }

}

Struts2框架将建立一个HelloWorldAction的对象,执行execute方法来响应用户操作(用户点击链接,发送特定的url到servlet容器)。

这个例子中execute方法创建了一个MessageStore对象然后返回一个SUCCESS字符串。

为了让前台jsp页面中获取到对象信息(MessageStore对象),需要设置set、get方法。

Step3 建立一个View HelloWorld.jsp

HelloWorld.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Hello World!</title>

</head>

<body>

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

<s:debug>debugger</s:debug>

</body>

</html>

s:property标签显示出通过调用HelloWorldAction控制器中getMessageStore 方法所返回来的值。方法返回一个MessageStore的对象。通过.message我们告诉struts2来调取MessageStoregetMessage方法。之后返回一个String字符串,这个字符串就被显示在了s:property标签中。

Step4 添加Struts配置信息到struts.xml中

我们需要映射将url、HelloWorldAction class(controller)和HelloWorld.jsp联系在一起。这个映射告诉Struts2哪个class要响应用户的动作(The URL),哪个方法将要被执行,什么内容将要被展示在View中。

Struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

 

<struts>

<constant name="struts.devMode" value="true" /> //开发模式

<package name="basicstruts2" extends="struts-default">

<action name="index">

<result>/index.jsp</result>

</action>

<action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">

<result name="success">/HelloWorld.jsp</result>

</action>

</package>

</struts>

Step5 建立URL Action

在index.jsp中让我们添加一个Action URL,用户点击后会告诉Struts2执行HelloWorldAction的execute方法,显示在HelloWorld.jsp页面中。

HelloWorld.jsp

<body>

<p><a href="<s:url action='hello'/>">Hello World</a></p> <br>

    <a href="hello.action">nihao</a>

</body>

Step6 建立WAR文件并运行程序

 

Struts2的强大标签库

要使用Struts2的标签库,需要在页面中引入

<%@ taglib prefix="s" uri="/struts-tags" %>

<body>

<p><a href="<s:url action='hello'/>">Hello World</a></p> <br>

    <a href="hello.action">nihao</a><br>

    <s:url action="hello" var="he">

        <s:param name="userName">Bru T</s:param>

    </s:url>

    <p><a href="${he}"> hehe</a></p>

</body>

将action="hello"中的内容存入到变量he中,以便以后使用。

Stack Context:

<p>Get your own personal hello by filling out and submitting this form.</p>

    <s:form action="hello">

          <s:textfield name="userName2" lable="Your name"/>

          <s:submit value="提交"></s:submit>

     </s:form>

Struts 2 property tag

posted @ 2013-11-21 08:40  微风夜明  阅读(165)  评论(0编辑  收藏  举报