一个MVC简单易用的JSP开发框架--rubyJSP

项目github地址:https://github.com/jiangliuer326442/RubyJSP

项目演示地址:http://tongshiquan.sharecarding.com

社会化评论系统(留言板)

项目演示

网站前台: 点击打开 网站后台: 点击打开 ,网站后台的用户名\密码为:fanghailiang\fanghailiang安卓端: 点击下载

技术概要

这是一个简单的留言板程序,后台使用java servlet,包括rubyJSP(类似于thinkPHP这样的mvc框架),在包com.ruby.framework中;独立于具体网站提供一系列接口的评论组件,在包ruby.social.comments中。前台使用react+bootstrap,react和ES6使用babel编译和压缩,使用react路由组件构建单页面程序,使用requirejs解决大量js的文件包含问题。后台使用纯粹的bootstrap及其插件搭建的响应式布局,拥有角色权限管理功能。

rubyJSP:

一个MVC框架,在包com.ruby.framework中,包括以下内容:
  •  
  • controller: 包含ControllerInterface和ControllerBase两个java文件,规定了框架外部的程序放置在webapp目录中,控制器必须继承ControllerBase 
  • function:提供了与业务无关,可全局使用的公共函数和公共类实现,具体如下:  
    file:    
    文件操作类库,提供读写txt文件,递归删除文件夹,文件md5,文件夹复制的功能,用户可在此进一步扩展   
    login.thirdparty    
    提供第三方登陆功能,目前已实现 QQ登陆功能,用户可在此扩展其他第三方登陆程序,需要实现ThirdpartyInterface接口       
    message    
    提供短信发送功能,使用 抽象工厂模式实现,已实现 荣联云通讯的短信发送功能。用户可在此添加工厂方法和具体实现添加其他短信功能的实现       
    upload    
        提供文件上传功能,此外使用 七牛云存储将上传的文件转移到云存储服务器上加快访问速度,同样适用 抽象工厂模式实现,用户可添加其他云存储服务器的工厂方法和文件上传方法替换掉原来的文件发布接口       
    zip    
        提供文件和文件夹的压缩、解压缩功能,网上摘录。       
    AesUtil    
        提供AES加密、揭秘功能,网上摘录。       
    Form    
        将表单或者ajax提交的数据转化为map格式,特点是要求上传的数据必须使用aes加密,而该方法具备解密功能,因此rubyjsp框架是一个安全的框架       
    HtmlCompressor    
        html压缩,网上摘录。       
    CommonFunction    
        其他公共函数文件,包括获取ip,验证手机号,获取url参数,md5加密,抓取指定url内容,匹配括号,读取ini配置文件等      
      
  •   model:提供数据库连接,数据库操作的基本功能,框架实现的数据库如下:  
    MySQL   
        连接:使用 tomcat的连接池实现mysql连接,连接配置文件写在meta-inf/context.xml中,因此需要将mysql的连接jar包放到tomcat的lib目录    查询:mysql模型在rubyjsp框架中被发布为一个可本地访问的 webservice,webservice发布了mysqlqery进行mysql查询,返回查询到的json数组的字符串和mysqlupdate执行数据库的其他过程式操作,客户端只要连接该webservicee即可操作数据库。      
    Redis   
        提供对redis的可设置生命周期的数据的连接、存储和读取功能(set/get方法)      
    MongoDB   
        对mongodb的一些操作方法进行了封装     
      
  •   view:提供对html模板(放置在web-inf/view目录下)进行语法解析功能,支持缓存技术(缓存文件在web-inf/cache目录下生成),包含assign(为模板增加可解析的变量)函数,display(解析模板,目前可解析的标签包括 include 文件包含 if 条件判断,支持多条件的逻辑判断)函数       支持使用第三方的java版的smarty模板(如果有的话),替换掉原来viewfactory工厂方法中的具体实现类即可    
  •   框架的公共配置文件放在web-inf/config/目录下,可随时读取,具体包括:  
    1.    
    2. login:存放第三方登陆的账号信息   
    3. message:短信接口的账号信息   
    4. mongo:mongodb数据库信息   
    5. redis:redis数据库信息   
    6. tmpl:模板殷勤的分隔符,后缀名,缓存时间   
    7. upload:云存储的账号信息   
    8. url:路由解析文件,负责将url和具体实现该功能的java函数关联起来,通过动态加载类,调用类的函数来实现。  
     

