WebWork2 快速起步

简介:
实现过程
 
一、搭建项目框架
 
1、通过IDEA工程向导生成如下的项目框架。
 
/wwkstudy
├─build
├─classes
│  └─com
│      └─lavasoft
├─doc
├─lib
├─META-INF
├─src
│  └─com
│      └─lavasoft
├─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>
        <servlet-name>webwork</servlet-name>
        <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>
        <tr>
            <td>用户名:</td>
            <td><input type="text"
                       name="userName"
                       value="<ww:property value="userName"/>"/>
            </td>
        </tr>
        <tr><td><input type="submit" value="提交"/></td></tr>
    </table>
</form>
</body>
</html>
 
编写向用户问好的hello.jsp:
 
<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ taglib prefix="ww" uri="webwork" %>
<html>
<head><title>Simple jsp page</title></head>
 
<body>
<ww:property value="message"/>
</body>
</html>
 
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
 
配置后的内容如下:
<xwork>
    <include file="webwork-default.xml"/>
 
    <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>
</xwork>
 
当返回SUCCESS(值为success)时候,转向/hello.jsp。
当返回INPUT(值为input)时候,转向/input.jsp。
 
三、测试
 
打包,放入tomcat的webapp目录下面,启动tomcat,访问: [url]http://localhost:8081/webworksty/SayHello.action[/url],如下图:
 
 
 
输入“Java”后,提交:
 
 
 
重新输入“userName”,提交后则出现:
 
再次尝试不输入或者输入空格、多个空格,均不能返回问好页面。说明程序达到预期效果。
 
这个程序很简单,学过struts的一看就明白!
 


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/39919,如需转载请自行联系原作者
相关文章
|
3月前
|
JSON 前端开发 Java
都说Spring MVC面试问烂了,可是很多人工作三年还是不懂!
大家找工作时,涉及框架面试问题时,常会被问及框架的原理及工作流程。所以本 Chat 通过带着大家一起来自己写一个 Struts2 框架(同理SpringMVC框架 ),亲身体验下框架的实现流程及工作原理!
31 0
|
29天前
|
XML Java 数据格式
注解之光:揭秘Spring注解发展的演进历程
注解之光:揭秘Spring注解发展的演进历程
24 0
注解之光:揭秘Spring注解发展的演进历程
|
5月前
|
Java 编译器
SpringMVC之定义注解强势来袭!!!
SpringMVC之定义注解强势来袭!!!
|
9月前
|
XML 设计模式 JSON
解密SpringMVC:探秘常用注解,让你的Java应用飞速起航!
解密SpringMVC:探秘常用注解,让你的Java应用飞速起航!
SpringBoot中的内容协商,颠覆你的认知
本文将介绍 SpringMVC 中内容协商,可能有朋友听过,没听过的估计觉得很陌生,不管怎么样,先告诉你一点,这篇是非常重要的一个知识点,一定不要错误,坚持看完,一定会有大量收获,
|
开发框架 监控 Java
Spring在项目中的地位
Spring在项目中的地位
|
XML JSON 前端开发
【转载】【尚硅谷】【SpringMVC】学习笔记2
【转载】【尚硅谷】【SpringMVC】学习笔记2
81 0
【转载】【尚硅谷】【SpringMVC】学习笔记2
|
前端开发 JavaScript IDE
【转载】【尚硅谷】【SpringMVC】学习笔记1
【转载】【尚硅谷】【SpringMVC】学习笔记
192 0
|
Web App开发 JSON 前端开发
【转载】【尚硅谷】【SpringMVC】学习笔记3
【转载】【尚硅谷】【SpringMVC】学习笔记3
80 0
【转载】【尚硅谷】【SpringMVC】学习笔记3
|
缓存 前端开发 JavaScript
乐视开放平台技术架构-servlet和spring mvc篇
客户层ope-web采用的是标准的spring mvc架构。定义了三个视图解析器
乐视开放平台技术架构-servlet和spring mvc篇