ssm+RESTful bbs项目后端主要设计

小谈

帖主妥妥的一名"中"白了哈哈哈。软工的大三狗了,也即将找工作,怀着丝丝忐忑接受社会的安排。这是第一次写博客(/汗颜),其实之前在学习探索过程中,走了不少弯路,爬过不少坑。真的挺感谢一路上的前辈们的博客也好,随笔也好,哪怕是评论,或多或少解决了一些问题。我感觉学技术的过程中,记录下自己解决问题的过程、经验,如果可以的话能分享,其实也挺好。希望能从“中白”变“大白”,再到佬行列哈哈。

简介:

这次主要是基于ssm框架和mysql在idea上写的,restful风格使用起来url感觉比传统的更简洁点。就没有写前台了,不过在代码的注释里包含了ajax的从前台获取值的说明,也(瞎)写了一些jsp的名称。主要还是将ssm的框架搭建完整,记录当时在配置时出现一些问题及解决。写个bbs的小实例。(restful戳这 https://blog.csdn.net/qq_21383435/article/details/80032375 ,完整的代码在githubhttps://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 )
View Code

 设计时在reply(回复表)和comment(评论表)的逻辑花不少时间,考虑的是前台每个帖子详情下面,用户可以对帖主评论,而在每个评论下面其他用户可以对该评论回复,就像贴吧的楼主一样。一般评论或回复都可以删除,在设计时产生了不少外码依赖(可能设计的有点水/汗颜),如果删除帖子或者评论,建立联级删除后原来关联的评论回复记录都没有,但这并不是我们想要的,所以就加了外码的SET NULL依赖,只是把外码设置成null就行。(mysql解决外码依赖https://www.cnblogs.com/xiohao/archive/2013/06/28/3160265.html

 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;
View Code

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>

   

     

  

猜你喜欢

转载自www.cnblogs.com/maxshare/p/10441029.html