jsp+servlet实现个人博客系统
一、开发环境本地环境:win10 x64 + jdk1.8 + tomcat8.0 + MySQL5.6.39 + chrome浏览器+ sublime +IntelliJ IDEA云服务器环境:CentOS 7.3.1611 + jdk1.8 + tomcat8.0 + Nginx 1.14.0 + MySQL5.5.57 + phpMyAdmin 4.0二、功能介绍游客可查看文章,评...
一、开发环境
本地环境:win10 x64 + jdk1.8 + tomcat8.0 + MySQL5.6.39 + chrome浏览器+ sublime +
IntelliJ IDEA
云服务器环境:CentOS 7.3.1611 + jdk1.8 + tomcat8.0 + Nginx 1.14.0 + MySQL5.5.57 + phpMyAdmin 4.0
二、功能介绍
游客可查看文章,评论文章,其中文章详情页格式为后台编辑的markdown文法转成html样式,支持代码高亮,较为美观。可以查看网站的“关于我”,“工程”页面,可以在“联系我”页面留言。
管理员可在后台对文章和分类进行增删改查,其中分类有两层,新建文章可以没有二级分类,但至少要选主分类。删除主分类时,需保证该分类下没有子分类或文章,删除二级分类时需保证该分类下没有文章。
三、数据库设计
1. 主分类表
主分类是文章的一级分类,会显示在博客的分类导航栏。
2. 二级分类表
二级分类必须具有父分类,在添加文章时会根据选择的一级分类,提供二级分类选项。
3. 文章表
文章表中的md_content存储markdown文法的文章内容,因为在进行文章修改时,会在编辑框显示源文章的文本内容。html_content存储转换后的html文本,可在文章详情页显示为编辑时规定的格式。Createdate没有使用datetime类型存储是因为字符串型的数据更方便在文章编写页面进行编辑,和修改页面进行显示。top字段存储文章置顶信息,置顶则设为1,在文章查询时,先根据top字段再根据createdata字段进行降序排列
4. 用户表
本博客不允许注册,用户只有博主自己,所以用户表中的数据是直接在phpmyadmin中插入的。
5. 主外键关系
主分类表和二级分类表连接得到一个分类的所有信息,文章表和主分类表、二级分类表连接可得到一篇文章的所有信息
五、总结
之前自学jsp的时候就想着要做些综合的东西,寒假时候打算做个博客,但是中途遇到了一些困难,半途而废。后来用了一段时间的wordpress,但是总觉得自己实现的博客系统会更有意义。于是在得知web大作业内容后,毅然决定要做博客,不是为了完成作业,而是做一个自己能用的东西。
前端页面个人感觉略丑,毕竟审美不行哈哈哈,希望以后能提高审美,做的更加美观。数据库设计使用了两级分类给后来的开发带来了很多麻烦,两个分类的制约关系,一些细节问题是最开始没有考虑到的,如何对不同类型的分类进行增删改查,如何对发表文章时选择的分类进行限制。由于文章表使用了较多的字段,所以条件查询的时候变得很麻烦。发表文章的时间也是给我带来了不少麻烦,本来是想在数据库中使用datetime存储,在Java中转为date类型,但发现存进数据库容易,取出来并不好操作,特别是修改文章时需要把时间切割填到输入框里,最终我还是选择用字符串存时间,实现了需求。纯粹的代码堆叠是没有意义的,所以在开发过程中,我尽量将系统架构做的更加科学,提高代码复用率。在开发中也尽可能将自己学的东西用到,jstl标签、过滤器、Ajax,分页,绘制验证码等等。可以说,这次大作业是将我之前学到的知识进行的一次综合应用。
本地开发并不顺利,上传到服务器上又出现了问题。由于jdk、tomcat版本不一致,所以上传后无法运行;之前在本地引用的jstl jar包在打包成war包时没有包括在里面;连接数据库时被告知不能使用root用户;直接用域名访问不到,还需要指定项目的目录,又一顿修改tomcat配置文件;一切解决之后又发现在后台管理界面添加数据,存到数据库中之后中文显示为乱码,但是通过phpmyadmin直接添加数据没有问题,终于在修改MySQL的配置文件设置好character_set_server的字符编码后得到解决……
由于同时还在准备考研,所以时间并不宽裕,功能还并不完善,留言和评论功能是使用搜狐的畅言插件,以后有时间这些功能还是想自己实现。
总而言之,整个过程我收获颇丰,发现问题,解决问题,个人编码水平有了很大提高。感谢老师一学期以来的辛勤教导,祝身体健康,工作顺利!
演示站点:http://nichang.site/
完整源码:https://github.com/nicahead/jsp-blog
更多推荐
所有评论(0)