struts2+hibernate一周小项目总结

引用—黑马程序员—的一段话:

---------------------------------------------------------------------------------------------------------------------------------

         写博客就是一周工作中遇到哪些问题,一个好处就是 可以进行一个总结,另外一个好处就是下次遇到同样的问题即使那你记不住,也可以翻看你的博客解决了。同样也可以帮到别人遇到与你一样问题的人。或者别人有 比你更好的解决办法,可以一起讨论,分析出更好的解决方法。所以这是个好习惯。既然是好习惯,那就得坚持。

         对上面的观点很是赞同,但也不免有自己的一些私心,比如,让更多的人去关注你以便更有成就感之类的……,以自己现在的心态还做不了那么超俗的事情。

下面进入正文:

         先介绍一下这个小项目的由来:从上上周(本博文时间:2014-05-19,周一)开始,开始自学SSH三大框架,为了能够高效的学习,跟一个挚友(小B)协作学习,我学struts2,他学hibernate,这样可以大大的提高效率,推荐给大家。学习一周后,刚好同学有一个小项目要作为期末的作业,小B就答应帮他们做一个(做坏事了,帮别人做作业-_-),同时可以练习一下struts2+hibernate。

简单介绍一下小项目:

         菜谱查询的网站,名称为美食厨房。

         功能:1、浏览全部菜谱

                     2、查询菜谱(按名称、食材、菜系)

                     3、用户可以注册、登录、评论

                     4、联系我们(网友可通过我们上传菜谱照片)

5、备注:主页上有推荐餐厅的滚动图片。还有一个管理员登录的账户,可进行菜谱的管理和维护。

项目正式开始:

首先是数据库的设计:

         我做项目的原则,怎么简单怎么来(毕竟是帮他人做作业,也没有想那么复杂)。数据库总共有六张表,用户表:t_user、         菜谱表:t_menu、评论表:t_comment、菜系表:t_category、菜谱和菜系的中间表:t_menu_category、后台用户表:t_admin。



这是刚开始的数据库关系表,后来为了方便,在评论表里面加了一个用户名字段。做到菜系的时候,发现中间表没有ID,特别的麻烦,后来只能加上ID,以便操作。

注意:

         在真正的导入到数据库的时候,表之间的关联都要去掉。

 

搭建环境:

         版本:hibernate-release-4.3.5.Final     struts-2.3.16.2

         其实搭建环境,也就是把所需要的包导入,然后加点配置文件即可。

         问题:由于我们是看马士兵的视频自学的,视频比较老,而我们用的环境又是最新的,所以有些地方不太一样,全部是靠自己摸索,靠白老师和谷老师帮忙才能解决。主要问题在于hibernate,创建SessionFactory的方法完全和以前的版本不一样,尽管我们参考了官方文档的方法还是有错误,然后这种查。。。。。。最后在谷老师的帮助下,发现官方文档貌似有点小BUG,只好采取网友提供的方法,对官方文档稍加改动,成功的使用hibernate4.3.5.Final的新方法创建了sessionFactory

 

层次的划分:

         采用典型的MVC架构划分层次。

         包的配置:



        

如上图:分为四个大层次的包,包内又根据模块进行划分。(通过这次小项目的练习,对MVC有了更好的理解)

 

页面的设计:

         为了方便开发,所有页面的设计参考了--美食杰 --这个网站,但是并没有直接把人家网站扒下来用,而是作为参考,自己写所有的HTML代码,进一步熟悉HTMLCSSJS的操作,为了练习Jquery,所有的JS都是用Jquery写的。

         问题:因为以前学习jsp+servlet的时候自己做过一个商城的项目,当时改页面是一个很大的麻烦,因为没有用HTML的框架。所以,这次用了framesetframeiframe。以前完全没有用过,所以问题特别的多,还好通过不断的尝试,查文档,问白、谷老师,终于掌握的有点小意思了。

 

