博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
土鳖的jsp改造
阅读量:5934 次
发布时间:2019-06-19

本文共 1638 字,大约阅读时间需要 5 分钟。


title: 土鳖的jsp改造 tags:

  • sitemesh
  • jsp
  • template categories: 工作日志 date: 2017-12-23 10:50:38

背景

前端世界变化太快,各种模板各种新的技术框架出现。

虽然如此,我们java后端也有模板三宝

  1. jsp
  2. freemarker
  3. velocity

当然还有一些groovy的模板等等

我司目前仍然有老项目在使用jsp

问题

jsp存在一个比较麻烦的问题在于 无法写通用模板

通常我们会在一个jsp页面include各种header layout

如果当更改整体结构的时候会比较困难

比如现在

大量的js存放在公共reference中 导致js位置在上 而可能阻塞页面render【部分jsp中也有相关script可能对公共js依赖】

现状

用户抱怨前台页面出现太慢 白屏太久

原因

  1. 由于上古继承下来的jsp中有两个公共jsp 分别为reference和head 两个jsp都在每一个jsp都被引入
  2. 当有公共js时或者css开发都是直接加到reference或者jsp中【项目太久】
  3. 当js加载越来越多 由于没有使用现代化的前端开发方式 js的依赖关系太重
  4. js同步加载阻塞html的渲染那么导致出现白屏太久!

方案

  1. 使用其他模板引擎 比如velocity或者freemarker===》不太现实 更换代价比较高
  2. 每一个页面增加foot.jsp的引用 把大部分的js引入挪到最后 尽量不导致渲染被阻塞  ===》cost比较高,以后更改新的前端layout代价也很高 万一某天产品经理抽风想要所有的页面中增加右边栏 增加footer等等
  3. 在现有的页面上获取对应响应进行二次加工===》比如相关装饰 比如sitemesh

从上面几种描述来看目前方案3可能实现起来最简单也最保险!

方案2可以解燃眉之渴,但是后期的维护成本可能也会随着页面变化而随之增大

当然方案3也会存在自己的问题 毕竟多一次性能开销

实施

sitemesh是多年前笔者在大学时代用过的jsp装饰器。目前已经升级到了sitemesh3版本

  • SiteMesh is a web-page layout and decoration framework and web- application integration framework to aid in creating sites consisting of pages for which a consistent look/feel, navigation and layout scheme is required.
  • SiteMesh intercepts requests to any static or dynamically generated HTML page requested through the web-server, processes the content and then merges it with one or more decorators to build the final result.
  • SiteMesh can also be used compose large pages of smaller pages and layouts.
  • SiteMesh is fast. Really fast.
  • SiteMesh can be used in Java based web-applications, or applied to content as an offline job.
  • SiteMesh is extensible.

sitemesh2 只能支持head body title等几个有限的数据 但是sitemesh3已经支持自定义tag

本次考虑使用sitemesh3进行开发 将script数据提到body结束符之前~

转载地址:http://pjjtx.baihongyu.com/

你可能感兴趣的文章
《实施Cisco统一通信管理器(CIPT2)》一1.9 参考
查看>>
广告软件购买 Chrome 扩展植入广告
查看>>
《嵌入式设备驱动开发精解》——2.4 建立一个具体的嵌入式开发的小项目
查看>>
《MATLAB 7.0从入门到精通(修订版)》——第1章 MATLAB概述 1.1 MATLAB 7.0简介
查看>>
《为自己工作——世界顶级设计师成功法则》—第1章1.6节专业
查看>>
Tor 项目正尝试用 Rust 重构系统
查看>>
中国开发者真的需要 Siri 吗?
查看>>
Chrome OS 将支持指纹识别,全民普及的节奏?
查看>>
如何判断服务器被DDOS了?
查看>>
《Python参考手册(第4版•修订版)》——1.10 迭代与循环
查看>>
《Android 源码设计模式解析与实战》——第1章,第1.4节让项目拥有变化的能力——依赖倒置原则...
查看>>
浅谈html引入css的几种方式
查看>>
《jQuery Cookbook中文版》——1.4 在指定上下文中选择DOM元素
查看>>
畅捷通入驻阿里云市场,为小微企业在线“号脉开方”
查看>>
《数据驱动的网络分析》——2.3 NetFlow
查看>>
《C++编程调试秘笈》——2.2 怎样用编译器捕捉缺陷
查看>>
Apache Storm 官方文档 —— 常用模式
查看>>
Java网络教程-基础
查看>>
并发数据结构-1.1.3 非阻塞技术
查看>>
实用的系统工具之 lsof
查看>>