[Struts2 框架学习] 二、Namespace 和 Action

[Struts2 框架学习] 二、Namespace 和 Action

namespace(命名空间)

namespace 决定了 action 的访问路径,默认为 “”,可以接收所有路径的 action。

namespace 可以写为 /,或者 /xxx,或者 /xxx/yyy,对应的 action 访问路径为 /index.action,/xxx/index.action,或者 /xxx/yyy/index.action。

namespace 最好也用模块来进行命名。

例如 struts.xml 配置中如下配置 namespace :

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <!-- 配置常量,启动 Struts2 的开发模式 -->
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/action" extends="struts-default">
            <action name="hello" class="hochen.chong.action.TestAction3">
                <!-- result 中不写任何东西,则默认为 name="success" -->
                <result>
                    /action/hello.jsp
                </result>
            </action>
    </package>
</struts>

在 WebContent 下创建文件夹 action,在 action 文件夹中创建 hello.jsp 页面

访问路径为:

http://localhost:8080/learnStruts2/action/hello

或者

http://localhost:8080/learnStruts2/action/hello.action


Action

Action 有三种创建方式。

最常使用的是第三种,即继承 ActionSupport 类。因为其提供了大量的方法。

在默认情况下,如上面的 struts.xml 中并没有配置自己写的 Action 时,则会默认调用 ActionSupport 类中的 execute()方法,该方法默认返回字符串为 success。

第一种 Action 的实现

普通的java类,里面有 public String execute 方法即可

例如:

public class TestAction1 {
    public String execute() {
        return "success";
    }
}

struts.xml 配置参考上面 namespace 中的 struts.xml 配置,

<action name="hello" class="hochen.chong.action.TestAction3">

修改为

<action name="hello" class="hochen.chong.action.TestAction1">

即可。

则访问路径如上面 namespace 中的路径相同,下同,不再赘述。

第二种 Action 实现 —— 实现 Action 接口

实现 Action 接口,对 execute() 方法进行重写

例如:

import com.opensymphony.xwork2.Action;

public class TestAction2 implements Action {
    @Override
    public String execute() throws Exception {
        return "success";
    }
}

struts.xml 配置参考上面 namespace 中的 struts.xml 配置,

<action name="hello" class="hochen.chong.action.TestAction3">

修改为

<action name="hello" class="hochen.chong.action.TestAction2">

即可。

第三种 Action 实现 —— 继承 ActionSupport 类(推荐使用)

继承 ActionSupport 类

例如:

import com.opensymphony.xwork2.ActionSupport;

public class TestAction3 extends ActionSupport {
    @Override
    public String execute() throws Exception {
        return "success";
    }
}

struts.xml 配置与上面 namespace 中的 struts.xml 配置相同。


后记

慢慢修改自己的学习方法,马士兵老师讲解了一种学习方法 – 先将项目部署,运行起来看效果,然后再自己做实验事件。在视频中,老师是复制出了好多个小项目,一个小项目测试一个小功能。马老师也给出了建议,如果是自己学习的话,可以就一个项目,不断地往上面添加,测试就可以了,这样子速度会更快些。

所以,我也打算,自己的学习过程,也按照着这种方式,一边学习,一边做笔记,待到看完视频后,也就有一个稍微完整的小项目,而读者也可以跟着我一起完成这一切。

编辑:HochenChong

时间:2017-11-23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值