struts对comments-beanutils包的使用分析以及使用自定义类型转化器的ActionServlet

对于每一个客户请求, Struts ActionServlet 只负责把请求转发给相应模块的的 RequestProcessor 对象去处理。

读了Struts的源码,发现:

如果请求中附有 From 表单信息,则 RequestProcessor processActionForm方法 负责将客户端传过来的表单信息封装成相应的 ActionForm 对象。

processActionForm方法则执行了如下语句:

ActionForm instance =

  RequestUtils.createActionForm (request, mapping, moduleConfig , servlet );

RequestUtils 中, Struts 从配置文件中获取了这个 ActionForm 类的各个成员变量的转换 map ,这个 map 标识了各个成员变量从 String 类型转换到何种类型。这个 map 命名为 properties后, Struts通过 BeanUtils.populate(bean, properties)方法将类型转换的任务委托给 comments-beanutils 包。

comments-beanutils包中, BeanUtils类把转换任务下交给 BeanUtilsBean

BeanUtilsBean.getInstance().populate(bean, properties);

BeanUtilsBean根据 map中的 name-value值, bean中的各个成员变量进行 setProperty setProperty方法主要是根据 comments-beanutils 包中已经存在的 Convert 类,将 String 类型的表单输入转换成相应的成员变量类型,从而实现对 bean 中的属性进行赋值。

由于 comments-beanutils 包中自带的 Convert 类不能解决所有的问题。例如,这个包提供了从 String java.sql.Date 的转换。但是没有提供从 String java.util.Date 的转换。

所以,有时候,我们需要自定义一个 Convert 类,然后注册给 ConvertUtils ,从而实现让 Struts转化 String为自定义的类。

因为要在系统启动时就注册自定义的 Convert 类,所以常用的方法有,自定义一个自动 load Servlet ,在它的 init 方法中注册 Convert 类。另一种方法是,自定一个 ActionServlet ,在它的 init 方法中注册 Convert 类。

给出第二种方法的一个实现:

首先,定义一个 Convert

 

自定义 ActionServlet,注册 DateConvert


最后配置这个 ActionServlet 为使用的 Servlet 即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值