ssm+RESTful bbs项目后端主要设计
小谈:
帖主妥妥的一名"中"白了哈哈哈。软工的大三狗了,也即将找工作,怀着丝丝忐忑接受社会的安排。这是第一次写博客(/汗颜),其实之前在学习探索过程中,走了不少弯路,爬过不少坑。真的挺感谢一路上的前辈们的博客也好,随笔也好,哪怕是评论,或多或少解决了一些问题。我感觉学技术的过程中,记录下自己解决问题的过程、经验,如果可以的话能分享,其实也挺好。希望能从“中白”变“大白”,再到佬行列哈哈。
简介:
这次主要是基于ssm框架和mysql在idea上写的,restful风格使用起来url感觉比传统的更简洁点。就没有写前台了,不过在代码的注释里包含了ajax的从前台获取值的说明,也(瞎)写了一些jsp的名称。主要还是将ssm的框架搭建完整,记录当时在配置时出现一些问题及解决。写个bbs的小实例。(restful戳这 https://blog.csdn.net/qq_21383435/article/details/80032375 ,完整的代码在github:https://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项目后端主要设计的更多相关文章
- 小福bbs—项目系统设计与数据库设计
这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 实现对校园论坛软件的制作,使其能够发布帖子,查看信息等 作业的正文 小福bbs--项目需求分析 ...
- 开源项目练习EF+jQueryUI前后端分离设计
最近大家流行把项目开源,我也来玩玩.只是开源公司项目不好,小弟只好从公司项目经验上另外弄出一套练习开源给大家. 这个项目可以做简单的团队任务系统(做一些简单的任务分配,没经过严格测试.功能单一别喷啊, ...
- 后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用
mybatis pagehelper想必大家都耳熟能详了,是java后端用于做分页查询时一款非常好用的分页插件,同时也被人们称为mybatis三剑客之一,下面 就给大家讲讲如何在SSM项目和sprin ...
- SpringMVC详解及SSM框架整合项目
SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...
- Atitit 项目的主体设计与结构文档 v3
Atitit 项目的主体设计与结构文档 v3 1. 实现的目标2 1.1. cross device跨设备(pc 手机 平板)作为规划2 1.2. 企业级Java体系与开发语言2 1.3. 高扩展性, ...
- EF+jQueryUI前后端分离设计
开源项目练习EF+jQueryUI前后端分离设计 最近大家流行把项目开源,我也来玩玩.只是开源公司项目不好,小弟只好从公司项目经验上另外弄出一套练习开源给大家. 这个项目可以做简单的团队任务系统( ...
- BBS项目详解(forms快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)
BBS项目涉及的知识点 django中知识点 钩子函数(局部钩子和全局钩子) 1.局部钩子就是用来做合法性校验,比如用户名有没有被使用等 2.全局的就是用来做对比校验,比如两次输入的密码是否一致 3. ...
- Atitit 项目的主体设计与结构文档 v5
Atitit 项目的主体设计与结构文档 v5 1. 版本历史说明2 2. 功能大概说明2 3. 实现的目标3 3.1. cross device跨设备(pc 手机 平板)3 3.2. cross sc ...
- Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)
Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享) 点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...
随机推荐
- 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 ...
- LintCode 190: Next Permutation
LintCode 190: Next Permutation 题目描述 给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列. 如果没有下一个排列,则输出字典序最小的序列. 样例 ...
- Selenium/HtmlUnit设置代理获取JS生成的网页
通常我们使用Java提供的HttpURLConnection或者Apache的HttpClient获取的网页源代码都是直观可见的,其代码的内容和通过浏览器右键网页->点击查看网页源代码的内容一致 ...
- MM(Majorize-Minimization, Minorize-Maximization)优化方法
MM算法思想 MM算法是一种迭代优化方法,它利用函数的凸性来找到原函数的最大值或最小值.当原目标函数\(f(\theta)\)较难优化时,算法不直接对原目标函数求最优解,而去求解逼近于原目标函数的一个 ...
- Ice Cream Tower Gym - 101194D (贪心 + 二分 )
题目链接 : https://cn.vjudge.net/problem/Gym-101194D 题目大意 : 给你n个冰激凌球,让你用这些冰激凌球去垒冰激凌,要求是下面的这一个必须是他上面一个的两倍 ...
- 导航狗IT周报-2018年05月27日
原文链接:https://www.daohanggou.cn/2018/05/27/it-weekly-9/ 摘要: “灰袍技能圈子”将闭圈:物理安全:为什么我们现在的生活节奏越来越快? 技术干货 1 ...
- 发行NEO的NEP-5合约代币
NEO常见的资产有三种 TOKEN (全局资产) Share (全局资产,股份 ) NEP-5 (合约代币,相当于ETH的ERC20) NEP-5 合约代码 https://github.com/AN ...
- Redis使用详细教程【转】
转自 Redis使用详细教程 - wangyuyu - 博客园http://www.cnblogs.com/wangyuyu/p/3786236.html 一.Redis基础部分: 1.redis介绍 ...
- 宝塔Linux面板新手安装教程【转】
一.使用远程连接软件 (如 Putty.XShell) 连接你的Linux服务器,本教程以 Putty 为例. 1.动 Putty.exe 程序,进入 Putty 主界面. 2.在 Host Name ...
- julia 1.0如何使用pkg
输入]进入pkg模式 add 加包名即可安装,如 add Cxx