Tiles技术总结

从glTF到3D Tiles:揭秘Cesium中3D模型的高效流式传输技术 本文深入解析Cesium中3D Tiles技术如何通过glTF格式实现高效流式传输,解决大规模3D模型加载难题。详细探讨了瓦片化架构、空间索引优化及性能调优策略,为数字孪生和城市建模提供关键技术方案。 阅读详情

一、           说明

Tiles使得struts在页面的处理方面多了一种选择。并且更容易实现代码的重用。Tiles增加了layout的概念,其实就是把一个页面划分为几块,这有点像柜架,但柜架是不同页面分开控制,如拉动右侧滚动条,上面柜架不动,只有下面柜架页面在动,而tiles是不同页面组合成一个页面统一控制,拉动右侧滚动条时,整个页面都会跟着动。

通常的来说一个页面大概可以划分为如下几块:

head页面头部:存放一个运用的公共信息:logo等,如果是网站可能是最上面的一块。

menu页面菜单:放置一个运用中需要使用的菜单,或者在每一个页面都使用的连接。

footer页面尾部:如版权信息等。

body页面主题内容:每个页面相对独立的内容。

如果按上面的划分那对每一个页面我们只要写body里面的内容,其他的就可以共享重用。

如果大多数页面的布局基本相同我们甚至可以使用一个jsp文件根据不同的参数调用不同的body。

二、           Tiles配置和基本配置文件介绍

(一)Tiles有一个配置文件:tiles-defs.xml

 tiles-defs.xml定义了每一个页面的组成元素和形式。

下面我将说明如下所示的一个tiles-defs.xml文件

tiles-defs.xml

-----------------------------------------------------------------

1、定义整体Layout

<!--定义/layout/ mainLayout.jsp的组成名称为project.mainLayout -->

<definition name="project.mainLayout"       path="/layout/mainLayout.jsp">

       <put name="title" value="xxxx系统" />

       <put name="logo" value="/WEB-INF/pages/main/logo.jsp" />

       <put name="mainMenu" value="/WEB-INF/pages/main/mainMenu.jsp" />

       <put name="messages" value="/common/messages.jsp" />

       <put name="submenu" value="/WEB-INF/pages/main/xxManageSubMenu.jsp" />

       </definition>

     这里的title是标题,logo是界面上最左上角的标志,xxxx系统有两级菜单,mainMenu是主菜单,是不变的,而subMenu是子菜单,六个模块就有六个子菜单,是随模块而变化的。如果你的系统没有子菜单,这条可以省略。示例项目进入系统后默认的第一个页面即显示xx管理模块的列表页面。messages是错误信息。

     根据实际情况,如果一个主Layout,可以定义多个。

 

2、定义各个模块的子Layout,需要继承主Layout

<!--定义common.xxManage,继承project.mainLayout -->

<definition extends="project.mainLayout" name="common.xxManage">

       <put name="submenu"   value="/WEB-INF/pages/main/xxManageSubMenu.jsp" />

<!--以上的元素将替换project.mainLayout中的元素-->

</definition>

    这里的common.xxManage是xx管理模块的意思,这就是一个模块对应一个subMenu,用新的submenu配置覆盖mainLayout的配置。mainLayout里的其它位置都不需要变化,所以这里可以不用重写。

    如果某模块还需要有个左侧菜单,点击左侧菜单,右侧页面变化,左侧菜单不变的话,也可以做如下配置:

<!--定义common.xxManage,继承project.mainLayout -->

<definition extends="project.mainLayout" name="common.xxManage">

       <put name="submenu"   value="/WEB-INF/pages/main/xxManageSubMenu.jsp" />     

       <put name="leftBody" value="/WEB-INF/pages/xxManage/body/xxxinfoleftbd.jsp" />

<!--以上的元素将替换project.mainLayout中的元素-->

</definition>

 

3、配置具体的页面,需要继承相应模块的二级Layout

    在配置二级Layout时已经说过可以配置一个左侧的菜单页面,如果左侧菜单不会变化的话,这里的底层Layout配置时可以只配置一个body就可以。

<definition extends="common.xxManage" name="xxManage.xxxInfo">
  <put name="body" value="/WEB-INF/pages/xxManage/body/xxxinfobd.jsp"/>
 </definition>

    如果二级Layout没有左侧菜单配置也可以采用上面的配置,即为只有上下的结构。

    如果有配置左侧菜单,并且左侧菜单每个功能点都不同,则只能配置到每个子功能点的Layout中了,如下配置:

<!—定义xxManage.xxxInfo,继承common.xxManage -->

<definition extends="common.xxManage" name="xxManage.xxxInfo">

       <put name="leftBody" value="/WEB-INF/pages/xxManage/body/xxxinfoleftbd.jsp" />

       <put name="rightBody" value="/WEB-INF/pages/xxManage/body/xxxinforightbd.jsp" />

</definition>

 

(二)Layout页面

下面介绍一下在Layout页面都写些什么:

/layout/ mainLayout.jsp
-----------------------------------------------------------------

…

<html>

<head>

<title><tiles:getAsString name="title" /></title>

…

</head>

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="mainInit()" >

<table cellpadding="0" cellspacing="0" class="LogoTable" id="01" >

       <tr valign="bottom">

              <tiles:insert attribute="logo" />

             <tiles:insert attribute="mainMenu" />

       </tr>

       <tr valign="top" >

              <tiles:insert attribute="submenu" />

    </tr>

</table>

<table  class="MainTable" cellpadding="1" cellspacing="1">

  <tr class="TrMain">

    <td width="225" >

   <tiles:insert attribute="leftBody" />

       </td>

    <td width="775">

    <table>

    <tiles:insert attribute="messages" />

    </table>

    <tiles:insert attribute="rightBody" />

       </td>

  </tr>

</table>

</body>

</html>

----------------------------------------------------------------

    使用<tiles:insert attribute="mainMenu" />语句将所有定义的部分合理的组合成一个页面,如果没有左侧菜单的,可以只有 <tiles:insert attribute="body" />。

 

(三)对tiles标签的配置

在web.xml里面配置tiles对应的taglib的配置如下:
web.xml

-----------------------------------------------------------------

<taglib>

              <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>

              <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>

</taglib>

 

(四)对tiles-defs.xml配置文件的配置

在struts-config.xml里面配置tiles-defs.xml

Struts-config.xml

-----------------------------------------------------------------

<plug-in className="org.apache.struts.tiles.TilesPlugin">

       <set-property property="definitions-config"

                     value="/WEB-INF/plugin/tiles-defs.xml" />

       <set-property property="moduleAware" value="true" />

       <set-property property="definitions-parser-validate"

                     value="true" />

</plug-in>

三、           使用Tiles

如果已经配置好tiles-defs.xml,接下来就可以在jsp文件中使用这些定义了。

建立页面xxxinfo.jsp,这里面要调用tiles的定义:

<%@ include file="/common/taglibs.jsp"%>

<tiles:insert definition="setting.xxxInfo" flush="true" />

插入setting.xxxInfo标记的一页

taglibs.jsp:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested"%>

还必须包含下面这句,tiles标签才能够被识别:

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

 

       根据tiles-defs.xml里的xxManage.xxxInfo设置

<definition extends="common.xxManage" name="xxManage.xxxInfo">

       <put name="leftBody" value="/WEB-INF/pages/xxManage/body/xxxinfoleftbd.jsp" />

       <put name="rightBody" value="/WEB-INF/pages/xxManage/body/xxxinforightbd.jsp" />

</definition>

知道leftBody是/WEB-INF/pages/xxManage/body/xxxinfoleftbd.jsp页面,而

rightBody是/WEB-INF/pages/xxManage/body/xxxinforightbd.jsp页面。所以我们还需要建立xxxinfoleftbd.jsp和xxxinforightbd.jsp页面,这两个页面就为真正的业务代码。

    注意:

    1、由于最父层的Layout页面已经包含Html及Body的标签,所以在其子页面不要再写这些标签。

    2、由于在xxxinfo.jsp中已经有对页面字符集的定义及struts各个标签的引用,如果在body的页面定义了不同的字符集,比如父页面定义的是UTF-8,而子页面却定义成了GBK,这样会引起页面白页,子页面完成可以不定义字符集,不过要注意页面上一定不能有中文,否则会提示字符集不正确,无法保存,要养成将中文定义在资源文件的好习惯。

 

