zoukankan      html  css  js  c++  java
  • 项目1——博客系统

    此文转载自:https://blog.csdn.net/XCatherine/article/details/111750162

    一、绪言
    今天又来更新博文了,学习Java也已经有一段时间了,经过这段时间的学习,我对Java有了更深一层的理解。从刚开始的HelloWorld到了现在的小型网页项目,这中间也经历了很多。话不多说,下面开始我的项目阐述,由于是第一次做,必然存在很多瑕疵,希望大家多多指正。。。。。
    二、项目介绍
    关于博客系统这个项目呢,相信很多小伙伴也做过,所谓一个莎士比亚也能创造出一千个哈姆雷特,每个人都有每个人的思路,大佬不就是靠吸取各种精华修炼而成的吗?所以有趣的灵魂和解法对于程序员来说还是有比要多接触接触。进入正题,提到博客系统,我们脑子里首先能想到的无非就是增删查改这些操作,不过也确实是这样。所以项目的内容就由此得出,如下:
    1.登录系统
    2.新建博客
    3.查看文章详情
    4.对文章进行修改
    5.新增文章
    6.删除选中文章
    这就是博客系统的大体操作,其实也不难想嘛哈哈哈哈,不过说起来容易,做起来可就难了。大家一起来探讨下,我们要实现以上功能,要用什么技术去实现呢,是JavaSpringBoot框架,还是Web开发呢,介于本人目前的水平有限,还是选用了简单的Web技术,后端开发引用了maven配置依赖包,Servlet处理及响应客户端的请求。为了预处理用户的请求,并且可以对HttpServletResponse实现后处理,使用了过滤器Filter,当然它也可响应用户的请求。对于前端方面呢,无非还是三剑客:css、html、js以及jsp。为了创建快速动态网页,使用了Ajax技术,通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新,由于本人主要学后端开发,前端知识有限,所以对于前端知识也不能和大家详细述说,给大家推荐一个网站自行学习:https://www.w3cschool.cn/group/frontend.html。看完上面这一段,大家应该都晕了,下面是一些以上各种技术结合的图绘,帮助大家理解。
    图1.Web应用的Ajax技术Web应用的Ajax技术
    图2.本地计算机和远程服务器的工作过程
    本地计算机和远程服务器的工作过程
    图3.客户端与Tomcat的交互
    客户端与Tomcat的交互
    通过以上三图,相信大家对整个过程的技术应用有了大概的了解,下面就开始阐述项目的具体过程。
    三、项目的完成过程
    1.包的构建
    在完成这个项目之前,当然需要先下载好需要的maven依赖包,接下来需要构思整个项目前端与后端需要哪些包,也就是我们需要在哪一层实现什么功能,每个包放置哪些类,我的构建如下:
    图4.整个项目的包构建
    整个项目的包构建
    可以看到我的组件里有一个Exception包,这是自定义异常,用于统一处理发生的各种异常,Test包里的类用于测试,Util包里放置用于连接数据库的类,以及JSON的序列化与反序列化类,实现二进制文件与java对象的互相转换。通过序列化实现远程通信,也就是在网络传输中传送对象的字节序列。Servlet包里放对博客文章进行操作的类,它们都必须继承HttpServlet类,才能重写DoPost或者DoGet方法,用于响应客户端的请求,我的想法则是实现一个基类,让它继承HttpServlet类,其他类通过继承它,在它的基础上进行操作,就不用每个都继承HttpServlet类了,在每个类里我用的是DoPost或DoGet方法,还可以使用Service方法,它可以替代两者。

    2.Dao层的实现
    Dao层是和数据库相接的一层,在这一层里,我们完成了数据库的连接,比如配置URL等,和刚开始建立的数据表进行响应,设置占位符,编写SQL语句等,目的就是为了获取属性对应的数据,实现登录时查询数据库的功能。在这个项目中,我只设置了两张表,文章表(article)和用户表(user),所以只有两个Dao类,实现如下:
    图5.LoginDao的实现
    LoginDao的实现
    图6.ArticleDao的实现
    ArticleDao的实现

    3.Servlet层的实现
    AbstractBaseServlet类的设计,让它继承HttpServlet类,设置请求响应的编码格式,响应体的数据类型,对象的序列化,定义抽象类process,用于处理请求req、响应resp,这个包里的其他类都继承它,就不用再重新设置响应格式和数据类型。它的实现如下:
    图7.AbstractBaseServlet的实现AbstractBaseServlet类的实现

    LoginServlet类的实现,这个类用于实现用户登录,通过请求获取用户名和密码,再创建Session对象,通过会话功能拿到用户输入的用户名,再调用loginDao和数据库中已有的数据进行校验。对登录失败进行返回一个业务码和错误语句进行提示。它的实现如下:
    图8.LoginServlet的实现LoginServlet类的实现
    ArticleAddServlet类的实现,这个类用于发表新文章, 请求的数据类型是application/json,需要使用输入流获取 ,再进行反序列化操作获取对象,实现如下:
    图9.ArticleAddServlet的实现ArticleAddServlet类的实现
    查看文章详情,删除文章,文章列表,修改文章,这几个操作和新增文章类似,直接展示给大家看吧哈哈哈哈

                                                                                             图10.ArticledetailServlet的实现
    

    ArticledetailServlet的实现
    图11.ArticleDeleteServelet的实现
    ArticleDeleteServelet的实现
    图12.ArticleListServlet的实现
    ArticleListServlet的实现
    图13.ArticleUpdateServlet的实现
    ArticleUpdateServlet的实现
    为了丰富文章编辑功能,如图片上传等,我使用了富文本编辑器UEditor,引入了它的依赖,它的Servlet类实现如下:
    图14.UEditorServlet的实现
    UEditorServlet的实现

    自定义异常处理如下:
    图15.Exception的实现
    Exception的实现

    四、项目总结

    (1)用了过滤器抓取请求与响应会话,富文本编辑器实现了图片上传功能。
    (2)对Servlet和Tomcat的工作流程有了一定的了解。
    (3)对前端语言html、js、jsp的代码编写有一定认识,知道前端的功能实现。
    (4)项目的打包和部署,遇到的各种问题也会自己用Fildder抓包解决。

    那么以上呢,就是整个博客系统项目的实现过程,有不懂的小伙伴cue我哟,随时欢迎(此处自带一个笑脸)!!!

       

    更多内容详见微信公众号:Python测试和开发

    Python测试和开发

  • 相关阅读:
    解决import tensorflow时发生DLL错误
    解决Docker Container in WSL2 发生DNS错误无法访问网络
    使用过vmware 再开启wsl2闪退处理
    70. Climbing Stairs. Leetcode
    miredo on mac
    解决Runtime Error on LeetCode
    HttpClient Get与Post请求数据
    Ubuntu16.04.1 安装MyCat
    CenterOS中安装Redis及开机启动设置
    ASP.ENT Core Linux 下 为 donet创建守护进程(转载)
  • 原文地址:https://www.cnblogs.com/phyger/p/14202512.html
Copyright © 2011-2022 走看看