步骤1 :
建立一个Maven的Web项目
注意:
src/main/java和src/main/resources可能需要手动添加,如果遇到无法手动添加的可以在build path里面去掉已经存在的,然后手动添加。
步骤2:
在pom.xml中引入jar
<dependency>
<groupId>opensymphony</groupId>
<artifactId>webwork</artifactId>
<version>2.2.5</version>
</dependency>
步骤3:
配置web.xml,配置 WebWork 的前端控制器 FilterDispatcher。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
注意:
关于 Action 请求 URL 的后缀,在一般的 Web 框架中,前端控制器会将特定后缀的请求 URL 映射到对应的 Action 请求中。而我们这里的前端控制器会接受任意的请求,但它默认是将.action 结尾的 URL 映射为 WebWork 的 Action 请求。我们可以在 webwork.properties 文件中,设置我们自己的后缀名,多个后缀名可以用逗号隔开。
webwork.action.extension=action,do
文件目录:
还有一些其它的定制,比如:编码,标签的模板文件等等,都可以在webwork.properties 文件中配置。如果在 ClassPath 中没有这个文件,WebWork会自动读取WebWork的Jar包里面的default.properties文件。
步骤4:
创建请求的JSp页面, 在 Jsp 页面中, WebWork 的标签库不需要在 web.xml 中定义,在页面中通过如下的代码直接引用: <%@ taglib prefix = “ww” uri = “/webwork” %>
index.jsp
<form action="welcome.do" action="post">
<input name="user.name" >
<input type="submit" value="提交">
</form>
步骤5:
后台逻辑:
Actions:
一般一个 Action 代表一次请求或调用。在 WebWork 中,一般Action 类需要实现 Action 接口,或者直接继承基础类 ActionSupport。这是,它要实现默认的 execute 方法,并返回一个在配置文件中定义的Result(也就是一个自定义的字符串而已)。
User.java
package com.wuk.entity;
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
}
UserAction.java
package com.wuk.action;
import com.opensymphony.xwork.Action;
import com.wuk.entity.User;
public class UserAction implements Action{
private User user;
private String message;
@Override
public String execute() throws Exception {
message=user.getName()+"welcome";
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
他是如何获取参数的呢?
就是通过Action里面的set方法获取到的,然后通过get方法将结果暴露给前台页面的。
步骤6:
result.jsp
<%@ taglib prefix = "ww" uri = "/webwork" %>
<body>
<ww:property value="%{message}"/>
</body>
步骤7:
xwork.xml
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml" />
<package name="default" extends="webwork-default">
<!-- action的name参数是url 如http://localhost/welcome.action -->
<action name="welcome" class="com.wuk.action.UserAction">
<result name="success" type="dispatcher">
/result.jsp
</result>
<!--interceptor-ref定义这个action使用的拦截器 -->
<interceptor-ref name="params" />
</action>
</package>
</xwork>
在action中:
“ name ”参数用于请求的 URL 。例如:http://localhost/welcome.action ,这样通过请求的 url ,我们就可以在配置文件中找到对应的 action 。 “ class ”即实现 Action 的类。**一个 Action 中可以定义多个 Resul**t 。 Result 的“ name ”对应 Action 方法返回的字符串。在我们的 WelcomeAction 方法中,执行成功之后返回字符串“ success ”。即我们在这个 Action 里定义的那个 result 。
“ interceptor-ref ”定义这个 action 所使用到的拦截器。我们这里使用了 WebWork提供的 params 拦截器,它能自动的帮我们将请求的参数组装成 Action 中需要的数据对象。
params 这个拦截器是从哪里出来的?这个 xwork.xml 文件包含了 WebWork 提供的默认配置文件webwork-default.xml ,可以在 webwork-2.2.2.jar 文件中找到。我们定义的这个package 继承了它里面的 package“webwork-default”,这样就可以共享“webwork-default”package 里面定义的所有拦截器。