近期,在学习Spring,做这样一个简单的blog系统,主要是让自己动手练习使用Spring,熟练的使用才能进一步的深入学习。该项目使用Maven构建,使用git进行代码管理,通过这样一个小项目,熟悉了这两个工具的使用。代码托管在github上,感兴趣的同学可以一起来完善。
项目地址:https://github.com/defshine/SpringBlog
项目主要使用SpringMVC和Hibernate,后台数据库使用MySQL。前端使用Tiles和Boostrap。
初步的设计,比较简单,数据设计,设计的pdm文件也在github上:
目前后台管理主要设计实现四个功能模块:
1.发表文章。
2.文章管理
3.分类管理
4.评论管理
目前实现的功能比较简单,在开发的过程中也遇到了一些小问题。
问题一:org.hibernate.HibernateException: No Session found for current thread
一开始集成springmvc和hibernate的时候,遇到这个问题,各种搜索,主要有两个原因:
1.sessionFactory的配置位置是否正确。
在web.xml中
应该配置在business-config中,而不是在mvc-core-config中。所以,要理清context的关系。这种配置,sessionFactory会在rootWebApplicationContext中管理,而mvc是由子WebApplicationContext进行管理。
2.spring的事务配置是否正确。
首先是在xml中配置使用正确,是否使用正确注解。
然后,在service层相关的方法中,使用@Transactional注解。
而自己出现问题是在配置这个文件时,在头部引用了错误的xmlns。
问题二:springmvc无法获取PUT和DELETE请求的参数。
由于在设计API时候,参考了restful设计原则,更新和删除的时候使用PUT和DELETE请求,结果在cotroller的方法中无法通过httpServletRequest或者@
RequestParam注解获取请求参数。一种比较好的解决方法是使用@RequestBody注解获取参数。
在排查问题时候,再次感受谷歌搜索到强大。吐槽一下垃圾百度。
后续的开发:
首先,完成blog的展示,目前前端页面已经做好。
然后,使用Spring中的知识点优化细节,如:国际化、主题等等。
最后,将这个小系统的一些功能细节完善,如:分页等等。
SpringNote01.基于SpringMVC-Hibernate的Blog系统