小谈

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

简介:

这次主要是基于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. hdu 1846 Brave Gam

    Brave Game http://acm.hdu.edu.cn/showproblem.php?pid=1846 Time Limit: 1000/1000 MS (Java/Others)     ...

  2. C++设计实现算法时易犯错误

    1.未初始化 指针未初始化为NULL,造成判断条件出错 数值未初始化为0,造成数组超界,内存泄漏 2. long long输入时 lld or I64d 写成d一定出错 3.gcc编译报错:程序中有游 ...

  3. c# 一个关于时间截断的算法取巧

    场景如下: 在某一段时间内(有规律,以一个星期为最大区间),从一个时间区间中排除另外一个或者多个时间区间后,返回时间区间集合. 举例如下: //时间区间:2018-02-01~2018-02-07 / ...

  4. ClassNotFoundException:com.sun.xml.bind.v2.ContextFactory

    项目中引入hive-jdbc-1.2.1-standalone.jar包之后,报错如下: Caused by: javax.xml.bind.JAXBException: Provider com.s ...

  5. net 加密-解密

    #region DES加密 解密 //key:32位 public string DESEncrypt(string strSource, byte[] key) { System.Security. ...

  6. 今日文摘:浅谈 HTML5 的游戏化之路

    如今商业网站中用于广泛的HTML5无限下拉效果已经越来越受到游戏网站的喜爱.各个品牌为了打造专属自己的游戏特色,纷纷推出了模拟HTML5效果的品牌 站,且都起到了相当好的效果.可是从很多方面来说我们对 ...

  7. TreeMap put 操作分析

    public V put(K key, V value) { //t 表示当前节点,记住这个很重要!先把TreeMap 的根节点root 的引用赋值给当前节点 TreeMap.Entry<K,V ...

  8. bootstrap-select,selectpicker 用法详细:通过官方文档翻译

    用过selectpicker的都说好~但是网上中文的教程又找不到比较完整的用法,于是去官网看了下 顺便弄过来翻译一下: 选项可以通过数据属性或JavaScript传递.对于数据属性,附加选项名称dat ...

  9. 【leetcode 简单】第三题 回文数

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向 ...

  10. 爬虫--PyQuery

    什么是PyQuery? PyQuery 初始化 字符串初始化 from pyquery import PyQuery as pq html=""" <div> ...