Struts2-关于struts.xml文件的package配置的说明
一个较为完整的action定义:
<struts><package name="default" extends="struts-default"><action name="test" class="com.struts2.action.TestAction" method="execute"><result name="success">/index.jsp</result></action></package>
</struts>
import com.opensymphony.xwork2.ActionSupport;public class TestAction extends ActionSupport {private static final long serialVersionUID = 1L;@Overridepublic String execute() throws Exception {System.out.println(TestAction.class.getName() + " 执行了...");return SUCCESS;}}
一、包(package):
Struts2的包类似于Java中的包,包提供了将action、result、result类型、拦截器和拦截器栈组织成为一个逻辑单元的一种方式。与Java不同的是,Struts2中的包可以扩展另外的包(类似于类的继承),从而“继承”原有包所有定义,包括action、result、result类型、拦截器和拦截器栈的配置(引用来自《struts2深入详解》的78页)。
属性 | 是否必要 | 说明 |
---|---|---|
name | 是 | 被其他包引用时的键 |
extend | 否 | 指定要扩展的包 |
namespace | 否 | 指定命名空间 |
abstract | 否 | 声明为抽象包 |
<package name="aaa" extends="struts-default"><action name="test" class="com.struts2.action.TestAction" method="execute"><result name="success">/index.jsp</result></action>
</package>
<package name="bbb" extends="aaa"></package>
在上述的代码中,name为"bbb"的包继承(extend)name为"aaa"的包,包"bbb"通过继承,即可拥有包"aaa"的action。通过包的继承,优化了代码的重复性,提高了代码的重用性,降低了代码的维护量。
<package name="aaa" extends="struts-default">
<action name="test" class="com.struts2.action.TestAction" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
<package name="bbb" extends="aaa">
<action name="test" class="com.struts2.action.TestAction" method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
Struts2中存在一个比较特殊的命名空间,根空间即namespace="/",如果请求web应用的上下文路径下的action,那么框架会在根命名空间中查找相应的action,和其他命名空间一样,如果在根路径中找不到请求的action,Struts2框架会去默认的命名空间中查找。
示例:
<package name="aaa" namespace="/aaa" extends="struts-default"><action name="test" class="com.struts2.action.AAAAction" method="execute"><result name="success">/index.jsp</result></action>
</package>
<package name="bbb" namespace="/bbb" extends="struts-default"><action name="test" class="com.struts2.action.BBBAction" method="execute"><result name="success">/index.jsp</result></action>
</package>
<package name="/" namespace="/" extends="struts-default"><action name="test" class="com.struts2.action.RootAction" method="execute"><result name="success">/index.jsp</result></action>
</package>
<package name="default" extends="struts-default"><action name="test" class="com.struts2.action.DefaultAction" method="execute"><result name="success">/index.jsp</result></action>
</package>
上述struts.xml文件中的AAAAction,BBBAction,RootAction,都是由TestAction修改而来的,除了类名不一样外,其余的都一样。
假设访问localhost/struts2_test01/aaa/test.action,将在控制台打印出:com.struts2.action.AAAAction 执行了...
假设访问localhost/struts2_test01/bbb/test.action,将在控制台打印出:com.struts2.action.DefaultAction 执行了...
假设访问localhost/struts2_test01/test.action,将在控制台打印出:com.struts2.action.RootAction 执行了...
假设访问localhost/struts2_test01/abc/test.action,将在控制台打印出:com.struts2.action.DefaultAction执行了...
3、abstract属性:
如果包声明为abstract(即abstract="true"),在包中就无法定义action(即使定义了,也无法进行请求访问),它只能作为“父”包被其他包所继承,"struts-default"包就是一个抽象包。如:
<package name="aaa" namespace="/aaa" extends="struts-default" abstract="true"><action name="test" class="com.struts2.action.AAAAction" method="execute"><result name="success">/index.jsp</result></action>
</package>
<package name="default" extends="struts-default"><action name="test" class="com.struts2.action.DefaultAction" method="execute"><result name="success">/index.jsp</result></action>
</package>
假设访问localhost/struts2_test01/aaa/test.action,将在控制台打印出:com.struts2.action.DefaultAction 执行了...
Struts2-关于struts.xml文件的package配置的说明相关推荐
- Struts2-关于struts.xml文件的action配置的说明
一.Action的说明: Struts2的核心功能就是action,对于开发者,使用Struct2框架的主要工作就是编写Action类来实现业务.action类可以不用继承任何父类和实现任何接口,但是 ...
- Struts2配置struts.xml文件
Struts2配置struts.xml文件 Struts2框架的核心配置文件是struts.xml文件 该文件,主要用来配置Action和请求的对应关系,以及配置逻辑视图和物理视图资源的对应关系 st ...
- Struts2的struts.xml的配置细节
2019独角兽企业重金招聘Python工程师标准>>> (七)Struts2的struts.xml的配置细节 这里说的struts.xml说到的包含内容如下: 1.include包含 ...
- Struts2的struts.xml的配置细节,OGNL,标签
2019独角兽企业重金招聘Python工程师标准>>> (七)Struts2的struts.xml的配置细节 这里说的struts.xml说到的包含内容如下: 1.include包含 ...
- struts2中struts.xml和web.xml文件解析及工作原理
转自:https://www.cnblogs.com/printN/p/6434526.html web.xml <?xml version="1.0" encoding=& ...
- Struts2的2.5.10版本找不到StrutsPrepareAndExecuteFilter过滤器 与 struts.xml文件通配符异常问题
一.异常描述: 今天在整合ssh的时候,在配置Struts2框架之后,启动之后,项目报错抛异常:主要异常信息如下: java.lang.ClassNotFoundException: org.apac ...
- 解决Struts2的配置文件struts.xml文件无提示问题
1.在上一篇文章Struts2搭建开发环境并编写第一个Struts2应用 中,详细的图解介绍了如何搭建Struts2开发环境和编写第一个Struts2应用,其中struts2的配置文件struts.x ...
- struts2:struts.xml配置文件详解
1. 几个重要的元素 1.1 package元素 package元素用来配置包.在Struts2框架中,包是一个独立的单位,通过name属性来唯一标识包.还可以通过extends属性让一个包继承另一个 ...
- 【struts2】struts2配置文件—struts.xml
解决在断网环境下,配置文件无提示的问题: 我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为" http://struts.apach ...
最新文章
- 结合深度学习的图像修复怎么实现?
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(二)
- Wordpress会员插件 wp_members 最新简体中文语言包
- 安卓文件共享服务器,安卓文件共享云服务器
- 学习笔记-记ActiveMQ学习摘录与心得(二)
- 云原生DevOps的5步升级路径
- flask-Blueprint
- 雷林鹏分享:Laravel 安装
- 如何提高Eclipse的运行速度 之总结
- TSSD2018下载地址及更新说明
- 李宏毅机器学习笔记第5周_逻辑回归
- android记账系统预算功能,怎么挑选合适的 Android 记账应用?你可以从记账需求入手...
- 每日作业-品优购详情页
- 期待只在最美的时光遇见你
- Python编程:从入门到实践第二版答案(第七章)
- 一般信道容量迭代算法c语言,(信息论编码)信道容量迭代算法
- Excel 2019筛选快捷键(Ctrl+Shift+L)失灵
- 超详细的张飞硬件90天读书笔记02
- 虚证、实证如何鉴别?
- 软件工程复试归纳总结
热门文章
- 利用python解决猴子吃桃问题
- Android4.0的来电拦截源码
- 身份和访问管理IAM能力之RADIUS认证
- java缓存Guava Cache用法介绍
- 爬取华农兄弟哔哩哔哩所有视频信息
- 2.2集合之间的交集与并集
- 算法之unix时间戳和UTC时间(年月日)互换
- php java session共享_PHP通过session id 实现session共享和登录验证的代码
- python中使用什么命令安装组件_对Python开发环境在线安装Jupyter组件时,以下哪些指令是符合语法规范的:_________...
- Windows Media Player + 音乐可视化 + 音乐倒放