四、           后记

以上是一些在参加工作第一个项目中的简单和基本的使用,更加高级的使用可以参照其它文档。个人觉得使用Tiles在做企业级应用开发的时候可能不如在做网站那样更能体现优越性。但在系统开始设计的时候考虑并规划好整个UI(user interface),那在修改和维护的时候将节省不少的工作量,因为通常UI的确定,在代码编写结束和完成,所有尽可能的使用多个子页面构成一个页面,后面的美化和维护就比直接维护一个很大的页面容易。

Cesium1.95内存优化实战:如何用3D Tiles和LOD技术解决GLB模型加载崩溃问题 本文详细介绍了在Cesium1.95中如何通过3D Tiles和LOD技术优化GLB模型加载,解决内存溢出问题。通过空间分块、细节分级和动态加载策略,内存占用可降低80%以上,显著提升渲染性能和用户体验。适用于数字孪生、智慧城市等大规模3D场景开发。 阅读详情

相关推荐

基于Three.js的多视图3D Tiles同步可视化技术解析

已成为工业级3D应用的标准需求。在BIM可视化、数字孪生和GIS领域,

一路走一路学,总会不落后 558

Tiles 2.x 应用指南

Jakarta Tiles是一个用于在模板中对页面进行布局的框架。Tiles产生之初是Struts架构的一部分,后来Tiles独立出来常与Spring架构配合,本文描述了独立于其它架构而在原始WEB应用中使用Tiles的方法。基本用法设置Tiles元素 - 核心配置文件的书写方法Tiles核心配置文件格式为xml,文档类型为tiles-definitions。要在每一个配置文件的开头加

丑小鸭技术专栏 4523

Tiles 框架技术,非常好的一个东东,和大家共享

Tiles 框架,具体内容大家自己看啊,相信对大家有帮助的。

Spring MVC集成Tiles使用方法

Spring MVC集成Tiles使用方法 MVCSpringJSPBeanStruts  首先,我们定义一个总体的tiles视图 /tiles/mainTemplate.jsp 首先使用:打印tiles配置文件中定义的字符串属性title 然后是分别加载header,content,footer三个jsp页面,共同组成mainTemplate.jsp  

chengzi28的专栏 638

局部路径规划算法 - B样条曲线(B-spline Curves)

本文详解了B样条以及代码实现

BigDavid123的博客 6506

保姆级教程:在Windows上用Docker Desktop一键部署Dify 1.0.1(附国内镜像加速)

本文提供在Windows系统上使用Docker Desktop快速部署Dify 1.0.1的详细教程,包括环境准备、国内镜像加速配置、Dify容器部署实战及常见问题解决方案。特别针对国内用户优化,确保快速完成部署并提升开发效率。

weixin_33738555的博客 282

掌握Tiles框架 (二)-- Tiles布局和定义

1. Tile 布局 构建第一个 tile 布局 如果站点能够重用相同的布局(使用 HTML 表格来实现)和图像,而不必重复相同的 HTML 代码,这样不是很好吗? Tile 在为站点创建共同的外观方面特别出色。话虽这样说,许多开发人员并没有认识到 Tiles 在创建用 JSP 实现的可重用组件方面同样也很出色。 如果您发现自己在多个页面上重复相同的 HTML 代码,就可考虑对那些页面使用...

weixin_30659829的博客 307

王爽《汇编语言》课程设计2(不涉及软盘版本)

assume cs:code,ds:data,ss:stack stack segment db 128 dup (0) stack ends data segment db 256 dup (0) data ends code segment start: mov ax,stack mov ss,ax mov sp,128 ...

weixin_41944412的博客 1178

Struts Tiles框架使用

Tiles框架                                          ++YONG原创,转载请声明Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。它用模板定义网页布局,每个页面模板都是一个简单的 JSP 页,它定义了一些由占位符组成的外形,以放置内容。执行时,Tiles 将会用相应的内容来替换占位符,因此,创建整个页面即形成布局。T

Java之道 1万+

A股历史数据免费下载终极指南:4000+个股数据一键打包获取

本文提供了获取A股历史数据的完整免费方案,重点介绍了Tushare Pro、AkShare等开源金融数据API的使用方法。通过详细的Python脚本示例,指导读者如何自动化批量抓取、清洗、存储4000多只个股的历史行情数据,并分享数据质量校验与性能优化技巧,助力量化研究与市场分析。

ooo22的博客 2236

保姆级避坑指南:在Ubuntu 22.04上从零编译Autoware.universe(含ROS2 Humble和CUDA配置)

本文提供了一份详细的Autoware.universe编译指南,涵盖Ubuntu 22.04系统优化、ROS2 Humble安装避坑、CUDA配置及Demo运行技巧。通过分步操作和实战经验,帮助开发者高效完成环境搭建,避免常见错误,提升自动驾驶开发效率。

weixin_30642561的博客 347

Jakarta Struts编程:使用Tiles

 安装和配置Tiles在您能够使用Tiles 框架之前,您必须确保它已安装并正确的配置在web容器中。Tiles框架并不依赖于某种特定的容器,您要做的就是获得所需的文件,并将它们放到web应用程序的正确位置上。 下载TilesTiles 框架包含在struts发行版中。先前版本中,它位于contrib文件夹中,但现在是核心的一部分。您还可以在http: //www.lifl.fr/~dumouli

699

微动探测原理及仪器介绍

微动探测原理及仪器介绍 1、微动探测原理 1.1 基本理论 微动是由体波和面波组成,其中微动能量的百分之七十以上都来自于面波,并且它与体波的主要区别是在不均匀的介质中传播时面波会发生频散,而体波不存在频散现象,因此面波是微动探测的主要对象。 对于介质的弹性参数(如横波速度、层薄厚、压缩波速度、密度等),面波传播速度相对比较敏感,特别是对横波的敏感性很高,因此可以利用面波来反演横波速度。 在时间和空间上,微动信号具有以下特性:高度变化、无规律性、无重复性等,有研究发现全世界各处记录的微动信号都有相似

zw461450141的博客 1万+

3D Tiles 2.0 技术审查整理笔记

一种基于的高效场景重建方法。用稀疏的三维高斯球(splat)云表示场景。每个 splat 包含:位置、颜色、不透明度缩放、旋转(各向异性)球谐函数(SH)编码视角相关光照(反射、高光、各向异性)真正的愿景:生态融合3D Tiles 2.0 的核心不仅是功能升级,更是glTF 与地理空间生态的深度交汇。一旦建立在 glTF 之上,3D Tiles 就能天然继承 glTF 的扩展能力,例如:物理引擎支持交互性增强动画控制AI 驱动内容等桥梁作用。

a571574085的博客 516

人工智能面试总结-分类与聚类

目录说说常用的分类算法,以及各自的优缺点?说说为什么正确率有时不能有效评估分类算法?说说什么样的分类器最好?说说聚类算法有哪些衡量标准?(选看)各聚类算法性能比较汇总说说什么是聚类,你知道哪些聚类算法?具体展开介绍你知道的聚类算法?说说K-Means聚类算法流程?说说K-Means聚类算法如何调优?说说K-Means聚类算法如何选择初始点?说说K-Means聚类聚的是特征还是样本?说说K-Means聚类的特征距离是如何计算的?说说聚类与分类的区别?手撕K-Means聚类 说说常用的分类算法,以及各自的优缺点

啥都生的博客 3864

基于Simulink的柔性关节人形机器人振动抑制控制仿真

本文完成了基于Simulink的柔性关节人形机器人振动抑制控制仿真,实现了:✅ 建立二质量柔性关节动力学模型✅ 设计加速度反馈主动阻尼控制器✅ 对比陷波滤波与状态反馈效果✅ 验证大幅运动下的快速振动衰减能力✅ 为高动态人形机器人操作(如击掌、搬运)提供平滑执行基础。

xiaoheshang_123的博客 130

3D Tiles Tools中实现LOD分级的技术探讨

3D Tiles Tools中实现LOD分级的技术探讨 概述 在3D Tiles Tools项目中,实现模型LOD(Level of Detail)分级是一个提升大规模三维模型渲染性能的重要技术。本文将深入探讨如何为3D Tiles实现有效的LOD分级机制。 LOD分级的重要性 对于超过1GB的大型BIM模型,直接在Web端加载会面临严重的性能问题。LOD技术通过为模型创建多个细节级别的版本,使得...

