第一部分:
在Struts2的相关WEB开发过程了,经常用Convention插件,使用Convention插件,实现约定大于配置的零配置文件风格.特殊的Result路径在Action类中使用@Result设定.
在页面开发中,经常要用到 "!"来实现跳转到struts2中Action类的自定义方法,例如:
<a href="login!submit.action">跳转</a></li>
就会跳转到LoginAction类的submit方法,不过要想实现这一功能,还得在struts.xml加入如下配置:
<!-- 启用动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
第二部分:
我来记录一下Convention插件都能在struts.xml文件中配置哪些功能。
<struts>
<!--开发模式设置开始//-->
<!--++++++++++++++++++++++++++++++++++++++++++++++++开发状态 -->
<constant name="struts.devMode" value="true" />
<!-- 国际化资源重新加载 -->
<constant name="struts.i18n.reload" value="true" />
<!-- 配置文件重新加载 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- convention类从新加载 -->
<constant name="struts.convention.classes.reload" value="true" />
<!--++++++++++++++++++++++++++++++++++++++++++++++++开发模式结束 -->
<!-- 主题 -->
<constant name="struts.ui.theme" value="simple" />
<!-- 地区 -->
<constant name="struts.locale" value="zh_CN" />
<!-- 国际化编码 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 扩展-->
<constant name="struts.action.extension" value="action,do,jsp" />
<!-- 启用动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- 设置Struts 2是否允许在Action名中使用斜线 -->
<constant name="struts.enable.SlashesInActionNames" value="false" />
<!-- 结果资源所在路径 -->
<constant name="struts.convention.result.path" value="/"/>
<!-- action后缀 -->
<constant name="struts.convention.action.suffix" value="Action"/>
<!-- 名称首字母小写 -->
<constant name="struts.convention.action.name.lowercase" value="true"/>
<!-- 分隔符一个action名字的获取。比如为HelloWorldAction。按照配置,actionName为hello_world。 -->
<constant name="struts.convention.action.name.separator" value="_"/>
<!-- 禁用扫描 -->
<constant name="struts.convention.action.disableScanning" value="false"/>
<!-- 默认包 -->
<constant name="struts.convention.default.parent.package" value="default"/>
<!--确定搜索包的路径。只要是结尾为action的包都要搜索。basePackage按照默认不用配置,如果配置,只会找以此配置开头的包。locators及locators.basePackage都是一组以逗号分割的字符串。 -->
<constant name="struts.convention.package.locators" value="action"/>
<!-- 禁用包搜索 -->
<constant name="struts.convention.package.locators.disable" value="false"/>
<!-- 基于什么包 -->
<constant name="struts.convention.package.locators.basePackage" value="cn.com.action"/>
<!-- 排除的包 -->
<constant name="struts.convention.exclude.packages" value="org.apache.struts.*,org.apache.struts2.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate.*"/>
<!-- 包含的包 -->
<!-- 包括的jar,一般用于大型项目,其action一般打包成jar -->
<constant name="struts.convention.action.includeJars" value="" />
<!-- 结果类型 -->
<constant name="struts.convention.relative.result.types" value="dispatcher,freemarker"/>
<!--
如果此值设为true,如果一个action的命名空间为/login,名称为HelloWorldAction。result返回值是success,默认会找到/WEB-INF/pages/login/hello_world.jsp(如果有hello_world_success.jsp就找这个文件,连接符“_”是在<constant name="struts.convention.action.name.separator" value="_"/>中配置的)。如果有一个action的result返回值是“error”,就会找/WEB-INF/pages /login/hello_world_error.jsp。
如果此值设为false,如果一个action的命名空间为/login,名称为HelloWorldAction。result返回值是success,默认会找到/WEB- INF/pages/login/hello_world/index.jsp(如果有success.jsp就找这个文件)。如果有一个action的result返回值是“error”,就会找/WEB-INF/pages /login/hello_world/error.jsp。
-->
<constant name="struts.convention.result.flatLayout" value="true"/>
<constant name="struts.convention.action.mapAllMatches" value="false"/>
<!-- 检查是否实现action -->
<constant name="struts.convention.action.checkImplementsAction" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.convention.redirect.to.slash" value="true"/>
<package name="default" extends="struts-default">
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="params" />
</interceptor-stack>
</interceptors>
</package>
</struts>
分享到:
相关推荐
总的来说,SpringSide 提供了一种高效的项目初始化方法,通过 Maven Archetype 和 Velocity 模板,降低了项目创建的复杂度,同时利用 Struts2 的 Convention Plugin 实现了高度自动化配置,提高了开发效率。...
- **Action层:** Springside3中Action层的设计主要依赖于Struts2的Convention插件,该插件能够自动识别和配置Action,使得Action的配置变得更加简洁。 - **示例代码:** ```java @Namespace("/security") public...
采用了最新的struts-convention插件,命名已-隔开,约定优于配置。 action的访问方式:域名:端口/action包名/action名!方法.action 对应action返回的页面:域名:端口/action包名/action名-方法返回值.jsp 2、数据库...
1. **SpringSide框架**:用于简化常见的CRUD操作和复杂的查询逻辑,同时集成Sitemesh以减少前端开发的工作量。 2. **Struts2的Convention插件**:提供简洁的Web映射机制,减少配置工作。 3. **Spring框架**:提供...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf