浏览 4029 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-19
一、Struts 当new一个JSP,使用Standard JSP using Struts 1.2时,生成的页面代码中只包含了Struts标签。但很多时候,我们需要在页面中使用到JSTL标签,我们应该把常用的几个JSTL标签加到JSP页 面中,就像这样:
其次,Struts1.2的
</html:base> </html:base>
然后在之间加入base标签:
这样,用起来才比较方便一点。但每次都改页面,显然做了很多重复的劳动,我想MyEclipse在生成这样的页面时,肯定用到了模板。那么到底是那个模板呢?我们来搜搜看。 首先说明一下,我用的不是MyEclipse的All-In-One安装,所以有两个目录,一个是Eclipse的解压目录,另一个才是 MyEclipse的安装目录:MyEclipse 5.5.1 GA。如果用的All-In-One安装,可能只有一个目录,就是MyEclipse 5.5.1 GA。这里,我就把这个目录称为安装目录了。 在安装目录下搜索:Struts-1_2.vtl,可以得到这个文件,打开看看,其头部结构与生成的页面很相似,因此,我们只需要在适当的地方添上自己的代码即可。修改前还是要注意备份。 二、hibernate 使用Hibernate Reverse Engineering最大的好处就是它可以自动生成PO和DAO的源码,以及映射配置文件。但是看看DAO的代码,才发现里面的数据库操作方法都是实例 方法,用起来还必须先new一个DAO,个人觉得没有这个必要,使用静态方法就可以了,但我不可能给每个DAO的每个方法都加一个static吧。于是, 跟上面一样,改模板。 首先得分析一下,生成的DAO是继承的BaseHibernateDAO,而BaseHibernateDAO是扩展的 IBaseHibernateDAO接口,在这个接口中,定义了getSession方法。要把数据库操作方法改成static,这个 getSession方法也必须是static,但是在接口中不能定义是static的方法,那么唯一的办法就是不管IBaseHibernateDAO 接口,在BaseHibernateDAO类中自己实现一个静态的getSession方法。 BaseHibernateDAO有模板文件,但是没有必要改它,因为一个工程只用得到一个BaseHibernateDAO。我们要改的模板文件是用于 生成具体DAO类的。然而在安装目录下用hibernate关键字搜一搜,并没有发现哪个文件与我们的DAO有关,难道MyEclipse把生成规则写死 在代码里了吗? 我不相信MyEclipse的开发人员那么糊涂,于是用templates关键字搜索了一下,发现了这个: myeclipse_templates_5.5GA.zip,打开一点,发现里面全部是有关hibernate的模板文件,另外有一个readme的说 明,关键部分如下:
上面的意思是:把解压之后的文件夹放在一个方便的地方(不需要放在原目录下,那样找起来很不方便),修改它,然后删掉其他你没有修改的文件,以免发生可能的冲突,最后,在Hibernate Reverse-Engineering的对话框中,钩选Use custom templates,输入你解压后的文件夹(myeclipse_templates_5.5GA)路径,就可以使用到自定义的模板了。 照这个意思,我修改了DAO文件夹下的daohome.vm和facadeif.vm,在其中所有的public标识后加上了static(我也不知道哪 些是hibernatet真正用到的,反正我不用EJB和JPA)。然后照它的意思试 了一把,果然,DAO方法全变成了static。 目前,我还没有充分的证据证明DAO中使用静态方法比实例方法要好,只是觉得使用静态方法方便一些,运用到工程中也没有出错。我想,MyEclipse自 动生成的DAO,使用实例方法,可能有他们的考虑,这就有可能是我没有考虑到的。所以,各位高手如果有充分的经验证明静态方法比实例方法好,那么请给小弟 一个sp,也好让我信心十足地写程序;如果有充分的道理证明实例方法比静态方法好,也请毫不吝惜地拍砖。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |