个人博客系统

一、项目简介

基于servlet,采用前后端分离的方式,实现个人博客系统,功能包括:登录、注销、编辑、删除博客、发布博客等.

二、项目开发流程

2.1 准备工作

准备工作包括,创建maven项目,引入依赖servlet,jackson,mysql,
说明:

  1. 在引入servlet依赖时,tomcat的版本要和servlet的版本对应
  2. jackson依赖包的作用是序列化(将Java对象转成json)与反序列化(将json反序列化成Java对象),主要使用的是ObjectMapper对象

2.2 实现Vue层

将前端页面拷贝到webapp目录下
因为在后续打包部署时,也要讲前端页面一起打包
在这里插入图片描述

2.2 实现Model层

Model层主要工作是实现数据库相关的代码

(1)设计数据库,也就是创建数据库和设计表结构
根据需求设计数据库,我们的需求包括博客列表页的展示,查看全文,登录,柏编辑页,需求中主要涉及到两个实体——博客和用户,因此我们要创建博客表和用户信息表

博客表:存储所有的博客数据
用户表:存储所有的用户信息

将建库建表的sql语句存储到db.sql中

在这里插入图片描述
博客表中的字段:博客id(自增主键),标题,正文,作者id,发布时间
用户表中的字段:用户id(自增主键),用户名,密码

(2)封装数据库操作

  • DBUtil类用来与数据库建立连接

  • 实体类Blog和User,每个Blog和User对象都对应表中的一条记录

  • BlogDao类和UserDao类分别提供了对Blog和User进行增删改查的操作
    在这里插入图片描述

2.4 实现Controller层

针对四个页面(登录页,列表页,详情页,编辑页),分别约定前后端交互接口,然后编写后端和前端代码

(1)博客列表页:在这个页面中需要展示出数据库中所有的博客

  • 约定前后端接口:
    请求: GET方法 url:/blog
    响应:返回json格式字符串

在这里插入图片描述

  • 实现服务器端代码,通过BlogServlet类
  • 编写客户端代码,在页面加载的时候,发送ajax请求给服务器,获取到数据库中的博客数据,并填到页面中

(2)博客详情页:在博客详情页的页面加载的过程,触发ajax请求来访问服务器,获取到博客内容,然后填充到博客详情页中

  • 约定前后端交互接口
    请求:GET方法 url: /blog?blogId=1
    响应:json对象(包含了博客的详情)

在这里插入图片描述

  • 实现服务器端代码,同样通过BlogServlet类中的doGet方法处理前端发来的请求,先尝试获取请求中的blogId参数,如果blogId不存在说明该请求是用来获取博客列表,如果blogId存在,说明请求是用来获取某篇博客的详情
  • 实现前端代码,加载博客详情页时,发送ajax请求给服务器,获取博客详情并显示到页面上

(3)登录页:用户输入用户名和密码进行登录

  • 约定前后端接口
    请求:POST方法 url:/login
    数据格式:application/x-www-form-urlencoded ,使用form表单提交用户名和密码给后端
    响应:状态码 302,因为登录成功后需要进行跳转
    Location:blog_list.html
    在这里插入图片描述
  • 实现服务器端,通过LoginServlet类处理前端发来的登录请求
    获取请求中的参数,然后和数据库中的内容进行比较,比较通过则创建会话

(4)实现验证登录的功能:也就是在访问博客列表页或详情页时,需要检查用户的登录状态,如果此时用户未登录需要强制跳转到登录页
实现的方式是,在访问博客列表页和详情页时通过ajax发送请求,获取用户的登录状态,如果没有获取到则跳转到登录页

  • 约定前后端交互接口
    请求:方法GET url:/login
    响应:如果此时有用户登录,则返回状态码200,如果没有用户登录则返回403

  • 实现服务器代码,在LoginServlet中添加doGet方法,用来验证用户的登录信息

  • 实现客户端代码,通过ajax发送验证登录的请求,根据后端返回的状态码,决定是否要跳转到登录页

(5)正确显示用户信息:在博客列表页显示当前登录的用户,在博客详情页显示当前文章的作者信息
在这里插入图片描述
在这里插入图片描述
对于博客列表页来说:

  • 约定前后端接口:GET方法 url:userInfo
  • 实现后端代码:通过UserInfoServlet类,返回当前登录的用户信息
  • 实现前端代码:访问列表页时,通过ajax发送请求,从服务器获取当前登录用户的信息并显示到页面上

对于博客详情页来说:

  • 约定前后端接口:GET方法 url:userInfo?blogId=?
  • 实现后端代码:通过UserServlet类,通过url中的blogId查找到对应的文章作者信息,然后返回
  • 实现前端代码:访问详情页时,发送ajax请求,从服务器获取当前文章作者的信息并显示到页面上

(6)实现注销功能:退出当前登录的状态
在这里插入图片描述

  • 约定前后端接口:GET方法 url:logout
  • 实现后端代码:通过LogoutServlet类处理前端发来的注销请求,获取当前登录用户的session对象,将session中的user属性删除,并返回一个重定向地址,因为我们在验证用户登录的时候需要同时具备session对象和user属性
  • 实现前端代码:在注销按钮的 a标签中的herf属性添加logout,这样在点击注销按钮的时候,同时发送一个请求给后端

(7)发布博客的功能:在博客编辑页,点击发布博客后,能后将该博客存储到数据库中,并且能在博客列表页中显示出来
在这里插入图片描述

  • 约定前后端交互接口:POST方法 url:blog
  • 请求的Content-Type:application/x-www-form-urlencoded,使用form表单的方式将文章发送给后端
  • 响应:返回 状态码 302 ,Location:blog_list.html,重定向到博客列表页
  • 实现后端代码:从请求中获取文章信息,包括作者,标题,正文等,构造成一篇博客并存储到数据库中,返回一个重定向地址
  • 实现前端代码:通过form表单发送文章信息给后端服务器

(8)删除博客的功能:只有当前登录的用户能删除其自己写的博客而不能删除别人的博客,例如当前的登录用户为张三,那么张三只能删除文章作者为张三的文章,而不能删除其他作者的文章
在这里插入图片描述

页面上的处理:
因此我们需要在博客详情页进行判断,当前文章作者和登录用户是否是同一个人,如果是就在导航栏中添加一个删除按钮,如果不是就不显示

服务器端的处理:
用户点击删除按钮,触发一个HTTP请求,HTTP请求就会让服务器删除指定的博客

判断登录用户和文章作者的关系:

  • 约定前后端接口:GET方法 url:userInfo?blogId=?
  • 实现后端代码:在User类中添加字段yourblog,当前字段非0表示该文章是当前登录用户写的,反之不是,在UserInfoServlet类中,判断当前登录用户和当前温行作者是否是同一个人,如果是将yourblog设置为1并返回,如果不是则设置为0
  • 实现前端代码:访问详情页时,通过ajax发送请求,从服务器获取作者信息,判断yourblog字段,如果非0,则在当前页面添加删除按钮,否则不添加

实现删除功能:

  • 约定前后端接口:GET方法 url:blogDelete?blogId=?
  • 实现后端代码:通过BlogDeleteServlet类处理前端的删除请求,通过blogId将文章从数据库中删除,并返回重定向地址到博客列表页
  • 实现前端代码:在删除按钮的herf属性中添加 blogDelete?blogId=?,点击删除按钮,就会给后端发送请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
博易的功能特性】 新一代的博客 博易集众多博客的新功能于一体,是一款名副其实的新一代博客的典型范例!无刷新的日历、评论、回访功能无不体现了AJAX在博客中的娴熟运用! 成熟的系统架构 专业的团队用专业的框架开发出的产品。基于微软的.Net 2.0,作者对OOP具有着深入的理解,并对.Net特性有着透彻的研究。博易的系统架构和编码风格不能不说是OOP的设计典范! 方便的内容导入导出 博易后台提供了内容的导入和导出功能,生成一个XML文件。便利地解决了博客搬家的麻烦! 先进的评论体系 评论是博客极为重要的组成部分,博易用AJAX技术提供了一组先进的评论体系!该评论体系支持国别选择、发表评论支持实时预览、个性头像、聚合式评论……所有的这些都可以由管理员在后台做便捷的编辑调整! 无须数据库且支持多种数据库 默认采用基于 XML 的数据存储方式,此种方式提供几乎与静态网页相当的访问效率(避免了数据库并发查询的瓶颈)。同时也可以扩展支持SQL Server、Access等多种数据库存储方式。 独立页面发布功能 除了标准的博客日志,博易还支持在线发布静态页面!这些页面是独立的,对发布各种信息尤为有用! 多用户支持 博易对多用户共同创作、维护博客提供了全面的支持,博易允许多个用户维护同一个博客。访问者可以订阅任意一个博客用户的RSS feed、仅关注他们感兴趣的某个博客用户的日志! 多语言支持 博易支持多语言,您可以在全球任意地区的服务器上运行博易,而不用担心服务器时间和本地时间存在时差的问题。 Trackback 和 Pingback 特性 博易可以对所有链出的链接进行Track回溯和Ping回溯,您的博客链接将自动出现在您引用的博客的评论列表之中!提高您博客的链入指数、在无形之中推广了您的博客!每当创建一个新的日志,博易就会自动完成PingTechnorati、Feedburner、Ping-o-Matic等操作! 灵活易用的插件机制 博易采用了灵活强大的C#开发,架构十分先进成熟,她的插件机制也是如此。系统开放了事件定义,利用订阅事件能够使所开发的插件强大得如同系统程序本身一样! 酷炫主题支持 博易为快速开发主题(模板、风格)提供了支持,用户只需要稍稍懂得HTML和CSS便可进行主题的制作!博易的模板机制是基于.Net2.0的MasterPage的,这样,开发一套新的主题模板只需要修改3~5个文件即可完成!与此同时,博易有专业的设计师为您免费提供更多的个性主题!此外,博易还支持识别移动设备(如手机等)。能分别制定在用这些设备访问和用PC机访问时所用的主题模板! 符合 XHTML 博易所用的控件全部符合XHTML 1.0标准。所有的日志都会在您发表时自动转换成符合标准的格式!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值