`
trace
  • 浏览: 125450 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义Struts的JSP模板和Hibernate的DAO模板

阅读更多
         这一阵子在MyEclipse里做项目,用到了Struts和hibernate功能,起初,对自动生成赞不绝口,但后来,发现自动生成的代码也有不方便的地方,比如:

一、Struts

          当new一个JSP,使用Standard JSP using Struts 1.2时,生成的页面代码中只包含了Struts标签。但很多时候,我们需要在页面中使用到JSTL标签,我们应该把常用的几个JSTL标签加到JSP页 面中,就像这样:

  1. <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>  
  2. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>  
  3. <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>  
  4. <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>  
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
  6. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>  
  7. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>  
      
          其次,Struts1.2的
  1. <html:base />  
<html:base> <html:base> 似乎有些问题,它表示的地址是当前页面的地址,而不是应用程序的根目录,因此,这个base我们还是得用内嵌的Java代码得到,就像这样:

</html:base> </html:base>
  1. <%  
  2. String path = request.getContextPath();  
  3. String basePath = request.getScheme()+"://"+request.getServerName()+":"
  4.            +request.getServerPort()+path+"/";  
  5. %>  

          然后在之间加入base标签:

  1. "<%=basePath%>">  

          这样,用起来才比较方便一点。但每次都改页面,显然做了很多重复的劳动,我想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的说 明,关键部分如下:

  1. 2) Edit the velocity templates you wish to customize.  
  2.      
  3. Note: POJO templates are present in the pojo folder  
  4.       DAO template in the dao folder  
  5.       HBM templates in the hbm folder  
  6.      
  7. 3) Optional: Though not necessary, it is recommended that you delete the  
  8.    velocity templates you do not plan to customize. This will prevent future  
  9.    confusion over which templates are being processed by MyEclipse.  
  10.   
  11. 4) Invoke the JPA/EJB3/Hibernate Reverse-Engineering wizard and select   
  12.    "Use custom templates". Manually enter or click the browse button to select the   
  13.    myeclipse_templates_5.5GA folder.  

          上面的意思是:把解压之后的文件夹放在一个方便的地方(不需要放在原目录下,那样找起来很不方便),修改它,然后删掉其他你没有修改的文件,以免发生可能的冲突,最后,在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,也好让我信心十足地写程序;如果有充分的道理证明实例方法比静态方法好,也请毫不吝惜地拍砖。
分享到:
评论

相关推荐

    学校宿舍管理系统(Struts2+JSP+DAO)

    【学校宿舍管理系统(Struts2+JSP+DAO)】是一个典型的Web应用程序,它结合了Struts2框架、JavaServer Pages(JSP)以及Data Access Object(DAO)模式,旨在高效地管理和维护学校的宿舍资源。这个系统的核心是通过...

    struts2与Hibernate整合

    Struts2和Hibernate是两种非常重要的Java开源框架,它们在企业级Web开发中扮演着核心角色。Struts2是一款强大的MVC(Model-View-Controller)框架,它为构建基于J2EE的Web应用程序提供了结构化的支持。而Hibernate则...

    jsp+hibernate+struts2简单登录和注册

    6. **zt1803_struts_LoginAndRegister**:这个文件可能是一个包含所有项目源码的目录,包括JSP页面、Struts2配置、Hibernate映射文件、Java类以及其他相关资源。开发者可以下载并研究这个文件来理解整个项目的实现...

    struts + DAO + Hibernate可直接运行程序

    Struts、DAO(Data Access Object)和Hibernate是Java Web开发中的三个重要框架,它们共同构建了一个强大且灵活的后端架构。在这个“Struts + DAO + Hibernate可直接运行程序”中,我们可以深入理解这三个框架如何...

    李兴华\struts\45-使用Struts _ DAO _ Hibernate完成分页

    6. **JSP和标签库**:在视图层,通常使用JSP和Struts提供的标签库(如DisplayTag或自定义标签)展示分页效果,包括页码、每页记录数选择、导航链接等。 7. **性能优化**:在实际应用中,为了提高分页性能,可能还...

    使用Struts + DAO + Hibernate完成用户登陆

    这个实例不仅提供了一个学习如何整合Struts、DAO和Hibernate的基础模板,也演示了如何在实际项目中实现用户认证这一常见功能。对于初学者,这是一个很好的起点,帮助他们理解这些框架和技术在实际开发中的应用。通过...

    struts+spring+hibernate(mysql)用户登录及文件上传

    Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...

    Struts+DAO+Hibernate的登陆

    为了使Struts、DAO和Hibernate能够正常工作,还需要配置数据源。这里使用的是Apache Commons DBCP作为连接池实现。数据源配置示例如下: ```xml &lt;name&gt;factory &lt;value&gt;org.apache.commons.dbcp....

    struts+spring+hibernate

    1. **源代码**:包含Struts的Action类、Spring的配置文件(如 applicationContext.xml 和struts-config.xml 或 struts2的配置文件)、Hibernate的实体类、映射文件以及DAO(数据访问对象)层。 2. **Web部署描述符*...

    java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax

    根据标题、描述和部分内容,知识点覆盖范围主要集中在Java Web开发领域,并且包括了JSP、Servlet、Ajax以及SSH框架(Struts 2、Spring、Hibernate)的技术整合和实战案例分析。 JSP(Java Server Pages)是一种动态...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...

    网上图书系统(Struts+Hibernate+Jsp)

    在文件"bookstore"中,可能包含了系统的主要源代码和配置文件,如Action类、DAO(Data Access Object)类、实体类、JSP页面、Struts和Hibernate的配置文件等。这些文件共同构成了网上图书系统的功能模块,实现了图书...

    用户管理jsp+struts2+hibernate代码

    总的来说,这个用户管理系统展示了如何将JSP、Struts2和Hibernate结合使用,以实现一个功能完善的用户登录和管理应用。通过学习和理解这个项目,开发者可以深入理解Java Web开发中的MVC架构,掌握如何组织和管理项目...

    struts1+spring+hibernate整合所用全部jar包

    Struts1、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而将它们整合在一起,可以构建出高效、灵活的企业级应用程序。这里我们主要探讨这三者整合时所需的核心jar包以及它们的功能。 ...

    Struts2、Spring和Hibernate应用实例

    此外,Struts2支持多种结果类型和模板技术,如JSP、FreeMarker等,使开发者有更多选择来展示数据。 接下来是Spring框架,它是一个全面的企业级应用开发框架,不仅支持IoC(Inversion of Control,控制反转)和DI...

    struts2+spring4+hibernate

    至于Apache Tomcat,它是广泛使用的Java Servlet和JavaServer Pages(JSP)容器,也是Struts2、Spring4和Hibernate运行的基础。在这个压缩包中包含的Apache Tomcat 8.0.47是Tomcat的一个版本,它提供了运行Java Web...

    ssh(struts+spring+hibernate)教务管理信息系统(全部代码) 可以直接运行

    在Struts中,配置文件(struts-config.xml)定义了Action和ActionForm之间的映射,以及Action转发到的JSP页面。此外,Struts还提供了国际化、异常处理、验证等功能。 **Spring框架**: Spring是全面的后端应用程序...

    简单的实现Web登录(struts2+Hibernate)

    5. 视图层页面(index.jsp、login.jsp):显示登录表单和登录结果。 开发过程中,我们还需要确保Struts2和Hibernate的依赖库已经正确导入,并且数据库配置文件(如hibernate.cfg.xml)设置正确。此外,对于安全性方面...

    struts hibernate struts+hibernate 结合做的一个项目

    1. **PriceAction**:Struts Action类,负责接收前端请求,调用Service进行处理,并将结果返回给JSP页面。 2. **PriceService**:Service层接口及其实现,定义了价格管理的业务逻辑,如添加、修改、查询价格等。 3. ...

    JSP源码——Struts+Hibernate实现MVC_strutsmvc.zip

    Struts和Hibernate是Java Web开发中的两个重要框架,它们在构建MVC(Model-View-Controller)架构的应用程序中起到关键作用。这个压缩包“JSP源码——Struts+Hibernate实现MVC_strutsmvc.zip”显然包含了使用这两种...

Global site tag (gtag.js) - Google Analytics