香菜芹菜辣青椒,茄子扁豆嫩蒜苗,好大的黄瓜你们谁要,一个铜子儿拿两条。

显示标签为“addresses”的博文。显示所有博文
显示标签为“addresses”的博文。显示所有博文

2007-03-03

在Webwork中处理Cookie

Addresses基本框架完成了。

今天主要把登录和注销的功能给完善了,加入了Cookie的支持。Webwork对session进 行了封装,但是目前的2.2.4版本中并未有cookie的原生支持。查了一下wiki,好像在07年1月加入了cookieInterceptor,大 概在Struts 2中会有体现吧。但当前,我还是用了比较原始的做法,一方面在Interceptor中做了cookie的request处理,但写入cookie还是直 接在action中做的。比较bad smell,但还算简单有效。

接下来几天开始玩Amazon E-Commerce Service。

2007-03-01

利用MessageDigest实现加密

今天又是效率低下的一天。

今天的大部分时间都被一个LoadAll()问题困扰。这是HibernateTemplate提供的一个方法,原本很简单,可是却让我花费了半个下午,因为我总是不能正确的从数据库中取得我想要的所有对象实例。中间甚至检查了Spring和Hibernate集成的事务处理,不可谓不头大。

后来愚蠢的发现是在对象传递时发生了问题。使用LoadAll方法时需要传入entity的Class对象,可我却在对象的传递和调用中错误的传入了entity的Class对象的Class对象…… 这可真是笨出档次了!

重构了一些Action,把Log相关的Action作为base action供继承。感觉以后有时间的话还是做成interceptor较好。

后来又用java.security.MessageDigest类实现了MD5和SHA-1加密方法,其中的byte2Hex方法直接用了Jakarta Common Codec包里的Hex类。最近对Jakarta Common非常依赖,很多类都直接拿过来用了,挺好用的。

希望明天能更高效一些。

2007-02-28

被连接池困扰

今天被连接池的设置困扰很久。

在之前的单元测试中,Service类非常容易的通过了CRUD测试,所有的数据都能够正常存取与数据库。测试扩展了Spring提供的AbstractTransactionalDataSourceSpringContextTests,与应用程序中的一样也是通过AOP获取依赖。

可是今天在Web容器中,忽然发现无法正常往数据库中插入数据,没有报错,断点跟踪进去也一切正常的又跟出来,没有异常。在测试类中prepare了同样的数据,测试通过。怀疑问题可能在Spring Beans配置文件上,把Web容器中的datasource设置换成测试环境的试了一下,果然可以正常操作了。确定问题以后,就着手解决,可是我废了九牛二虎也没搞定Proxool的配置,只要我不在applicationContext.xml中配置dataSource,就无法插入数据。可是即使不配dataSource,配置了sessionFactory也是可以的呀,至少已经能够从数据库读取数据了。这里就有一份用Proxool设置数据库连接池的例子,我就是照着它来的。

换用c3p0再试,也是一样的问题。

最后无奈,在applicationContext.xml加入了dataSource的配置,另加了一个datasource.properties文件,用来参数化一些数据库连接的数据,总算解决问题。但是上面问题的原因我还是没能明白。

在datasource.properties里详细添加了c3p0的config注释,以后直接参考这个就行。

2007-02-27

自定义Authentication拦截器

今天基本完成了用户注册部分的代码,开始着手进行数据展现等主要功能的开发。

因为这部分的内容是需要登录后才能展现,所以重构了webwork package,分出三个package:default、public和secure。
default直接继承自webwork-default,是一个抽象package,定义了一些全局result、interceptor、exception;
public主要包括了登录、校验、注册以及其他开放内容的action;
secure使用了"member"的namespace,仅展现需登录才能查看的action。

考虑到secure的存在,决定增添一个拦截器,应用于secure部分的action。它的主要功能是检查用户是否已经登录,如没有则返回一个全局result:login。 如果已经登录,则给相应的action注入对应Member实例。为了实现后一功能,又增添了一个助手接口,供需要登录查看的action实现此接口。

之前为注册增加了一个wait页面,用execAndWait Interceptor实现,简单。

2007-02-26

项目:Addresses

为学习Webwork2、Spring、Hibernate所搭建Demo项目。面向小群体人群交换联系方式的需求,提供一个安全、开放的信息集中与共享平台。

开发平台:Eclipse,Jetty,HsqlDb

核心技术:Spring AOP,Webwork做web层,Hibernate ORM提供data层与service的交互,View层遵循web标准,div+css布局。