小谈

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

简介:

这次主要是基于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.数据库设计:

 CREATE TABLE user (
user_id int(11) NOT NULL AUTO_INCREMENT,
user_name varchar(50) DEFAULT NULL,
email varchar(50) DEFAULT NULL,
replys int(11) DEFAULT NULL,
topics int(11) DEFAULT NULL,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
praises int(11) DEFAULT NULL,
PRIMARY KEY (user_id)
) CREATE TABLE post (
topic_id int(11) NOT NULL AUTO_INCREMENT,
user_id int(11) NOT NULL,
title varchar(100) NOT NULL,
content` varchar(20140) NOT NULL,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
lastset_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (topic_id),
FOREIGN KEY (use_id) REFERENCES user (user_id)
) CREATE TABLE comment (
comment_id int(11) NOT NULL AUTO_INCREMENT,
topic_id int(11) NOT NULL,
user_id int(11) NOT NULL,
comment_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
content varchar(200) NOT NULL,
PRIMARY KEY (comment_id),
FOREIGN KEY (use_id) REFERENCES user (user_id),
FOREIGN KEY (topic_id) REFERENCES post(topic_id)
) CREATE TABLE reply (
reply_id int(11) NOT NULL AUTO_INCREMENT,
comment_id int(11) NOT NULL,
reply_user int(11) NOT NULL,
reply_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
content varchar(200) NOT NULL,
PRIMARY KEY (reply_id),
FOREIGN KEY (comment_id) REFERENCES comment (comment_id)
FOREIGN KEY (reply_user) REFERENCES user (user_id)
) CREATE TABLE praise (
id int(11) NOT NULL AUTO_INCREMENT,
topic_id int(11) NOT NULL,
user_id int(11) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (use_id) REFERENCES user (user_id)
FOREIGN KEY (topic_id) REFERENCES post (topic_id)
)

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

  comment :
alter table comment add constraint comment_cons
foreign key(topic_id)
references post(topic_id)
on delete set null; reply:
alter table reply add constraint reply_cons
foreign key(comment_id)
references comment(comment_id)
on delete set null; praise:
alter table praise add contraint praise_cons
foreign key(topic_id)
references post(topic_id)
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>

     

ssm+RESTful bbs项目后端主要设计的更多相关文章

  1. 小福bbs—项目系统设计与数据库设计

    这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 实现对校园论坛软件的制作,使其能够发布帖子,查看信息等 作业的正文 小福bbs--项目需求分析 ...

  2. 开源项目练习EF+jQueryUI前后端分离设计

    最近大家流行把项目开源,我也来玩玩.只是开源公司项目不好,小弟只好从公司项目经验上另外弄出一套练习开源给大家. 这个项目可以做简单的团队任务系统(做一些简单的任务分配,没经过严格测试.功能单一别喷啊, ...

  3. 后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用

    mybatis pagehelper想必大家都耳熟能详了,是java后端用于做分页查询时一款非常好用的分页插件,同时也被人们称为mybatis三剑客之一,下面 就给大家讲讲如何在SSM项目和sprin ...

  4. SpringMVC详解及SSM框架整合项目

    SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...

  5. Atitit 项目的主体设计与结构文档 v3

    Atitit 项目的主体设计与结构文档 v3 1. 实现的目标2 1.1. cross device跨设备(pc 手机 平板)作为规划2 1.2. 企业级Java体系与开发语言2 1.3. 高扩展性, ...

  6. EF+jQueryUI前后端分离设计

    开源项目练习EF+jQueryUI前后端分离设计   最近大家流行把项目开源,我也来玩玩.只是开源公司项目不好,小弟只好从公司项目经验上另外弄出一套练习开源给大家. 这个项目可以做简单的团队任务系统( ...

  7. BBS项目详解(forms快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)

    BBS项目涉及的知识点 django中知识点 钩子函数(局部钩子和全局钩子) 1.局部钩子就是用来做合法性校验,比如用户名有没有被使用等 2.全局的就是用来做对比校验,比如两次输入的密码是否一致 3. ...

  8. Atitit 项目的主体设计与结构文档 v5

    Atitit 项目的主体设计与结构文档 v5 1. 版本历史说明2 2. 功能大概说明2 3. 实现的目标3 3.1. cross device跨设备(pc 手机 平板)3 3.2. cross sc ...

  9. Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)

    Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享)  点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...

随机推荐

  1. PAT 1009. Triple Inversions (35) 数状数组

    Given a list of N integers A1, A2, A3,...AN, there's a famous problem to count the number of inversi ...

  2. LintCode 190: Next Permutation

    LintCode 190: Next Permutation 题目描述 给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列. 如果没有下一个排列,则输出字典序最小的序列. 样例 ...

  3. Selenium/HtmlUnit设置代理获取JS生成的网页

    通常我们使用Java提供的HttpURLConnection或者Apache的HttpClient获取的网页源代码都是直观可见的,其代码的内容和通过浏览器右键网页->点击查看网页源代码的内容一致 ...

  4. MM(Majorize-Minimization, Minorize-Maximization)优化方法

    MM算法思想 MM算法是一种迭代优化方法,它利用函数的凸性来找到原函数的最大值或最小值.当原目标函数\(f(\theta)\)较难优化时,算法不直接对原目标函数求最优解,而去求解逼近于原目标函数的一个 ...

  5. Ice Cream Tower Gym - 101194D (贪心 + 二分 )

    题目链接 : https://cn.vjudge.net/problem/Gym-101194D 题目大意 : 给你n个冰激凌球,让你用这些冰激凌球去垒冰激凌,要求是下面的这一个必须是他上面一个的两倍 ...

  6. 导航狗IT周报-2018年05月27日

    原文链接:https://www.daohanggou.cn/2018/05/27/it-weekly-9/ 摘要: “灰袍技能圈子”将闭圈:物理安全:为什么我们现在的生活节奏越来越快? 技术干货 1 ...

  7. 发行NEO的NEP-5合约代币

    NEO常见的资产有三种 TOKEN (全局资产) Share (全局资产,股份 ) NEP-5 (合约代币,相当于ETH的ERC20) NEP-5 合约代码 https://github.com/AN ...

  8. Redis使用详细教程【转】

    转自 Redis使用详细教程 - wangyuyu - 博客园http://www.cnblogs.com/wangyuyu/p/3786236.html 一.Redis基础部分: 1.redis介绍 ...

  9. 宝塔Linux面板新手安装教程【转】

    一.使用远程连接软件 (如 Putty.XShell) 连接你的Linux服务器,本教程以 Putty 为例. 1.动 Putty.exe 程序,进入 Putty 主界面. 2.在 Host Name ...

  10. julia 1.0如何使用pkg

    输入]进入pkg模式 add 加包名即可安装,如 add Cxx