struts相关

Web组件的三种关联关系
请求转发(forward)对客户透明,request里的信息保持。
请求重定向(redirect)重新request到新的URL
包含(include)

解决并行开发:
1、多个配置文件的支持(其实还是要合并,可能会引起forward冲突)
2、模块的支持ModuleConfig对应该模块的XXXConfig如ActionConfig、FormBeanConfig(考虑模块间的转发:forward或SwitchAction)

每写一个应用都用继承BaseAction和BaseForm,当然BaseAction最好是继承LookupDispatchAction,BaseForm最好是继承ValidatorActionForm

内置的Struts Action类
ForwardAction 无FormBean,直接forward到jsp
IncludeAction
DispatchAction
LookupDispatchAction //一个Action里多个操作
SwitchAction //多模块
利用Token解决重复提交

Struts的异常处理
主要捕获业务层的业务逻辑异常(最好自定义一下),业务层要捕获DAO层的异常(抛出统一的DataException异常,最好写入日志)

Struts的扩展(plugin):如hibernate的初始化

Taglib的优缺点(学习有一定难度,web designer可能不熟悉)

资源文件的使用(多语言,用nativetoascii将非ASCII文本转为UTF-8)
所有html与jsp的ContentType设为UTF-8,另加上一个filter,根据客户的Locale对象设置相应的编码
<bean:message key="" />
ActionMessage与<html:errors>
关于资源文件(MessageResources)
ü         如果没有配置,则默认为WEB-INF/classes目录下的ApplicationResources.properties


ü         如果在struts-config.xml作了<message-resources parameter="xxx.yyy"/>则将默认的资源文件指定为WEB-INF/classes/xxx目录下的yyy.properties

ü         如果在struts-config.xml作了<message-resources key= "res" parameter="xxx.yyy"/>则将默认的资源文件指定为WEB-INF/classes/xxx目录下的yyy.properties,但是指定了引用bundle为"res",这样struts validator的客户端验证就找不到相关资源

ü         可以配置多个资源文件

<bean:write name="" property=""/>
共享常量的处理(存放常量的Constants.java文件)


解决ActionForm问题(页面增多,急速增加,可能同一类型页面字段会在不同的ActionForm中出现,且验证代码重复)
1、一个模块或相关页面对应一个ActionForm(聚合,复用性差)
2、DynaActionForm(配置文件中配置,实际将属性存在一个HashMap类对象中,故get时要强制转换)

Action注意
1、视图级(表单)验证(用javascript也可以)在ActionForm中完成(如输入不为空,e-mail格式是否正确等),业务相关验证在Action中(可能会涉及到Model),这样可以获得最大的ActionFrom重用性
2、主张将业务逻辑执行分离到单独的JavaBean中,而Action只负责错误处理和流程控制,并且在执行业务逻辑的JavaBean中不要引用任何与Web应用相关的对象,如Request、Response等,应该将其转化为普通的java对象(比如传递业务值对象VO),可以参考petstore的WAF框架。


Form Bean 是Web层的数据表示,他不能被传递到业务层;PO是持久层的数据表示,在特定情况下,例如Hibernate中,他可以取代VO出现在业务层,但是不管PO还是VO都必须限制在业务层内使用,最多到达Web层的Control,绝不能被扩散到View去。
Form Bean 和PO之间的数据转化是在Action中进行滴。
不过由于Hibernate的强大功能,例如动态生成PO,PO的状态管理可以脱离Session,使得在应用了Hibernate的J2EE框架中,PO完全可以充当VO,因此我们下面把PO和VO合并,统称为PO

Struts框架的异常处理机制
包括ActionServlet类、RequestProcessor、ExceptionHandler类处理异常的机制
宣称式异常处理(一般是全局异常,如登录失败等)
在配置文件中指定谁来处理Action中抛出的异常,需要实现ExceptionHandler子类,覆盖execute方法。

 

Commons Logging 接口

所谓的Commons Logging接口,是指将日志功能的使用与日志具体实现分开,通过配置文件来指定具体使用的日志实现。这样你就可以在Struts 1.1中通过统一的接口来使用日志功能,而不去管具体是利用的哪种日志实现,有点于类似JDBC的功能。Struts 1.1中支持的日志实现包括:Log4J,JDK Logging API, LogKit,NoOpLog和SimpleLog。

你可以按照如下的方式来使用Commons Logging接口(具体日志实现在commons-logging.properties中声明)(可以参照Struts源文中的许多类实现):


package com.foo;
// ...
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
//...
 public class Foo {   
 // ...   
 private static Log log = LogFactory.getLog(Foo.class);
 // ...   
 public void setBar(Bar bar) {      
  if (log.isTraceEnabled()) {        
   log.trace("Setting bar to " + bar);  
  }     
 this.bar = bar;  
 }
// ...
}

 

而开启日志功能最简单的办法就是在WEB-INF/classes目录下添加以下两个文件:

commons-logging.properties文件:


# Note: The Tiles framework now uses the commons-logging package to output different information or debug statements.
Please refer to this package documentation to enable it. The simplest way to enable logging is to create two files in
WEB-INF/classes:
# commons-logging.properties
# org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
# simplelog.properties
# # Logging detail level,
# # Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
#org.apache.commons.logging.simplelog.defaultlog=trace
org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog


 

simplelog.properties文件:


# Logging detail level,
# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
org.apache.commons.logging.simplelog.defaultlog=fatal


 

这里我们采用的日志实现是SimpleLog,你可以在simplelog.properties文件指定日志明细的级别:trace,debug,info,warn,error和fatal,从trace到fatal错误级别越来越高,同时输出的日志信息也越来越少。而这些级别是和org.apache.commons.logging.log接口中的方法一一对应的。这些级别是向后包含的,也就是前面的级别包含后面级别的信息。

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值