實作過程:
一、搭建項目架構
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,如需轉載請自行聯系原作者