Monthly Archives: 04月 2005

工作PickUps

Request域的疏忽:在做Wapfish后台管理的时候,做到添加新资源那部分,我为提交新资源的表单配置了一个ActionForm,问题出现了,我上传完一个资源,提交了新的信息之后,再进去添加资源的页面的时候,发现表单出现了上次添加的信息,狂按重置按钮也没效。我检查了所有的程序和配置,认为没有地方出错,为这个问题尝试了很多方法,但都一愁莫展,最后回到Struts-config的配置文件去再次查看配置,忽然发现我配置Action的时候对应的Form没有指定有效的范围,晕。。原来问题在这里,Struts的默认情况Form的有效范围是整个会话。我把scope=”request”加进配置文件后,一切正常。哎,一时大意,误事了。紧记,认真啊。 复制数据的Sql语句insert into T_A(a,b,c) (select a,b,c from T_B)曾一度忘记,转了很大弯才完成。 改良Logger机制系统的日志机制十分完速,分布在三大块中,一、delegate 二、serviceImpl 三、action。系统的Logger是在三大块的Base类中定义,定义语句如下:Logger log=Logger.getLogger(BaseDelegate.class);其他的类似。这样在工程运行的时候,所有BaseDelegate的子类在产生日志时,显示日志输出的都是BaseDelegate,这样会造成查找的麻烦,不能很快确定该日志产生的方位。 利用OOP的多态性,完全可以达到一处定义多处动态改变的目的,将定义语句改为:Logger log=Logger.getLogger(this.getClass());即可达到目的。

Posted in 技术 | Leave a comment

在Tomcat中配置应用Context的一些差异与注意事项

使用的是Struts框 架:1,用””作应用的DocBase,这时该应用的相对路径是从整个URL倒数第一个”/”开始的,这时在页面中写相对路径的时候注意要在前面加上”/”,如:http:/login.do。在系统看来”/login.do”是相对路径,面应用的当前位置是在http://localhost/admin下面。 2、用”/”作DocBase的时候,应用的相对路径是从整个URL顺数第一个”/”之后开始,这时在页面构造相对路径的时候不要在前面加了”/”,如:http:/login.do。在系统看来,admin/login.do才是相对路径,如果把第一种情况的相对路径对应到这种情况上来,会出现http://localhost//login.do的情况。所以在配置工程的Context的时候因该认真考虑路径的问题。 这是个教训,以后在团队开发的时候一定要统一使用相同的配置。上面两种情况看起来相当,但是在调试的过程中导致了大量的路径的错误。 3、类似的配置是DocBase后面以””结束的,和第1种情况相仿,DocBase后面以”/”结束的,和第二种情况相仿。 4、两种配置的优缺点比较: 在工程中,常常会用到客户标签来构造一些URL,工程中Struts的Action通常会带有很长的名字和多个”/”分割符,如果使用””这种情况的配置,在构造URL的时候会产生混乱。比如说我们的Context本是http://localhost,有一个Action是这样的/admin/login.do,这时完整的路径就会是http:/login.do,如果页面中产生一个请求,是请求/admin/viewUser.do的话,浏览器会把完整的路径解释为:http:/admin/login.do,这就跟我们的用意相违背了,发生了错误。而使用”/”作为Bastpath的情况,就可以避免这种情况的出现,但是这种情况在Struts框架下的表单中构造完整路径的时候会产生严重的错误,可以认为是Struts的一个Bug,通过修改源码问题得以解决。 而””作为DocBase的问题解决方法也很简单,我们可以在请求中取得所配置的Context直接手动构造完整的路径,不交给浏览器去解释,可以避免出错。

Posted in 技术 | Tagged , , | Leave a comment