webWork和JSP整合案例

步骤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 里面定义的所有拦截器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术闲聊DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值