天天看点

SpringNote01.基于SpringMVC-Hibernate的Blog系统

    近期,在学习Spring,做这样一个简单的blog系统,主要是让自己动手练习使用Spring,熟练的使用才能进一步的深入学习。该项目使用Maven构建,使用git进行代码管理,通过这样一个小项目,熟悉了这两个工具的使用。代码托管在github上,感兴趣的同学可以一起来完善。

    项目地址:https://github.com/defshine/SpringBlog

    项目主要使用SpringMVC和Hibernate,后台数据库使用MySQL。前端使用Tiles和Boostrap。

    初步的设计,比较简单,数据设计,设计的pdm文件也在github上:

SpringNote01.基于SpringMVC-Hibernate的Blog系统

    目前后台管理主要设计实现四个功能模块:

       1.发表文章。

       2.文章管理

       3.分类管理

       4.评论管理

    目前实现的功能比较简单,在开发的过程中也遇到了一些小问题。

    问题一:org.hibernate.HibernateException: No Session found for current thread

         一开始集成springmvc和hibernate的时候,遇到这个问题,各种搜索,主要有两个原因:

         1.sessionFactory的配置位置是否正确。

         在web.xml中   

SpringNote01.基于SpringMVC-Hibernate的Blog系统

应该配置在business-config中,而不是在mvc-core-config中。所以,要理清context的关系。这种配置,sessionFactory会在rootWebApplicationContext中管理,而mvc是由子WebApplicationContext进行管理。

2.spring的事务配置是否正确。

        首先是在xml中配置使用正确,是否使用正确注解。

SpringNote01.基于SpringMVC-Hibernate的Blog系统

    然后,在service层相关的方法中,使用@Transactional注解。

   而自己出现问题是在配置这个文件时,在头部引用了错误的xmlns。

    问题二:springmvc无法获取PUT和DELETE请求的参数。

    由于在设计API时候,参考了restful设计原则,更新和删除的时候使用PUT和DELETE请求,结果在cotroller的方法中无法通过httpServletRequest或者@

RequestParam注解获取请求参数。一种比较好的解决方法是使用@RequestBody注解获取参数。

    在排查问题时候,再次感受谷歌搜索到强大。吐槽一下垃圾百度。

    后续的开发:

    首先,完成blog的展示,目前前端页面已经做好。

    然后,使用Spring中的知识点优化细节,如:国际化、主题等等。

    最后,将这个小系统的一些功能细节完善,如:分页等等。

继续阅读