数据的插入:

         数据库的设计上,考虑到了假删除,所以设计了一个isDelete字段,类型:char。默认值:N。刚开始hibernate用的是XML配置的形式,后来我感觉annotation比较顺应时代的潮流,也比较方便简单,所以全部改为annotation的形式。

         问题:1、关键的生成策略,由于这些看了视频教程,加了mysql的主键生成策略,没有遇到任何问题。

                     2、默认值的插入,由于数据库里面设定了默认值,所以没有太注意这个,后来发现,数据库里面的isDelete字段全不是null,没有数据。当然、为了解决问题(顺便说一下解决问题的方法,首先这种尝试,然后查文档+各种尝试,最后问百谷老师+各种尝试),

首先用了一种自认为可以解决的方法:

         publicString getIsDelete() {

         this.isDelete = ‘N’ ;

         return this.isDelete ;

}

这种解决方法就是在isDeletegetter方法中加上了默认值,这样在插入的时候可以插入数据,刚开始以为没有任何问题,但小B做后台的时候,发现不能进行假删除(假删除:把isDeleteN改为Y)。问题就是因为这里,设置了默认值是N。所以不能更改为Y。然后又是各种尝试、查文档、问百谷。最后用注解解决这一问题:

         @Entity

         @DynamicInsert

****************************

         @Column(columenDefination=”chardefault N”)

         publicchar getIsdelete() {

                   returnthis.isdelete;

         }

 

终于解决问题,注意@Column(columenDefination=”chardefault N”)这个里面”chardefault N”这个千万不能写错,因为这个是直接插入到DDL语句里面的。

 

登录、注册:

         关于登录、注册的JS验证就不多说什么了,这个没有什么好说的,用Jquery只要你有够多的想法,就有够过的做法。

         关于登录用户名密码正确的判断,还有注册用户名重复的判断:



        

if(list.size() > 0) 这个是要注意的地方,不能写成 if(list !=null)。因为你已经实例化了list,即使里面没有数据,它也不是null。但是它的长度是0

 

多表联合查询:

         关于这个,因为我做的前台,没有太多的涉及到。只有在评论和用户联系起来的时候遇到了点小问题,但是我通过在数据库的评论表里面加了一个用户名的字段,这一取巧而无耻的方法解决了。如果真的要做多表联合查询的话,HQL语句不是难点,需要注意的就是,要单独建立一个bean,来保存查询出来的数据。虽说麻烦一些,但是能够看的清楚都查询出来那些数据。

 

<s:iterator>

         这个没什么好说的,就是用到的时候遇到了一点小问题而已,这种尝试就解决问题了。

 

上传图片:

         这个也不多说了,这些东西,估计也很少有人去记。用到的时候去查一下,或者copy一下以前的就可以了,理解也不难,就是死东西呗。做的时候,用的是struts2,以前用过servlet的上传,这次通过百谷查了一下,一看就能够明白怎么回事,所以就不多说了。

 

路径问题:

         因为用的IDEmyeclipse,新建的JSP都会有base=xxxxxx;这个东西,所有路径都是从跟路径开始的绝对路径。但是,注意:::::在JS里面写的时候这个路径不会自带上去,所以,在做图片上传的时候,因为有两个用作submitbutton,我要通过JS来控制FORMaction地址,在JS中就要用到完全的绝对路径了(这里不知道大家能不能理解)。

 

$uploadImage.click(function() {

                   $form.attr("action","/MeiShiJie/menu/Menu_uploadImage.action");

                   $form.submit();

}) ;

---------------------------------------------------------------------------------------------------------------------------------

由于整个小项目就用了一周的时间,天天在上班(实习期)不忙的时候,和下班的时间自己加班完成的,基本上天天熬夜的哪种,所以问题没有天天的进行总结,现在大概就总结这些吧。

通过这个小项目的练习,感觉这样对SSH框架的学习特别的快,掌握的也比较好。

 

由于私人原因,源代码就不共享出来了,大家见谅。有问题可以直接问我:QQ2378239215

原创文章 27 获赞 18 访问量 3万+

猜你喜欢

转载自blog.csdn.net/b635781894/article/details/26229819
今日推荐