在最近的课程设计中,要求我们使用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>