gitblog_07828的博客 823

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

3D Tiles 2.0 技术审查整理稿

Morgan 最后的意思很明确:团队真正兴奋的,不只是某几项新功能本身,而是地理空间生态与 glTF 生态之间正在发生的更深层融合。一旦 3D Tiles 建立在 glTF 之上,社区就可以更自然地继承更大范围的 glTF 扩展成果,例如物理、交互等方向的能力。换句话说,3D Tiles 2.0 不只是对一个地理空间标准的升级,它也可能成为连接多个技术社区的一座桥梁。她想传达的最后一句话其实很简单:3D Tiles 2.0 最终会长成什么样,取决于社区现在是否真正参与进来。

a571574085的博客 497

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

3D模型优化与GIS可视化:objTo3d-tiles转换技术全解析

在处理大规模3D地理信息系统时,开发者常面临模型加载缓慢、渲染性能低下和跨平台兼容性差等问题。objTo3d-tiles作为一款高效的Node.js工具,能够将OBJ模型文件快速转换为3D Tiles格式,显著提升GIS场景的加载速度和渲染效率。本文将从技术原理到实战应用,全面解析这一工具的核心价值与使用技巧。 ## 痛点解析:3D模型转换的常见难题 在GIS可视化项目中,3D模型转换过程中往

gitblog_00701的博客 316

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

tiles瓦片(小框架)技术

一、Spring中配置tiles配置    <!-- 普通视图解析器视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></p...

datiaoshuai0112的博客 299

struts之Tiles技术——Tabs layout开发应用

Tabs layout开发应用1.首页(portal)tabs.jsp代码:examples.tabs.page" flush="true" />2.组建配置文件:tiles-examples-defs.xml    -->                                                                  -->    -->      exampl

Java之路 2989

本地部署真的更安全吗?Qwen3-VL-4B-Instruct-GGUF 数据隐私与离线使用完整解析

Qwen3-VL-4B-Instruct-GGUF 是通义千问 Qwen3-VL-4B-Instruct 多模态视觉理解大模型的 GGUF 量化版本,专为 LM Studio、llama.cpp 等本地推理引擎设计,支持在断网环境下完成文本对话与图片理解。本文完整解析本地部署的数据隐私边界、离线使用步骤,以及 Q4_K_M、Q6_K、Q8_0 三种量化文件该如何选择,帮助你在 5 分钟内完成部署。

gitblog_00364的博客 225

Astro 内容集合与 CSS 内联策略实战:从 endeavour.md 看 `build.inlineStylesheets` 三种模式与测试验证

本文以 Astro 仓库中 `css-inline-stylesheets` 测试夹具为切入点,讲解两件密切相关的事:一是内容驱动站点中 Markdown 内容集合(Content Collections)的配置与渲染方式,二是构建阶段 CSS 交付策略——`build.inlineStylesheets` 的 `always` / `auto` / `never` 三种模式及其底层实现。读完本文

gitblog_00412的博客 376

基于CesiumJS 的3D Tiles技术

生活不止眼前的苟且,还有诗和远方的田野谷歌推出逼真的 3D Tiles(2023 年 5 月) 这是开放 3D 地理空间世界的重大突破。Google 的 3D 地理空间数据集现在首次向所有人开放,可以在 Google Earth 之外使用。逼真的 3D Tiles 允许开发人员访问 2,500 多个城市,并通过 Cesium 生态系统的功能探索他们的创造力,通过 CesiumJS 创建 ...

天波风客的博客 1161

解决AI放大模糊难题:ComfyUI_UltimateSDUpscale tiles技术原理解析

ComfyUI_UltimateSDUpscale是一款专为解决AI图片放大模糊问题设计的ComfyUI节点工具,它创新性地将图像放大与分块(tiles)处理技术相结合,通过精细化的分区域优化,让AI生成的图片在放大过程中保持惊人的细节清晰度。本文将深入解析其核心的tiles技术原理,帮助新手用户快速掌握这一强大工具的工作机制。 ## 一、tiles技术:突破传统放大瓶颈的核心 传统AI放大技

gitblog_00955的博客 674
上一篇: JFreeChart技术总结(一)
下一篇: CSS的常用技巧
潭溪Debby
博客等级 码龄21年 32粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值