【Java项目】美食旅行博客
文章目录
- 核心功能
- 核心技术
- 开发环境
- 框架搭建
- 设计业务接口
- 设计数据库表
- 代码详细设计
- 项目难点
- 后端管理功能展示
- 项目优化
- 项目测试
- 项目代码
核心功能
美食&旅行博客的主要功能是展示博客、以及对博客的基本管理(发表博客、修改博客、删除博客、关于作者)
核心技术
- 客户端
1)使用JSP、JavaScript、CSS、jQuery、Bootstrap作为客户端页面开发
2)UEditor富文本编辑器前端插件 - 服务端
1)Servlet
2)JDBC
3)Jackson作为JSON数据格式与Java对象序列化/反序列化工具
4)UEditor服务端上传图片接口使用与配置 - 其他
1)Maven
2)Tomcat
3)MySQL
开发环境
- IDEA
- Maven3.6.1
- JDK8
框架搭建
- 创建Maven项目
在项目中的pom.xml中加入相关依赖 - 完成前端基本页面设计
其中包括:使用Bootstrap框架、css定义使用的样式、
font-awesome-4.7.0字体样式库、Bootstrap校验插件:
bootstrapvalidator、百度富文本编辑器:Ueditor
设计业务接口
文章列表页面:文章列表(article_list)、发布新博客、修改博客、删除博客、关于作者;
文章详情页面:文章详情、修改博客、关于作者;
统一的API返回数据格式:
1、操作成功与否:success(boolean型)
2、返回类型都为application/json;charset=utf-8
3、消息:客户端显示message(String型)
4、数据:业务相应数据data(Object型)
5、堆栈日志:出现错误时,URL加上请求参数devToken=xxx,用来展示开发调试服务器堆栈信息stackTrace(String型)客户端解析后返回数据:
文章列表 | 文章详情 | 新增文章 | 修改文章 | 删除文章 | |
---|---|---|---|---|---|
url | /articleList | /articleDetail | /articleAdd | /articleUpdate | /articleDelete |
请求 | 请求GET请求: userAccount=stu | 请求POST表单请求 | 请求POST表单请求 | 请求POST表单请求 | 请求GET请求:ids=[1,2,3] |
响应 | application / json | application / json | application / json | application / json | application / json |
设计数据库表
用户表和文章表之间是一对多的关系
t_user表至少存在一个用户账号字段
t_article需要id、title、content、use_id(与t_user连接)
代码详细设计
定义Servlet请求接口:
ArticleListServlet:文章列表(/articleList)
ArticleDetailServlet:文章详情(/articleDetail)
ArticleAddServlet:新增文章(/articleAdd)
ArticleUpdateServlet:修改文章(/articleUpdate)
ArticleDeleteServlet:删除文章(/articleDelete)
1)创建AbstractBaseServlet类:需要继承父类HttpServlet,我们使用的主要为get和post请求,所以还需要重写doGet和doPost方法,并预留下抽象方法供具体的Servlet子类实现
2)依次创建API接口需要的上述五个Servlet,继承AbstractBaseServlet并完成抽象方法。
3)初步调试保证配置无误:在postman中进行API请求模拟。请求方法使用get提交 url:http://localhost:8080/blog/articleList?userAccout=stu设计统一返回类:
1)属性:success、code、message、stackTrace、data
2)可能会包括一些常用的预设属性值,可以使用创建者设计模式来进行属性的装配。如使用异常类来设置属性值等。设计自定义异常:
1)设计一个自定义异常的基类:BaseException,继承自RuntimeException,可以设置code、message属性;
2)设计一个请求参数异常ParameterException;
3)一个应用系统异常SystemException,继承自BaseException;设计JSON序列化、反序列化类
1)当request请求头为application/json时,需要读取request请求体requestbody中 的 json 数据。
2)response返回时,需要将java对象序列化为json字符串并写入response。
项目难点
- 项目总体实现流程:
1)在浏览器输入博客地址,提交http请求,找本地post的DNS服务器,如果找不到就往上层找,直到找到域名;
2)根据域名找到ip(由于本次使用的localhost,所以找到本机ip即可),请求到本机的服务器地址,此时请求jsp页面,服务器返回前端客户端静态html页面(在页面中请求相关静态资源请求例如:css等),页面初始化完毕
3)手动点击发布新文章、修改、删除按钮,触发ajax请求,通过Servlet处理业务,之后利用数据库的SQL操作,操作成功后返回给前端一个JSON数据。
- 梳理请求的客户端与服务端实现如下图所示:
后端管理功能展示
- 博客首页
- 发布新博客
1)编写博客页面
2)博客首页新增博客
- 修改博客
1)首页面修改博客
首页面勾选需要修改的博客,点击导航栏的修改博客
2)展示原来博客详情
3)修改后博客首页博客已更新
- 删除文章列表
1)首页
点击首页导航栏中删除文章列表进入删除操作页面
2)删除文章列表详情
勾选需要删除的博客文章,点击导航栏的删除文章
3)删除博客提示弹框
选择确认则删除博客或者取消删除博客
4)删除文章后首页
需要删除的博客文章已删除
- 关于作者
项目优化
- 浏览器端:
1)压缩源码和图片:css文件源代码可以普通压缩、jpg格式图片在保证质量的前提下压缩到50%-70%
2)选择合适的图片格式:颜色多采用jpg、颜色少采用png - 管理端:
1)功能:可以增加注册、登录相应模块
2)性能:相应时间较长(可以规定一个sql查询时间和页面响应时间来对应查看)
3)美观:文章列表风格简单,可以使用semantic UI框架升级
项目测试
1、功能测试:
1)链接测试:是否按照指示链接跳转到该链接的页面,链接的页面是否存在,是否存在孤立的页面;
2)表单测试:测试发布一篇新博客、修改博客、删除博客的提交信息的完整性,以校验提交给服务器的信息的正确性;
3)数据库测试:数据的一致性和输出是否错误;
2、性能测试:
1)连接速度测试
2)压力测试:发布博客字数超过最大容量的结果
3、可用性测试:
1)导航测试:导航是否清晰明了,该项目的主要部分是否通过主页存取,连接到外部网站是否可以打开、web页面结构、风格、导航是否一致;
2)图形测试:图形标示是否有明确用途,尺寸是否合适;
3)内容测试:检验web应用系统提供信息的正确性;
4、客户端兼容性测试:
1)平台测试:windows、Linux等
2)浏览器测试:Chrome、IE、Firefox等
项目代码
完整代码请点击此处查看
如无法点击,链接如下:
https://github.com/LXL7868/Blog/commit/2deb2bb4cb16c41e2d06e0cb917e60691dff174a
【Java项目】美食旅行博客相关推荐
- Java项目:实现个人博客系统(java+springboot+mybatis+redis+vue+elementui+Mysql)
源码获取:博客首页 "资源" 里下载! springboot+mybatis+前端vue,使用前后端分离架构实现的个人博客系统,共7个模块,首页,写博客,博客详情页,评论管理,文章 ...
- 各大公司java面试整理对应问题博客整理
各大公司java面试整理对应问题博客整理! 阿里 分库分表 数据库中间件 MyCAT是一个强大的数据库中间件,不仅仅可以用作读写分离,以及分表分库.容灾管理,而且可以用于多租户应用开发.云平台基础设施 ...
- 基于Java/Mysql的个人博客网站
3年前写的一个技术博客...纪念一下. OpenIdea Blog - 开源灵感博客 a personal blog site based on Java/Mysql - 基于Java/Mysql的个 ...
- 基于JAVA基于网络平台个人博客系统计算机毕业设计源码+系统+lw文档+部署
基于JAVA基于网络平台个人博客系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA基于网络平台个人博客系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...
- java毕业设计大学生个人博客网站Mybatis+系统+数据库+调试部署
java毕业设计大学生个人博客网站Mybatis+系统+数据库+调试部署 java毕业设计大学生个人博客网站Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- wordpress最佳架构_25个旅行博客的最佳WordPress主题(2020)
wordpress最佳架构 Are you looking for the best WordPress themes for a travel blog? 您是否正在寻找旅行博客的最佳WordPre ...
- 2015-2016-2 《Java程序设计》 学生博客及Git@OSC 链接
2015-2016-2 <Java程序设计> 学生博客及Git@OSC 链接 博客 1451 20145101王闰开 20145102周正一 20145103冯文华 20145104张家明 ...
- Node项目实战开发-博客系统
Nodejs项目实战开发-博客系统(已完结) 个人博客系统 欢迎访问我的博客~ MaXiaoYu's Bolg 前言: 开发技术 技术 版本 Node ^14.3.0 ejs ^3.1.3 expre ...
- JAVA课程设计个人博客 学生成绩管理 201521123014 黄绍桦
JAVA课程设计个人博客 学生成绩管理 201521123014 黄绍桦 1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2 ...
最新文章
- 【技术趋势】德勤发布2020技术趋势报告,五个新趋势可引发颠覆性变革
- Linux之mount命令详解
- .NET Core的日志[4]:将日志写入EventLog
- linux twiki 添加权限,Linux安装TWiki
- java记事本课程设计,java记事本课程设计
- js 判断一个字符在字符串中出现的次数
- 高铁是如何跑起来?列车头顶高压线为什么磨不坏?
- JavaScript中关于setTimeout和setInterval的使用
- Educational Codeforces Round 62 (Rated for Div. 2)
- AI戒毒?没错,北京开始这么干了
- weblogic 修改控制台console访问路径 url
- Python 内置函数介绍
- ZwQuerySystemInformation 枚举驱动模块
- 【ORACLE】字符串操作 B字符串时A的一部分
- php对接海康视频教程_手把手教你php对接海康api
- 计算机网络的简单概述以及在浏览器中输入一个网址后如何执行
- html 文字 跑马灯效果,CSS3 长文字跑马灯效果
- Pandas数据处理误区要知其然知其所以然
- C++中如何控制语句只执行一次_【Python基础(七)】逻辑控制
- 第二篇:java调用公共数据接口:上海市车辆基本信息查询(java调用soap接口)