这一阵子在MyEclipse里做项目,用到了Struts和hibernate功能,起初,对自动生成赞不绝口,但后来,发现自动生成的代码也有不方便的地方,比如:
一、Struts
当new一个JSP,使用Standard JSP using Struts 1.2时,生成的页面代码中只包含了Struts标签。但很多时候,我们需要在页面中使用到JSTL标签,我们应该把常用的几个JSTL标签加到JSP页 面中,就像这样:
- <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
- <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
- <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
- <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
其次,Struts1.2的
<html:base>
<html:base>
似乎有些问题,它表示的地址是当前页面的地址,而不是应用程序的根目录,因此,这个base我们还是得用内嵌的Java代码得到,就像这样:
</html:base>
</html:base>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"
- +request.getServerPort()+path+"/";
- %>
然后在之间加入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的说 明,关键部分如下:
- 2) Edit the velocity templates you wish to customize.
-
- Note: POJO templates are present in the pojo folder
- DAO template in the dao folder
- HBM templates in the hbm folder
-
- 3) Optional: Though not necessary, it is recommended that you delete the
- velocity templates you do not plan to customize. This will prevent future
- confusion over which templates are being processed by MyEclipse.
-
- 4) Invoke the JPA/EJB3/Hibernate Reverse-Engineering wizard and select
- "Use custom templates". Manually enter or click the browse button to select the
- 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)】是一个典型的Web应用程序,它结合了Struts2框架、JavaServer Pages(JSP)以及Data Access Object(DAO)模式,旨在高效地管理和维护学校的宿舍资源。这个系统的核心是通过...
Struts2和Hibernate是两种非常重要的Java开源框架,它们在企业级Web开发中扮演着核心角色。Struts2是一款强大的MVC(Model-View-Controller)框架,它为构建基于J2EE的Web应用程序提供了结构化的支持。而Hibernate则...
6. **zt1803_struts_LoginAndRegister**:这个文件可能是一个包含所有项目源码的目录,包括JSP页面、Struts2配置、Hibernate映射文件、Java类以及其他相关资源。开发者可以下载并研究这个文件来理解整个项目的实现...
Struts、DAO(Data Access Object)和Hibernate是Java Web开发中的三个重要框架,它们共同构建了一个强大且灵活的后端架构。在这个“Struts + DAO + Hibernate可直接运行程序”中,我们可以深入理解这三个框架如何...
6. **JSP和标签库**:在视图层,通常使用JSP和Struts提供的标签库(如DisplayTag或自定义标签)展示分页效果,包括页码、每页记录数选择、导航链接等。 7. **性能优化**:在实际应用中,为了提高分页性能,可能还...
这个实例不仅提供了一个学习如何整合Struts、DAO和Hibernate的基础模板,也演示了如何在实际项目中实现用户认证这一常见功能。对于初学者,这是一个很好的起点,帮助他们理解这些框架和技术在实际开发中的应用。通过...
Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...
为了使Struts、DAO和Hibernate能够正常工作,还需要配置数据源。这里使用的是Apache Commons DBCP作为连接池实现。数据源配置示例如下: ```xml <name>factory <value>org.apache.commons.dbcp....
1. **源代码**:包含Struts的Action类、Spring的配置文件(如 applicationContext.xml 和struts-config.xml 或 struts2的配置文件)、Hibernate的实体类、映射文件以及DAO(数据访问对象)层。 2. **Web部署描述符*...
根据标题、描述和部分内容,知识点覆盖范围主要集中在Java Web开发领域,并且包括了JSP、Servlet、Ajax以及SSH框架(Struts 2、Spring、Hibernate)的技术整合和实战案例分析。 JSP(Java Server Pages)是一种动态...
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 ...
在文件"bookstore"中,可能包含了系统的主要源代码和配置文件,如Action类、DAO(Data Access Object)类、实体类、JSP页面、Struts和Hibernate的配置文件等。这些文件共同构成了网上图书系统的功能模块,实现了图书...
总的来说,这个用户管理系统展示了如何将JSP、Struts2和Hibernate结合使用,以实现一个功能完善的用户登录和管理应用。通过学习和理解这个项目,开发者可以深入理解Java Web开发中的MVC架构,掌握如何组织和管理项目...
Struts1、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而将它们整合在一起,可以构建出高效、灵活的企业级应用程序。这里我们主要探讨这三者整合时所需的核心jar包以及它们的功能。 ...
此外,Struts2支持多种结果类型和模板技术,如JSP、FreeMarker等,使开发者有更多选择来展示数据。 接下来是Spring框架,它是一个全面的企业级应用开发框架,不仅支持IoC(Inversion of Control,控制反转)和DI...
至于Apache Tomcat,它是广泛使用的Java Servlet和JavaServer Pages(JSP)容器,也是Struts2、Spring4和Hibernate运行的基础。在这个压缩包中包含的Apache Tomcat 8.0.47是Tomcat的一个版本,它提供了运行Java Web...
在Struts中,配置文件(struts-config.xml)定义了Action和ActionForm之间的映射,以及Action转发到的JSP页面。此外,Struts还提供了国际化、异常处理、验证等功能。 **Spring框架**: Spring是全面的后端应用程序...
5. 视图层页面(index.jsp、login.jsp):显示登录表单和登录结果。 开发过程中,我们还需要确保Struts2和Hibernate的依赖库已经正确导入,并且数据库配置文件(如hibernate.cfg.xml)设置正确。此外,对于安全性方面...
1. **PriceAction**:Struts Action类,负责接收前端请求,调用Service进行处理,并将结果返回给JSP页面。 2. **PriceService**:Service层接口及其实现,定义了价格管理的业务逻辑,如添加、修改、查询价格等。 3. ...
Struts和Hibernate是Java Web开发中的两个重要框架,它们在构建MVC(Model-View-Controller)架构的应用程序中起到关键作用。这个压缩包“JSP源码——Struts+Hibernate实现MVC_strutsmvc.zip”显然包含了使用这两种...