ssm+RESTful bbs项目后端主要设计
小谈:
帖主妥妥的一名"中"白了哈哈哈。软工的大三狗了,也即将找工作,怀着丝丝忐忑接受社会的安排。这是第一次写博客(/汗颜),其实之前在学习探索过程中,走了不少弯路,爬过不少坑。真的挺感谢一路上的前辈们的博客也好,随笔也好,哪怕是评论,或多或少解决了一些问题。我感觉学技术的过程中,记录下自己解决问题的过程、经验,如果可以的话能分享,其实也挺好。希望能从“中白”变“大白”,再到佬行列哈哈。
简介:
这次主要是基于ssm框架和mysql在idea上写的,restful风格使用起来url感觉比传统的更简洁点。就没有写前台了,不过在代码的注释里包含了ajax的从前台获取值的说明,也(瞎)写了一些jsp的名称。主要还是将ssm的框架搭建完整,记录当时在配置时出现一些问题及解决。写个bbs的小实例。(restful戳这 ,完整的代码在github:https://github.com/ismaxaaa/bbs)
步骤:
1.数据库设计:
1 create table user ( 2 user_id int(11) not null auto_increment, 3 user_name varchar(50) default null, 4 email varchar(50) default null, 5 replys int(11) default null, 6 topics int(11) default null, 7 create_time timestamp not null default current_timestamp, 8 praises int(11) default null, 9 primary key (user_id) 10 ) 11 12 create table post ( 13 topic_id int(11) not null auto_increment, 14 user_id int(11) not null, 15 title varchar(100) not null, 16 content` varchar(20140) not null, 17 create_time timestamp not null default current_timestamp, 18 lastset_time timestamp not null default current_timestamp on 19 update current_timestamp, 20 primary key (topic_id), 21 foreign key (use_id) references user (user_id) 22 ) 23 24 create table comment ( 25 comment_id int(11) not null auto_increment, 26 topic_id int(11) not null, 27 user_id int(11) not null, 28 comment_time timestamp not null default current_timestamp, 29 content varchar(200) not null, 30 primary key (comment_id), 31 foreign key (use_id) references user (user_id), 32 foreign key (topic_id) references post(topic_id) 33 ) 34 35 create table reply ( 36 reply_id int(11) not null auto_increment, 37 comment_id int(11) not null, 38 reply_user int(11) not null, 39 reply_time timestamp not null default current_timestamp, 40 content varchar(200) not null, 41 primary key (reply_id), 42 foreign key (comment_id) references comment (comment_id) 43 foreign key (reply_user) references user (user_id) 44 ) 45 46 create table praise ( 47 id int(11) not null auto_increment, 48 topic_id int(11) not null, 49 user_id int(11) not null, 50 primary key (`id`), 51 foreign key (use_id) references user (user_id) 52 foreign key (topic_id) references post (topic_id) 53 )
设计时在reply(回复表)和comment(评论表)的逻辑花不少时间,考虑的是前台每个帖子详情下面,用户可以对帖主评论,而在每个评论下面其他用户可以对该评论回复,就像贴吧的楼主一样。一般评论或回复都可以删除,在设计时产生了不少外码依赖(可能设计的有点水/汗颜),如果删除帖子或者评论,建立联级删除后原来关联的评论回复记录都没有,但这并不是我们想要的,所以就加了外码的set null依赖,只是把外码设置成null就行。(mysql解决外码依赖)
1 comment : 2 alter table comment add constraint comment_cons 3 foreign key(topic_id) 4 references post(topic_id) 5 on delete set null; 6 7 reply: 8 alter table reply add constraint reply_cons 9 foreign key(comment_id) 10 references comment(comment_id) 11 on delete set null; 12 13 praise: 14 alter table praise add contraint praise_cons 15 foreign key(topic_id) 16 references post(topic_id) 17 on delete set null;
2.resful设计:
3.idea创建项目:
创建完整后:
具体的项目的创建过程就不展示了(/抱拳)
这个是使用maven创建的,maven最好的就是可以直接在pox.xml写依赖,可以自动下载所需的依赖包,而不用自己手动导入jar包。不过注意要改一下maven的setting.xml的下载源,添加下载仓库,这样下载就很快咯。
4.配置文件的说明:
在main下新建一个resources资源,这里面主要是放spring的mvc的相关核心配置文件的。mapper是dao层的的映射,里面主要是每个dao相关的sql语句。spring里面放的是dao层、service、controller层的spring配置,如置数据库连接池,扫描包的注解类型,servlet的配置等等。在源码里有相关配置的简单的注释。
5.出现的问题及解决:
1.在配置jdbc.properties时,什么driver、url、username、password都没问题,但在spring-dao.xml中配置数据库的连接池,使用数据库的相关参数也就是jdbc.proerties,最后测试时总体是连接超时拒绝。把相关的参数直接写在value值时,又没问题。。。最后整了半天,总算查到了原因:spring4.0 在引入外部property文件需要使用下面的格式。3.0可以直接使用第二种。
<!-- 引入jdbc配置文件 --> <bean id="propertyconfigurer" class="org.springframework.beans.factory.config.propertyplaceholderconfigurer"> <property name="locations"> <list> <!--要是有多个配置文件,只需在这里继续添加即可 --> <value>classpath:properties/*.properties</value> </list> </property> </bean>
<context:property-placeholder location="classpath:jdbc.properties" />
2.还有一个是提示,mybatis.xml的什么哪个setting出错,最后查到只要将settings的那个设置删掉就行。
3.在pom.xml中添加资源文件路径配置,没添加在加载配置文件可能会提示路径找不到。
<resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> <filtering>true</filtering> </resource> </resources>
上一篇: 张定边是个什么样的人?吓得朱元璋夜不能寐