社会化评论系统

社会化评论系统独立于具体网站,在webapp目录下的ruby.social.comments包中,提供如下接口(以下为借口地址和具体的实现类):

#---------------------------社会化评论模块----------------------
# 网址注册(可调用社会化评论插件的网址进行注册)
comment_webregister = ruby.social.comments.register.UriRegister:register
# 子帐号注册(一个网址可以有多个独立子帐号,子帐号间数据隔离)
comment_platregister = ruby.social.comments.register.PlatRegister:register
# 用户注册(使用手机号注册,全局通用)
comment_userregister = ruby.social.comments.user.UserOperation:register
# 用户注册信息变更(变更用户手机号,昵称等,手机号为全局,昵称属于子帐号)
comment_userphonechg = ruby.social.comments.user.UserOperation:chgphone
# 文章点赞
comment_articlezan = ruby.social.comments.zan.ArticlezanOperates:zan
# 文章取消点赞
comment_articleunzan = ruby.social.comments.zan.ArticlezanOperates:unzan
# 评论添加
comment_add = ruby.social.comments.comment.CommentOperation:add
# 评论回复添加
comment_addreply = ruby.social.comments.comment.CommentOperation:reply_add
# 评论列表
comment_list = ruby.social.comments.comment.CommentLists:getByarticleid
# 评论点赞
comment_zan = ruby.social.comments.comment.zan.ZanOperation:adds
# 评论取消点赞
comment_unzan = ruby.social.comments.comment.zan.ZanOperation:removes

网站前端

网站前端的静态文件放在WebContent目录中,分为前台和后台两块。后台使用基于 bootstrap 响应式布局的 charisma-master框架 ,具体使用方法可查看教程。前台js代码为react框架,使用babel编译而成,js源码在js/src目录下,需要安装 nodejs 的npm包。cd进入到WebContent目录中,编译方法如下:
  1.  
  2. npm install --save-dev babel-cli 
  3. npm install --save-dev babel-preset-es2015 
  4. npm install --save-dev babel-preset-react 
  5. npm install --save-dev babel-preset-stage-2 
  6. npm run build
此外,前台部分使用了兼容html5plus的写法,可通过 hbuilder 编译为安卓、ios的APP前台部分包含以下js文件:
ajax.js 
  使用原生js写的ajax函数,使用方法类似于jquery的ajax,特点是支持文件上传和对上传数据进行eas加密(密钥由js端生成并一并告知服务器,服务端程序获取密钥后对上传数据进行解密),此外,在APP中,支持检测设备联网状态  
img.js 
  图片组件,特点是在APP中使用可对图片文件进行本地缓存,减少网络流量。  
toast.js 
  仿APP的toast功能的组件  
update.js 
  检测更新的组件,界面美观,支持APP差量更新。   关于差量更新,可在网站后台上传新版本APP的wgt资源包,程序分析wgt包,生成之前各个版本的wgtu差量升级包,这样APP端版本更新时只需要添加和修改部分新版本的文件,删除一些新版本不存才的文件即可,减少网络流量  解析wgt文件并生成各版本wgtu差量升级包的代码在src/webapp的app/version包中 

环境搭建

为方便服务器迁移,项目部署在docker上,相关镜像已上传到 daocloud.io ,要求服务器安装 docker 软件,具体用到的docker镜像下载及部署命令如下:Mysql镜像:docker pull daocloud.io/jiangliuer326442/mysqlRedis镜像:docker pull daocloud.io/jiangliuer326442/redisMongodb镜像:docker pull daocloud.io/jiangliuer326442/mongodbjsp镜像:docker pull daocloud.io/jiangliuer326442/rubyjsp

联系作者

如果有任何问题或者建议,欢迎联系本人,以下是联系方式:姓名: 方海亮
昵称: ruby
邮箱: :qq邮箱[email protected]或gmail邮箱[email protected]

猜你喜欢

转载自blog.csdn.net/fanghailiang2016/article/details/53309055