下面这个struts.xml囊括了所有可能用到的标签用法,例如配置全局的异常处理<global-exception-mappings>全局结果result<global-results>,缺省action-class类名<default-class-ref class=""/>,还有缺省的action名字<default-action-ref name="" />
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 常量配置 -->
<constant name="..." value="..." />
<constant name="struts.devMode" value="false" />
<!-- 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 -->
<include file="config/struts/struts_business.xml" />
<!-- package的名字必须是唯一的 extends: 继承的父package名称 abstract: 设置package的属性为抽象的,抽象的package不能定义action, 像struts-default.xml定义的就是一个名为struts-default的抽象package, 开发者只需要继承这个package就行了 -->
<package name="package_name" extends="struts-default" namespace="/namespace">
<!-- 定义结果类型,此标签最多出现一次 -->
<result-types>
<result-type name="..." class="..." />
<result-type name="dispatcher" default="true"
class="org.apache.struts2.dispatcher.ServletDispatcherResult" />
</result-types>
<!-- 拦截器 此标签最多出现一次 -->
<interceptors>
<interceptor name="timer" class="com.kay.timer" />
<interceptor name="logger" class="com.kay.logger" />
<!-- 定义拦截器栈 -->
<interceptor-stack name="mystack">
<interceptor-ref name="timer" />
<interceptor-ref name="logger" />
</interceptor-stack>
<interceptor-stack name="newStack">
<interceptor-ref name="paramsPrepareParamsStack"></interceptor-ref>
<interceptor-ref name="token">
<param name="includeMethods">submit</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 设置默认的拦截器每个Action都会自动引用,如果action中引用了其它的拦截器 这里的默认的拦截器将无效 -->
<default-interceptor-ref name="newStack" />
<!-- 当所在包对应namespace下没有匹配的action时,struts2会调用此默认的action -->
<default-action-ref name="unknown" />
<!-- struts.xml默认的action类 action标签里面没有指定class时默认使用此值 -->
<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
<!-- 全局results配置 -->
<global-results>
<result name="unknownError">/error.jsp</result>
<result name="noSession">/login.jsp</result>
</global-results>
<!-- 全局异常处理 一般搭配<global-results>使用 -->
<global-exception-mappings>
<exception-mapping exception="com.exception.UserException"
result="noSession">
<param name="namespace">/login</param>
</exception-mapping>
<exception-mapping exception="java.sql.SQLException" result="dbError" />
<exception-mapping exception="java.lang.Exception" result="unknownError" />
<exception-mapping exception="java.lang.RuntimeException" result="error"/>
</global-exception-mappings>
<!-- 这里使用了默认的<default-class-ref class="..."/> -->
<action name="unknown">
<result>/common/input.jsp</result>
</action>
<action name="login" class="com.ui.web.LoginAction">
<result name="success" type="redirectAction">
<param name="namespace">/admin</param>
<param name="actionName">index</param>
</result>
<result name="common" type="redirectAction">
<param name="namespace">/common</param>
<param name="actionName">index</param>
</result>
<result name="safe" type="redirectAction">
<param name="namespace">/safe</param>
<param name="actionName">index</param>
</result>
<result name="safeadmin" type="redirectAction">
<param name="namespace">/safeadmin</param>
<param name="actionName">index</param>
</result>
</action>
<!--action配置 method默认值是execute -->
<action name="submit*" class="com.action.{1}Action" method="submit">
<result>{1}/view.jsp</result>
<result name="input">{1}/edit.jsp</result>
<result name="invalid.token">{1}/view.jsp</result>
<exception-mapping result="input" exception="" />
</action>
<action name="uploadCaseFile" class="com.action.UploadCaseFileAction">
<interceptor-ref name="fileUploadStack">
<param name="fileUpload.maximumSize">52428800</param>
<param name="fileUpload.allowedExtensions">.jpg,.jpeg,.gif,.png,</param>
</interceptor-ref>
<interceptor-ref name="workflow" />
<result type="redirectAction">
<param name="actionName"><![CDATA[listFiles?caseId=${caseId}]]></param>
<param name="namespace">/business</param>
</result>
<!-- ${}可以直接访问该action的值栈里面的属性 -->
<result name="input">/business/${resultPage}.jsp</result>
</action>
<action name="downloadCaseFile" class="com.action.DownloadCaseFileAction">
<result type="stream">
<param name="contentType">${contentType}</param>
<param name="contentLength">${contentLength}</param>
<param name="contentDisposition">attachment;filename="${name}"</param>
<param name="inputName">fileStream</param>
<param name="bufferSize">4096</param>
</result>
</action>
</package>
</struts>
分享到:
相关推荐
首先读取`struts-default.xml`,接着是`struts-plugin.xml`、`struts.xml`、`struts.properties`以及`web.xml`。这一顺序确保了开发者可以自定义框架的行为,同时保持框架的核心功能不受影响。 #### Struts2访问Web...
cmd脚本-bat批处理-blender_debug_gpu_glitchworkaround.zip
cmd-bat-批处理-脚本-setlocalLevelCounter.zip
内容概要:本文详细介绍了在单级离网光伏系统中,通过改进型自适应步长扰动观测(P&O)方法实现最大功率点跟踪(MPPT)的技术。文中首先阐述了降压转换器与MPPT在光伏系统中的重要性,特别是在环境条件多变的情况下,如何保持MPPT的稳定性和准确性。接着提出了改进型自适应步长P&O MPPT方法,通过动态调整步长大小和加入预测模型,解决了传统P&O方法存在的响应速度慢、稳态振荡等问题。此外,文章还讨论了光储系统MPPT的应用,特别是二区MPPT复现技术和三级充电控制器(TSCC)在电池充电控制中的应用,确保电池始终以最优状态进行充电并延长使用寿命。最终,通过这些技术的应用,实现了太阳能光伏阵列的最大功率点跟踪和电池的高效充电控制,提升了系统的能源利用效率和稳定性。 适合人群:从事光伏系统研究、设计和维护的专业技术人员,尤其是关注光储系统和MPPT技术的研究人员。 使用场景及目标:适用于单级离网光伏系统的优化设计和实际应用,旨在提高系统的能源利用效率和稳定性,确保在各种天气条件下都能实现最佳性能。 其他说明:本文不仅提供了理论分析,还结合具体应用场景进行了详细探讨,有助于读者深入理解改进型MPPT技术的具体实现和优势。
cmd-bat-批处理-脚本-jscript-unHexJS.zip
内容概要:本文介绍了基于带外源输入的非线性自回归网络(NARX)的多变量时间序列预测模型及其在MATLAB中的实现方法。NARX模型能够处理具有外源输入的多变量时间序列问题,通过将系统当前状态视为历史状态和当前输入的非线性组合,从而对未来趋势进行预测。文中详细讲解了NARX模型的基本思想、应用场景,并提供了具体的MATLAB代码示例,包括数据准备、模型构建、参数设置、预测执行等步骤。此外,还强调了实际应用中需要注意的数据处理和模型调优。 适合人群:对时间序列分析感兴趣的研究人员和技术爱好者,尤其是那些希望通过MATLAB实现NARX模型进行预测的人群。 使用场景及目标:适用于金融市场、气象预报等领域的时间序列预测任务,旨在提高预测精度,更好地理解和应对复杂的非线性系统。 其他说明:虽然文中提供的代码仅为简单示例,但已足够帮助初学者快速上手NARX模型的构建与应用。对于深入研究,还需进一步探索数据处理技巧和模型优化方法。
cmd-bat-批处理-脚本-EjectCD.zip
本实训项目旨在使大家深入理解计算机中关键部件——存储器。通过本次实训,要求同学们熟练掌握存储扩展的基本方法,并能够独立设计 MIPS 寄存器堆以及 MIPS RAM 存储器。此外,还需运用所学的 cache 基本原理,设计出直接相联、全相联以及组相联(4路组相连)映射方式的硬件 cache。实训内容包括汉字字库存储芯片扩展实验、MIPS 寄存器文件设计、MIPS RAM 设计、全相联 cache 设计、直接相联 cache 设计以及 4 路组相连 cache 设计。
内容概要:本文详细介绍了如何利用NASA提供的锂离子电池数据集进行健康因子提取,并使用深度学习模型进行电池状态估计和剩余使用寿命(RUL)预测。主要内容包括数据预处理步骤,如数据清洗、归一化,以及提取多个健康因子,如等电压变化时间、充电过程电流-时间曲线包围面积、恒压恒流-时间曲线面积、充电过程温度和IC曲线峰值。随后,文章讨论了基于CNN、LSTM、BiLSTM、GRU和Attention机制的深度学习模型的设计与训练方法,旨在捕捉电池状态的关键特征。最后,文章展示了如何通过可视化界面和API接口实现一键式操作,方便用户快速进行电池状态估计和RUL预测。 适合人群:从事电池技术研发、数据分析和机器学习领域的研究人员和技术人员。 使用场景及目标:适用于需要对锂离子电池进行健康状态监测和寿命管理的应用场景,如电动汽车、储能系统等。目标是提高电池状态估计和RUL预测的准确性,从而优化电池管理系统。 其他说明:未来研究将继续探索更先进的算法和模型结构,以应对电池技术的进步和实际应用场景的需求。
cmd-bat-批处理-脚本-图像处理-shRotate.zip
内容概要:本文介绍了基于离线DP(动态规划)的节能速度规划算法及其在Carsim联合仿真平台上的验证过程。首先,通过DP算法核心、能耗计算模块、坡度计算模块和综合代价计算模块,计算出最优的节能速度规划。然后,在Carsim平台上,通过电动汽车执行器、PID速度跟踪器和节能速度导入模块进行仿真验证。整个过程中采用了模块化建模方法,确保模型的准确性和可维护性。此外,还提供了详细的建模说明文档、相关参考资料和技术文献,以及远程调试服务。 适用人群:从事电动汽车研究的技术人员、高校科研人员、汽车工程领域的研究生和博士生。 使用场景及目标:适用于希望优化电动汽车能耗的研究项目,旨在提高电动汽车的能源利用效率,减少能耗。通过该方案可以深入了解动态规划算法的应用,掌握Carsim联合仿真的具体实施方法。 其他说明:远程调试需额外支付200元费用,确保Simulink模型和Carsim模型的联合调试准确性。
cmd-bat-批处理-脚本-blender_oculus.zip
以下是重新表述后的内容: 本数字水印算法基于离散余弦变换(DCT)。其中,carry_x.bmp是作为载体图像的文件,water_x.bmp是水印图像的文件。test.fig是用于图形界面的文件,main.m是程序的执行入口文件,test.m是程序的主函数文件。ispsnr.m是用于计算峰值信噪比的函数文件,但该函数不会在程序中体现;nc.m是用于计算归一化相关系数的函数文件,同样不会在程序中体现。Arnold1.m是实现水印置乱功能的函数文件,Arnold2.m是实现水印还原功能的函数文件。qianru.m是实现水印嵌入功能的函数文件,tiqu.m是实现水印提取功能的函数文件。attack.m是实现水印攻击功能的函数文件,HYASUO.m是实现小波压缩功能的函数文件。
内容概要:本文介绍了基于TIA Portal V15.1的PLC1200与HMI_1[TP1200 Comfort]联机仿真运行系统的设计与实现。主要内容涵盖五个方面:一是利用TIA Portal V15.1进行PLC编程,实现对自动化流水线的精确控制;二是构建HMI组态控制界面,使操作员能够便捷地监控和管理生产线;三是提供详细的参考设计报告,指导系统的设计、实施和维护;四是准备CAD版原理图、IO表和系统流程图,便于理解和部署;五是制作演示视频,直观展示系统的各项功能及其运行情况。通过这套系统,可以在没有实物PLC的情况下,全面模拟并测试自动化流水线的实际运作。 适合人群:从事工业自动化领域的工程师和技术人员,特别是那些需要掌握PLC编程和HMI配置的专业人士。 使用场景及目标:适用于希望深入了解PLC与HMI协同工作的技术人员,旨在提高他们对自动化控制系统的设计能力,优化生产流程,提升工作效率。 其他说明:文中提供的资料详尽实用,对于初学者来说,是一份不可多得的学习材料;而对于有一定经验的人来说,则有助于深化对其所涉及技术的理解。
cmd-bat-批处理-脚本-jscript-xpath0.1.zip
内容概要:本文探讨了利用MATLAB实现自适应动态规划(ADP)和自适应线性系统的最优输出调节方法。文中详细介绍了两种主要技术的应用实例:一是通过神经网络实现的ADP用于控制倒立摆,展示了值函数网络与策略的交替更新机制;二是自适应线性调节器,通过递推最小二乘法实现实时参数估计与控制律调整。此外,还讨论了将两者结合使用的混合架构,强调了学习率协调的重要性以及常见的实现挑战。最后,提到了MATLAB Control System Tuner工具对于理解和优化控制系统参数的帮助。 适合人群:自动化控制领域的研究人员和技术人员,尤其是对MATLAB有一定基础并希望深入了解自适应控制理论与实践的人群。 使用场景及目标:适用于需要处理不确定性和非线性特性的复杂控制系统的设计与优化。具体应用场景包括但不限于机器人控制、自动驾驶等领域。目标是提高系统的鲁棒性和稳定性,确保在面对外部干扰或内部参数变化时能够维持预期性能。 其他说明:附带了详细的MATLAB代码片段和相关参考文献,便于读者进一步深入研究。
内容概要:本文详细介绍了基于NI Linux RT平台的EtherCAT实时伺服控制系统及其高精度仿真的关键技术。首先探讨了硬件层到系统层的紧密配合对实时控制的重要性,特别是微秒级抖动控制和硬核线程调度的应用。接着深入讲解了主站配置的具体方法,如CPU核心绑定与线程优先级设置,确保ECAT主站线程周期抖动控制在±5μs以内。随后阐述了伺服控制算法的实现,强调了内存页锁定的重要性,并展示了PID控制算法的具体实现方式,确保控制周期内的低延迟。最后讨论了仿真环节的技术要点,包括使用龙格库塔法进行电机方程求解以及混合编程模式的优势,确保50μs级的仿真步长需求。同时提到了调试过程中常见的问题及解决方案。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对实时控制和高精度仿真感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握基于NI Linux RT平台的EtherCAT实时伺服控制技术和高精度仿真技术的专业人士。目标是提高实时控制系统的稳定性和精度,优化仿真效果。 阅读建议:读者应具备一定的实时操作系统和嵌入式编程基础,重点理解文中提到的关键技术和具体实现方法,并结合实际项目进行实践。
cmd-bat-批处理-脚本-AesDecode.zip
cmd-bat-批处理-脚本-ArrayListPOC.zip