基于Java EE平台开发的个人博客。线上地址:https://www.stevejrong.top/
典型的传统Web网站架构,分为前台系统和后台管理系统。未使用前后端分离,未使用分布式特性,数据库表间使用主外键约束策略,不支持分库分表,不支持代码中的数据备份。
- Apache Lucene - https://lucene.apache.org/
- Apache Shiro - http://shiro.apache.org/
- Apache HttpComponents - http://hc.apache.org/
- Apache Commons - http://commons.apache.org/
- Apache Maven - https://maven.apache.org/
- C3p0 JDBC3 Connection and Statement Pooling - http://www.mchange.com/projects/c3p0/
- EhCache - http://www.ehcache.org/
- Hibernate 3 - http://hibernate.org/
- JCaptcha - http://jcaptcha.sourceforge.net/
- JSP - http://www.oracle.com/technetwork/java/javaee/jsp/index.html
- JAudiotagger Library - http://www.jthink.net/jaudiotagger/
- Java Platform Enterprise Edition(Java EE) - http://www.oracle.com/technetwork/java/javaee/overview/index.html
- Memcached Distributed Memory Object Caching System - http://memcached.org/
- MySQL Connector J - https://dev.mysql.com/
- Quartz Job Scheduler - http://www.quartz-scheduler.org/
- Spring Framework 3 - https://spring.io/
- Struts 2 - https://struts.apache.org/
- Sun Mail POP3 and Mail API - https://www.oracle.com/sun/index.html
- Servlet API - http://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html
- UrlRewriteFilter - http://tuckey.org/urlrewrite/
支持部署运行在Windows、*Unix系统的ARM、32位和64位平台下
- 运行在*Unix环境中时,由于系统未对文件系统做很好的适配开发,可能需要对其读写文件相关的路径代码做相应修改,测试通过后再进行使用
- 运行在ARM平台中时,如果Memcached也需要在此平台上安装运行,那么需要您自行查找适用于ARM平台的Memcached
- 登录成功后有时会报错500,或者实际已经登录成功了但仍让用户登录
- 后台系统Web界面使用Require.js后,菜单界面会出现点击后画面迟滞的情况
- 数据库数据和用户上传的文件需要手动备份
- ……
由于此博客开发时间较早,时间仓促就没使用一些新的技术,而选择了当时最稳健的SSH架构。从前端CSS到后端数据库都是一个人设计编写,一个个样式在适配。说实话,也蛮痛苦的。没有计划的很完美,当时也很缺一个像样的博客,所以自己准备写一套出来。 我在空闲时间会全新开发一套前端基于Vue.js、后端基于Spring Cloud的博客系统将其迁移过来,以支持更高级的特性。
因为我有一次在新浪博客上发布一个博文的时候,图片什么的我都已经从Word粘贴到编辑框里并已经把图片一个个上传上去了,字体样式什么的我都已经调整设置好了。最后保存成功翻回来看居然就给我保存了一个文章简介…… 当然,这是客观原因。主要是在开发过程中享受乐趣,遇到问题固然痛苦,但是解决掉一个你又少掉一个坑不是? 年轻人,要学会从仿一个轮子开始,慢慢做大做强。
Apache License 2.0
版本号:未知 发布时间:2017/05/17 网站N处细节优化,移动端着力适配
版本号:未知 发布时间:2016/11/12 网站所有前端页面使用AMD模块化加载,取消百度分享插件改用站内的分享插件; Windows 10 UWP客户端 v1.2版发布。
版本号:1.0 Beta 发布时间:2016/07/09 Windows 10 UWP客户端第一版发布。
版本号:1.0 Alpha 发布时间:2016/03/26 网站第一版发布。
版本号:-- 发布时间:2016/02/15 网站开始编写。
2016年6月14日 21:42 · 开发计划 1.如果对博文进行了CRUD操作,那么在Memcached中放入一个标识以表示要重建全文索引,然后使用Quartz在凌晨时分对索引进行重建
2016年6月16日 18:04:47 · 测试计划 1.已加入按要求重建索引的功能,今晚测试。
2016年7月19日 20:35:00 · 发版计划 1.发版:遗留问题,发送邮件。
2016年7月23日 · 修复了后台上传图片时路径多了一个斜杠的Bug。
2016年8月15日 · 开发了后台管理中的“段子管理”模块,增删改查功能已全部实现; · 修改首页转向页面为html+js方案,提高效率;关闭struts框架的开发者模式;编写项目通用工具类; · 修复了“开发中”提示页面倒计时结束后跳转首页时404找不到页面的Bug修复。
2016年8月16日 21:50:50 · 紧急修复了后台发布文章时上传图片成功后无法跳转到图片预览选项卡的Bug。
2016年8月18日 17:30:55 · 修复了访客访问网站时检测访客IP地址为服务器地址的Bug。此Bug会导致历史记录表中所有的访客记录的IP都是应用服务器的地址。
【文章浏览量统计 √】、【文章评论 √】、【公共留言板】、【第三方账号登录】、【资源下载 √】、【每日定时发送数据统计邮件】、【登录成功后跳回原页面 √】、【网站紧急下线提示维护的页面 √】 后台:【文章修改 √】、【文章上传时支持附件资源上传供用户下载 √】、【支持手动建立全文索引 √】、【网站图片资源管理】、【网站附件资源管理】 服务器:【上传的图片定时备份】、【数据库定时备份】 移动客户端:【Windows 10 UWP App √】 远期功能:【微信公众号】、【背景音乐播放】
文章浏览量统计 开发计划: 创建一个Struts Interceptor,在进入每个文章详情之前拦截,在此拦截器中进行如下判断: 先取出访问者的IP,然后在Memcached键值对集合中比较,如果此IP存在,那么则不计数; 如果此IP不存在,那么设置存入Memcached的Key为文章的ID,Value初始化为0,之后加1。
2016年8月24日19:57:36 · 开发了文章评论功能,目前已能针对某篇文章进行评论,回复功能还未开发; · 对登录机制进行了修改,登录成功后跳转回登录前的页面,体验更友好。
2016年9月3日19:02:42 · 开发了后台互动信息审核和互动信息管理的模块(开发完成),前台在文章底部加入文章互动信息评论和回复(未开发完成); · 改进了登录机制,登录成功后会跳转到登录之前的页面而不是跳回首页。
2016年9月17日13:08:29 · 继续开发完成了文章详情页的互动信息的评论功能(回复功能暂未开发,前台以友好提示代之),并对用户点赞行为进行限制,一天之内仅允许同一IP对任意一个消息点赞最多一次 · “关于我”页面文字内容更改和文章详情页CSS优化。
2016年10月9日12:50:49 · 修复了首次发布评论/回复信息时点赞数量为0时显示空值的Bug。
2016年10月10日17:21:00 · 开发了文章浏览量的功能,包括记录文章浏览量、定时触发保存文章浏览信息的Job和前台显示文章浏览数量。
2016年10月10日18:39:27 · 开发了后台重建索引的功能,并优化了后台管理页面的UI图标、页面CSS和JS资源引用。
2016年10月11日14:10:10 · 开发了管理后台中网站紧急下线提示维护(网站维护状态管理)功能; · 后台管理页UI部分bug修复。
2016年10月12日09:25:43 · 改进了访问主页时后台记录访客信息的运行机制,使用新线程去处理访客信息从而不阻塞主线程的执行,加快转到主页时的速度,避免因为请求百度IP地址接口而长时间的等待; · 修复了用户登录时最后一次登录时间记录错误的Bug; · 修复了IP地址工具类中因为IP地址不正确而报错为NullPointerException的Bug。
2016年10月20日14:00:17 · 博客移动客户端功能重大更新: · 主页上Pivot视图的“主页”Pivot Item修改为“随便看看”,同时去除暂未开发完成的“热门博文”Pivot Item; · 主页下App Bar Button中加入了“设置”隐藏菜单,同时可以设置是否开启夜间阅读模式(自动开启夜间阅读模式的功能正在开发中); · 文章详情页中: 顶部由原来的纯色应用条改为在上面显示博文标题; 博文的显示由原来采用HTMLAgilityBack组件解析HTML文本改为了直接采用HyBrid App的形式显示博文,降低开发难度的同时也加快了应用的运行速度; 前端采用Framework 7混合App框架; 在底部加入了“刷新”按钮; · 新增评论/回复信息页,目前可以查看、发表评论和点赞(未登录也可以点赞),当没有评论/回复信息时给出友好的无消息提示;回复功能正在开发中; · 改进了登录接口,登录成功后不再返回布尔值而返回一个用户ID,对应数据库中的主键。
2016年10月27日16:42:27 · 后台开发了博文上传文件附件的功能;前台开发了文件附件下载的功能。
2016年10月28日15:26:34 · 后台开发了博文信息修改的功能,目前还不支持对文件附件的修改; · 完善了后台博文信息管理中“查看”链接弹出框中信息展示不全的问题。
2016年10月28日17:31:56 · 修复了前台分页样式和分页图标。
2016年10月31日09:49:53 · 修改了前台分页组件的代码逻辑,使之重用性更高; · 修复了分页组件居中显示的Bug。
2016年10月31日15:19:12 · 修复了后台发布文章时文件附件上传后文件路径记录错误导致文件上传成功后前台也无法下载文件的Bug; · 前台分页组件样式宽度调整。
2016年10月31日15:58:31 · 修复了后台发表文章时发布者IP显示为服务器IP地址的Bug。
2016年11月12日 00:01:00 PC端: · 对项目的全部前端页面(前台和后台)使用RequireJS组件进行重构,并规范和优化了界面布局、文本标题等诸多Bug; · 继续开发完成了“移动客户端”板块,使用自适应图片轮播组件展示Windows 10 UWP App图片并提供了指向应用商店的下载地址; · 由于前端项目结构变更率达到了95%以上,SVN提交有困难,故项目迁移到新的SVN库中,删除了之前的SVN仓库 手机端: · 修复了因服务器长时间不访问数据库主动关闭连接后手机App初次访问时报无法访问异常的Bug; · 更新了版本号到1.2版本,并发布到了应用商店。 生产环境: · 使用Nginx Server管理了resources文件夹下的所有静态资源,减少Tomcat服务压力,静态资源加载更快; · 设置更长的MySQL等待时间,避免超过8小时不访问数据库自动关闭JDBC连接而导致网站初次访问时报错为Already closed的问题。
2016年11月13日 12:13:48 · 修复了前台developing页面3秒后跳转样式丢失(生产环境配合Nginx使用时会发生,本地不会)的Bug。
2016年11月13日 16:48:11 PC端: · 去掉了所有页面上的标签,从而在查看网页源代码时不能直接显示出Nginx配置的端口号; · 修复了生产环境上传博文图片和博文文件附件时路径错误的相关Bug; · 修复了前台分享插件分享到QQ空间失败的Bug; · 前端页面样式微调。 手机端: · 更新了所有请求接口的根URL,由原来的https://www.stevejrong.top/SJBlog/改为了https://www.stevejrong.top/。 生产环境: · 修改了Tomcat配置文件和Nginx配置文件,项目名称为ROOT而不是SJBlog【要注意,今后发版时移动到Tomcat的webapps下,改名为ROOT.war而不是原来的SJBlog.war】
2016年11月14日16:58:30 · 更改了所有代码的编码方式,从原来的GBK编码改为了UTF-8编码; · 为所有的类添加了头部注释,声明项目、版权等其他基础信息; · 统一了所有类的类注释,规范了注释格式; · 类中其他不规范处的微调。
2016年11月14日17:28:52 · 生成Java Doc并提交到SVN。
二次优化计划: · 前台页面可以公用的部分使用标签包含以重用; · 代码,规范一下命名规则,在不影响正常功能运行的情况下,能整理的就整理。
2016年11月16日21:17:44 · 修改了前台的页面,页面处理公用。
2016年11月18日16:18:19 · 修改了后台的页面,页面处理公用,并提取了共用样式JS。
2016年11月22日16:41:50 · 更新了“大数据”页面的时间线; · 修复了前台登录页面的UI Bug。
2016年11月23日15:47:38 · 更新了前台“大数据”页面时间线最后一个节点圆圈内的图片; · 修复了前台“博文分类查看”翻页到最后一页时还显示下一页无效页码的分页Bug; · 前台主页部分UI组件替换,使其更和谐美观。
2016年11月23日15:53:42 · 修复了前台“玩生活”翻页到最后一页时还显示下一页无效页码的分页Bug。
2016年11月25日17:32:37 · 后台代码类包级别的规范迁移整理。
2016年11月26日11:32:49 · 修复了后台添加生活段子时添加无效的Bug(JS报错)。 · 下一步准备开发: · 后台管理的“互动信息管理”模块下,操作列新加一列“查看”以查看互动信息; · 前台新增“个人中心”模块,用户可以查看并修改自己的个人信息,同时启用积分制度(头像裁剪上传等)。
计划功能: · 后台开发图片资源管理和文件附件资源管理模块,可以查看并移动、复制、备份到本地或网盘等操作; · UWP客户端开发个人中心模块,和PC端同步。
2016年12月5日21:38:34 · 前台开发了“个人中心”模块,支持密码修改、个人信息修改和头像上传和修改; · 调整了前台的移动端菜单显示; · 【数据库更改】用户表中新加了头像字段。
2016年12月6日11:32:20 · 后台代码静态常量规整到Constants.java类中; · 后台部分代码的优化; · 配置文件优化。
2016年12月6日14:36:58 · 前台页面自适应标题样式修复; · “技术和开源许可”页面丢失问题修复; · 新数据库SQL文件生成; · 其他页面小问题修复。
2016年12月7日15:35:11 · 发版后生产环境出现问题,生成Debug包测试并修复头像上传JS路径找不到的Bug和剪切头像无法创建缓存文件报错的Bug(这个问题是因为手动把Tomcat目录下的temp文件夹删掉了,手动建立一下就好了); · 日志配置文件修改。
待开发基础功能:后台博文发布/编辑时可设置博文是否可见、是否置顶;前台博文评论区二期优化(头像显示、用户昵称显示)。
2016年12月7日17:41:07 · 优化了前台博文评论区的用户信息展示,包括用户默认头像替换、头像鼠标悬浮显示用户名、发布时间鼠标悬浮显示XXX于XXX发表的相关提示; · 设置了注册新用户后的默认头像; · 优化了前台博文详情下的“文件附件”和“互动”在没有内容时显示的提示语及其样式微调。
2016年12月7日18:01:29 · 增加了前台移动菜单用户未登录时显示“登录”项; · 修复了前台用户登录后页面不能自适应“个人中心”按钮和“退出”按钮的Bug。
2016年12月9日15:24:16 · 前台“玩生活”板块有侧边栏新开发了“MixRadio”模块,可以播放事先创建好的音乐文件夹下的音乐。 · 待完善功能:点击音乐列表中的“购买”图标按钮后弹框的提示UI设计、开源信息页面注明使用的开源组件。
2016年12月10日20:23:59 · 修复了后台“互动信息管理”中总页数显示错误导致无法正确翻页的Bug; · 修改了前台“玩生活”板块下MixRadio模块的价格显示,将原有的¥9.00改为¥2.00; · 前台右侧边栏通用页在“后台管理系统”前加了UAC管理员图标; · 微调了关于页和玩生活页的样式; · 继续完善了前台“玩生活”模块下MixRadio模块点击购物车按钮的弹框; · 修复了前台博文详情页移动菜单在移动设备上显示溢出的Bug; · 更新了“技术及开源许可”页的文本内容; · 修复了其他页面的UI问题。
2016年12月10日21:47:45 · 修复了前台“玩生活”板块下MixRadio模块长时间加载的Loading图标,避免长时间等待的不友好; · 替换了Ogg音频文件为更低码率(~45Kbps),保证生产环境上的加载速度; · 替换了部分图片资源,使用PS压缩为更小的文件以达到更快的加载速度。
2016年12月14日11:04:39 · CNZZ站长统计功能加入。
2017年1月21日10:01:13 · 博客生产部署环境大更新: · 服务器从Windows Server 2008更换为Ubuntu Server 16.04; · 针对基于Linux的服务器,项目文件存储路径进行适配; · 进一步优化了项目各种基础配置文件的代码结构,并对一些properties文件进行了统一归置,从而便于测试环境和生产环境的快速切换(暂未使用spring.profile.active); · 功能更新: · 使用Apache HttpClient修改了部分通用工具类中的网络请求方式,使之更为简单; · 修改了“用户中心”页中上传头像时下方会显示四个头像裁切坐标值的Bug; · 加入了面试官(interview)账户,便于面试官在使用此账号登录后可以在主页右侧的边栏中查看“我的简历”; · 修改了访客历史记录中根据IP地址获取IP信息的接口(百度获取IP信息的接口现已失效无法继续使用),提供商从百度改为了淘宝; · 为了Linux生产环境测试,在移动端接口中增加了一个测试接口便于测试; · 为使用淘宝IP信息相关接口获取信息建立了Response Bean便于解析和使用; · 更新了全站网页标签显示的Logo icon; · 替换了“我的简历”页面的背景渐变轮播图片,使之更为和谐; · 优化了“玩生活”页面中“MixRadio”板块下滚动字幕的字符间距; · 更新了“玩生活”页面中“MixRadio”板块的音乐资源; · 优化了网站404、403和500错误页面的提示语; · 优化了前台通用头部页面中搜索框的placeholder的文本提示; · 优化了log4j属性文件中对于日志的记录方式,去掉一些非关键的(如DEBUG级别的日志信息)日志信息打印; · Jar包更新:Apache HTTPClient相关。
2017年1月21日10:39:03 · SQL语句文件更新。
2017年3月4日12:29:30 · 项目升级为Maven项目,使用pom.xml定义项目jar包 · 改进后台管理系统中EasyUI的英文显示,改为中文显示DataGrid的分页信息
2017年5月6日 · 手动管理Jar包上传 · 手动管理Jar包Maven安装命令上传 · pom.xml文件Bug修复
2017年5月7日11:10:56 · 前台公用页脚页面终止年份改为根据当前时间获取而非写死; · 前台主页将个人日记类型的博文过滤掉不显示; · 前台搜索结果页面分页Bug修复
2017年5月8日 · 修复前台搜索结果页面的Lucene分页,能够正常按照分页显示
2017年5月9日12:49:10 · 前台“所有博文”板块的页面数据展示UI调整,优化为响应式布局,针对大小屏幕适配显示; · 前台分页组件样式微调; · 前台用户头像上传时对本地Flash插件进行检测,如未安装则提示引导其安装,否则继续执行头像上传任务; · 前台用户头像上传时对操作平台进行检测,限制桌面电脑和平板设备操作,其他设备不允许上传头像; · 前台“玩生活”板块的分页样式调整; · 前台“玩生活”板块左侧数据展示更改为Ajax加载,保证在查看玩生活讯息时不将右侧MixRadio刷新掉而无法播放; · Apache Shiro配置独立于单独的配置文件; · 去掉Hibernate Hbm配置文件中的catalog属性,改用配置文件来设置默认的数据库前缀; · POM.xml配置文件更新,将必要文件在编译时包含进来; · 文档更新
2017年5月10日21:32:43 · 项目配置文件和属性文件目录架构调整,更规范,更易查找; · 将applicationContext.xml配置文件进行业务垂直拆分,为以后更精细的业务扩展做准备; · 项目属性文件注释完善; · 文档更新
2017年5月12日10:56:30 · 通用枚举常量类中根据properties文件的路径变动对某些直读属性文件的枚举项的路径改为动态路径(spring.profiles.active) · 通用工具包中新加入ServletContextUtil类便于spring.profiles.active上下文变量的动态读取 · 对web.xml文件进行纵向拆分。之后切换开发或生产环境仅需更改env.xml中的spring.profiles.active的值和log4j路径中的值即可轻松切换 · 变更!:为了在Tomcat 7.0.52以上版本中支持web.xml文件拆分,需要在Tomcat的context.xml文件的节点中加入属性为xmlBlockExternal="false" · POM.xml文件更新,将原有的spring-web包的版本从2.5.6替换为3.1.1.RELEASE以支持Spring多环境切换 · 文档更新
2017年2月16日22:48:40 · 后台头部通用页文字更改; · 分页获取博主的所有生活段子信息的方法中根据创建时间倒序显示数据 · POM.xml文件更新 · 文档更新
2017年5月17日10:09:43 · 后台页脚通用页版权终止时间改为动态显示 · 后台全文索引模块点击建立索引后加入等待图片 · 后台全部EasyUI加载数据提示语更改为“数据拼命加载中……” · 前台关于我页面文本内容更改 · 后台新增生活段子时如检测到设备信息为“undefined undefined”则改变内容为“未知设备”,如检测到系统信息为“Unknown”则改变内容为“未知平台” · 我的简历页面简历信息更新,并对CSS样式进行参数调整 · 大数据页面时间轴内容更新和CSS样式调整 · 文档更新 · 生产环境发版一次
2017年5月17日17:43:50 · 前台用户上传头像配置文件找不到Bug修复
2017年5月17日22:40:28 · 前台玩生活模块加入MP3文件兼容Safari浏览器音频播放支持 · 音乐文件更新 · 文档更新