网站开发:Struts和Hibernate的完美结合

王朝互联网·作者佚名  2012-06-22
窄屏简体版  字體:   |    |    |  超大  

在最近的课程设计中,要求我们使用Struts框架和HIbernate框架结合来完成一个学生选课系统。很多同学因没有学懂这两个框架而有所抱怨,抱怨到为什么不使用MVC模式,因为他们已经对MVC了如指掌。

因此我就不得不说JSO网站开发中存在的两种模式了。

Mode1

简单的说,Mode1模式也分为两种情况,一种是完全使用JSP来开发,而另一种则是使用JSP+JavaBean来开发。这两种方案的唯一优点就在于,适合于小型的网站开发中,例如一个简单的个人主页,使用Mode1模式是你的首选方案。

当然如果你的项目足够小,使用纯JSP来开发,让你的维护也会更加简单。因为它免去了修改JavaBean之后,还需要重新编译为".class"文件的麻烦。

而Mode1的缺点也是不可忽视的,开发过程中,将大量的逻辑处理代码放在了JSP和JavaBean中,这导致了JavaBean复杂度增加,关联程度 提高(也叫耦合度),我们在完美开发中追求的是"高内聚低耦合",所以在大型的项目开发中,我们还是会把Mode1模式丢在一旁的。

Mode1示意图

Mode2

Mode2中是以servlet为主体的,通过servlet接受客户请求,调用不同的JavaBean处理,将结果返回到JSP页面中,如此分工明确, 效率提高,而且方便项目维护,是大型网站建设的首选。在Mode2中,有一个叫做MVC的设计模式。它设计模式分为模型层,显示层,控制层。

MVC设计模式

这样理解MVC和Struts

如果你难以理解MVC和Struts到底有何关联,那么你可以这样认为:MVC是一个定义的标准interface(接口),而Struts只是完美的实现了MVC接口而已。除了Struts,EJB也是一个MVC的实现。

Struts和Hibernate的结合

现在不难理解,在整个"学生选课系统"设计过程中,Struts是用来获取表单数据的,Hibernate是用来持久化对象到数据库的。基本的设计流程为:

一:界面设计,首先你需要将前台的页面构造完美,给使用者留下一个好的印象。

这是我设计的前台登陆界面

二:考虑持久层:就那当前的项目来说,"学生选课系统"当以学生为主,每位学生是可以选择多门学科的,所以存在了一对多的关系,在Hibernate中使 用标签进行关系的映射。通过导出映射关系到数据库中。就可以将对象关系持久化到数据库中了。

三:Struts过程:通过Struts来获得表单数据,再通过调用Hibernate的HQL语句进行数据的验证,是登陆验证的关键所在。等整个系统修 改完毕,我会将具体代码贴出供大家参考。而对于前台数据的验证,我没有使用Javascript和是使用了Struts的Validaate验证框架,如 果你不懂这个,你可以参照<>。

关于Hibernate和Mysql编码问题

编码问题是最让人抓狂的问题,使用Hibernate存入中文字符,而数据库确实一堆的"???"让人很是恼火。我们需要做的就是编码的统一。而 “UTF-8”的编码优势我就不说了,它完全可以支持中午编码显示,所以我们在构造数据库过程中,最后手动为其设置模式编码方式,CREATE DATABASE test DEFAULT CHARSET=UTF8。

之后需要修改的就是Hibernate的编码方式了。方案一:

在“hibernate.cfg.xml”文件中,应该如此写“URL”的配置:

Xml 代码

<property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8</property>

方案二:

1, mysql安装时设置字符集utf-8(包括数据库字符集,以及表的字符集), jdbc驱动用最新的。

2.hibernate配置文件(hibernate.cfg.xml)中,加上属性

Xml 代码

<property name="connection.useUnicode">true</property>

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航