zoukankan      html  css  js  c++  java
  • 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>

       

         

      

  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/maxshare/p/10441029.html
Copyright © 2011-2022 走看看