天天看點

WebWork2 快速起步

實作過程:

一、搭建項目架構

1、通過IDEA工程向導生成如下的項目架構。

/wwkstudy

├─build

├─classes

│  └─com

│      └─lavasoft

├─doc

├─lib

├─META-INF

├─src

├─WEB-INF

└─webroot

2、準備需要的資源包,放入lib目錄.

commons-fileupload.jar

commons-logging.jar

cos-multipart.jar

libraries.txt

mail.jar

ognl.jar

oscore.jar

pell-multipart.jar

velocity-dep.jar

webwork-2.1.7.jar

xwork.jar

webwork2目前最新版本是2.2.6,裡面的包太多了。在lib下沒有了core檔案夾(存放核心包),但2.1.7還有。于是我就拿老版本的2.1.7來做這個例子。

3、修改/WEB-INF/web.xml内容為:

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

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

<web-app>

    <servlet>

        <servlet-name>webwork</servlet-name>

        <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>

    </servlet>

    <servlet-mapping>

        <url-pattern>*.action</url-pattern>

    </servlet-mapping>

    <taglib>

        <taglib-uri>webwork</taglib-uri>

        <taglib-location>/WEB-INF/lib/webwork-2.1.7.jar</taglib-location>

    </taglib>

</web-app>

4、在/src目錄下建立xwork.xml檔案:

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN"

<xwork>

    <include file="webwork-default.xml"/>

</xwork>

5、在/src目錄下建立webwork.properties檔案:

webwork.tag.altSyntax = true

這樣以來,一個完成WebWork2架構就搭建好了。

二、編寫代碼

1、編寫JSP

編寫輸入使用者名的input.jsp:

<%@ page contentType="text/html;charset=GBK" language="java" %>

<%@ taglib prefix="ww" uri="webwork" %>

<html>

<head><title>Simple jsp page</title></head>

<body>

<form action="SayHello.action">

    <table>

        <ww:if test="fieldErrors['userName']!=null">

            <tr>

                <td colspan="2">

                    <font color="red">

                        <ww:property value="fieldErrors['userName']"/>

                    </font>

                </td>

            </tr>

        </ww:if>

        <tr>

            <td colspan="2">請輸入如下資訊:</td>

        </tr>

            <td>使用者名:</td>

            <td><input type="text"

                       name="userName"

                       value="<ww:property value="userName"/>"/>

            </td>

        <tr><td><input type="submit" value="送出"/></td></tr>

    </table>

</form>

</body>

</html>

編寫向使用者問好的hello.jsp:

<ww:property value="message"/>

2、編寫Action

public class SayHelloAction extends ActionSupport {

    private String message;

    private String userName;

    public String execute() throws Exception {

        if (userName == null || "".equals(userName.trim()) || "userName".equalsIgnoreCase(userName)) {

            addFieldError("userName","使用者名不能為空、空格或者userName!");

            return INPUT;

        }

        message = userName + ",你好!";

        return SUCCESS;

    }

    public String getMessage() {

        return message;

    public void setMessage(String message) {

        this.message = message;

    public String getUserName() {

        return userName;

    public void setUserName(String userName) {

        this.userName = userName;

}

這個Action處理使用者輸入資訊,并傳回問候,其中的私有成員userName是頁面輸入域的使用者名。當校驗成功時候傳回狀态SUCCESS,否則傳回INPUT。

說明:WebWork2也有Action,作用和Struts 1.2中Action是一樣的。都起一個控制器的作用。并且都有一個execute方法。但是與struts不同的是,這個方法中已經沒有了request、response、actionForm這些東西。完全是一個0參數的方法。

WebWork2的Action在開發上需要實作來自xwork的接口Action或者繼承ActionSupport,實際上ActionSupport已經實作了Action接口。下面是Action接口的定義,裡面有一些常量。

public interface Action {

    java.lang.String SUCCESS = "success";

    java.lang.String NONE = "none";

    java.lang.String ERROR = "error";

    java.lang.String INPUT = "input";

    java.lang.String LOGIN = "login";

    java.lang.String execute() throws java.lang.Exception;

3、在xwork.xml中配置Action

配置後的内容如下:

    <package name="default" extends="webwork-default">

        <default-interceptor-ref name="completeStack"/>

        <action name="SayHello" class="com.lavasoft.SayHelloAction">

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

            <result name="input">/input.jsp</result>

        </action>

    </package>

當傳回SUCCESS(值為success)時候,轉向/hello.jsp。

當傳回INPUT(值為input)時候,轉向/input.jsp。

三、測試

輸入“Java”後,送出:

重新輸入“userName”,送出後則出現:

再次嘗試不輸入或者輸入空格、多個空格,均不能傳回問好頁面。說明程式達到預期效果。

這個程式很簡單,學過struts的一看就明白!

本文轉自 leizhimin 51CTO部落格,原文連結:http://blog.51cto.com/lavasoft/39919,如需轉載請自行聯系原作者