[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
或者
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