基于 Netty 实现可自动渲染 HTML 页面的静态 Web 服务器 JerryServer

Apache
Java 查看源码»
跨平台
2018-09-01
像风一样i

一种改变传统网站开发模式的web服务器

1、问题

随着现在整个软件开发行业的发展,在开发模式上逐渐由以前的一个人完成服务端和前端web页面,演变为前端和后端逐渐分离的趋势。在安卓、IOS等移动设备开发基本已经成型,前后端达到了完全分离。可是在web网站开发中,前后端依旧高耦合、难分离;后端开发人员难以像开发安卓、IOS等移动端一样,只需要面向接口编程,而不用关心web页面的逻辑设计。

网站开发在前后端的分离上也进行了一部分发展,比如出现了Vue.js,React.js等前端js框架,使用起来可以说是很方便。但不可忽视的是,使用js去渲染页面是把压力转移到了客户端,而且使用js渲染页面会导致SEO(搜索引擎爬取不到页面信息)等问题。

所以,在服务端处理页面并返回视图也是现在另一种流行的开发模式。在Java web开发中,出现了JSP动态页面,动态渲染页面并返回视图到浏览器客户端。随着发展,JSP现如今也被FreeMarker、Thymeleaf等更加轻量的模板引擎逐渐取代,逐渐成为主流。但是这种方式造成了后端开发人员难以摆脱HTML页面,现在的公司依旧有很多后端工程师去做这部分工作。

综上所述,为了彻底解决上面的两个问题,既能实现前端与后端的完全分离,而又不需要使用js去渲染页面。我们在服务端处理页面的基础上发明了一种改变传统网站开发模式的web服务器,解决web开发中前后端难分离的问题。

本发明可以把后端人员对页面的处理的工作交还给前端去做。后端人员只需要面向接口编程,而不必接触前端HTML页面的实现。原来需要后端去写FreeMarker语法逻辑去渲染HTML页面的工作交由前端人员去做。本质上只是分离了这部分工作安排,而并没有改变工作的内容。

2、定义

Jerry是帮助前后端完全分离的工具,它可以帮助后端工程师只做后端,前端工程师只做前端。

3、技术效果

  1. 前后端分工更加明确,后端只需要面向接口编程,只关心后端业务逻辑,不关心前端的实现。

  2. 前端不再只写静态页面,还要使用FreeMarker语法写页面逻辑。

  3. 后端的一套业务接口适用于安卓、IOS、web等平台设备,提高服务端系统的扩展性。

  4. 改变了传统开发中要求后端人员必须学习HTML、JavaScript、Css等前端技能。

  5. 本服务器可以用于开发过程中的调试阶段,由前端人员进行使用,并将最终写好逻辑的HTML文件放在项目中上线;也可以将本服务器直接用于线上环境,成为项目中的一部分。这两种都可以达到前后端分离开发的目的。

4、附图说明

图1:在传统Java web开发中的运行流程图

解释:此流程图中只有request部分是前端负责,其余均为后端负责。

1536482289885

图2:使用本发明之后的Java web运行流程图

1536482313227

本发明的核心思想是代理服务器的角色,对于浏览器发起的请求,代理服务器接收后会提取请求中的相关信息,如GET或POST参数、Cookie,携带并转发至后端提供的接口。

对于后端来说,就好像只收到了浏览器发出的请求,代理服务器完全可以被后端人员忽略掉。

代理服务器收到后端的响应内容,提取响应头中的Set-Cookie值,并处理响应体(JSON),使用FreeMarker模板引擎渲染到HTML文件,携带Set-Cookie一起响应给浏览器,对于浏览器用户来说,就好像只与服务端进行通信。

5、安装使用

  1. 前往Git仓库克隆/下载Zip压缩包到本地电脑。

  2. 解压后只需保留以下3个目录或文件,其它全部删除即可:

    • /config

    • /webapps

    • JerryServer-1.0.0-SNAPSHOT.jar

  3. 在控制台执行java -jar JerryServer-1.0.0-SNAPSHOT.jar命令运行该jar包。Linux系统如使其在后台运行,在末尾加个&即可。

  4. 访问 http://localhost:8888 出现如下界面(默认访问ROOT项目的index.html文件)

    1537158441757

    访问 http://localhost:8888/admin 体验动态渲染。

    1537158422954

  5. 安装成功!

详细文档请移步Git!

我的博客:https://yueshutong.cnblogs.com/

Github:https://github.com/yueshutong/JerryServer/

Gitee:https://gitee.com/zyzpp/JerryServer

开源中国:https://www.oschina.net/p/jerryserver

的码云指数为
超过 的项目
加载中

评论(13)

y
yansen_zh
首先,感谢作者分享!第二,提个建议,个人感觉越是这种 “一键设置”,受众就越低。可否在这种“一键配置”的基础上,增加更详细的配置 ?
终身学习者---邓高鹃
终身学习者---邓高鹃
我们不说褒贬!感谢作者热心分享
xiaoyu123
xiaoyu123
为啥不是nginx+lua/C++?
段永明
段永明
厉害,我以为是Jetty
loyal
loyal
呵呵呵呵真逗啊.....这样也行...
再睡一下
再睡一下
现在的老鼠都很皮
唯风
唯风
相比较 http-server ,优势在哪里?如果是前端的,要扩展还得学一下java么
电磁怪兽
电磁怪兽
Tomcat不是应该对应Jerrymouse吗_(:з」∠)_
penngo
penngo
如果有一个管理界面可能会更好。
h
haha_code
nodejs http-server 更方便

暂无资讯

暂无问答

JavaMonitor

常规监控jvm,都是比较麻烦的。但是今天在开源中国,看到了一个web版的javaMonitor。 虽然要在服务器上安装,但是这样的话,大家都能看见了。所以还是非常six的。 发现写了这个的博主也是非常...

2018/11/16 11:05
128
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部