从主网站上https://sourceforge.net/projects/beetl/files/
下载,sample-web.war,部署在任意支持web的容器里,然后可以通过http://${your ip}:${your port}/${your context path}/index 来访问,如下样子
首先,通过 BeetlInitListener 初始化配置GroupTemplate,如下代码
public void contextInitialized(ServletContextEvent arg0) {
ServletGroupTemplate.intance().init(arg0.getServletContext());
ServletGroupTemplate.intance().getGroup().config("<!--:", "-->", "${", "}");
ServletGroupTemplate.intance().getGroup().setCharset("UTF-8");
ServletGroupTemplate.intance().getGroup().registerFormat("samples.xss", new XSSDefenseFormat());
ServletGroupTemplate.intance().getGroup().registerFunction("samples.join", new JoinFunction());
}
控制语句占位符号是<!--: ,这样,尽可能然模板少破坏原有文件,你可以通过浏览器直接浏览模板文件
另外注册了一个防止XSS攻击的格式化函数,在本实例中,如显示新闻内容${news.content,samples.xss}就可以了,XSSDefenseFormat会过滤带有javascript的输入。
JoinFunction是用于显示邮件发送者的函数,会将多个邮件发送者按照指定符号分开显示,在本示例中,用${samples.join(mail.from,",")}
页面布局上,采用layout标签函数。如首页,新闻页,以及帮助页都使用indexLayou.html页面(用户登录后,所有页面使用emailLayout.html页面),如下首页面
<!--: layout("/indexLayout.html",{"menuId":0,"title":"首页"}){-->
<div class="content">
<h1>说明</h1>
<p>这是一个简单示例,包括如何在web容器中使用Beetl,以及beetl的常用语法,函数展示。</p>
<h2>功能</h2>
<p>用户可以浏览新闻,以及帮助俩个栏目,注册用户可以登录系统收发邮件,用户名和密码为任意</p>
<h3> </h3>
<p> </p>
</div>
<!--:}-->
layout接收俩个参数,一个是此页面所使用的布局页面,第二个参数是需要传给布局页面的参数,是一个json格式,本例子中,首页使用的是indexLayout.html页面,并且会传递title参数。
indexLayout.html
由三部分构成,一部分是在页头通过includeFileTemplate包括inc/indexMenu.html,页尾通过
includeFiletemplate包括footer.html.
中间部分用占位符${layoutContent}将主页面内容赋值到这个地方。整个页面样子如下:
<div class="container">
<div class="header">
<p><a href="#"><img src="images/logo.jpeg" alt="在此处插入徽标" name="Insert_logo" width="158" height="124" id="Insert_logo" style="background: #8090AB; display:block;" /></a></p>
<!--: includeFileTemplate("/inc/indexMenu.html"){ -->
这是菜单,参考inc/indexMenu.html
<!--:} -->
<!-- end .header --></div>
${layoutContent}
<!--: includeFileTemplate("/footer.html"){ -->
<div class="footer">
<p align="center">beetl版权所有 闲.大赋</p>
<!-- end .footer --></div>
<!-- end .container --></div>
<!--:} -->
</body>
</html>
注意,之所以“这是菜单,参考inc/indexMenu.html”是可以不用的,正如footer里的页面,放在这儿,使得模板页面易读,容易维护,includeFileTemplate将不处理{} 里的内容
更多详情,还是下载web看看吧
如果启用预编译功能,可以看到如下class在运行的时候被生成
欢迎访问 http://beetl.sourceforge.net/,欢迎加入beetl群 219324263
- 大小: 23.6 KB
- 大小: 5.3 KB
- 大小: 50 KB
分享到:
相关推荐
总的来说,"salem-sample-data.zip"提供了宝贵的教育资源,有助于研究人员和学生加深对数据处理流程的理解,提升数据分析技能,并可能推动新的见解和发现。无论是对于学术研究还是实际业务问题,高质量的数据集都是...
标题中的“bevformer转onnx自己电脑失败,由于grid-sample算子不支持”提示了我们在尝试将一个名为“BEVFormer”的模型转换为ONNX格式时遇到了问题。BEVFormer可能是一个用于自动驾驶或者计算机视觉任务的深度学习...
导航到websdk-sample-vuejs目录: cd websdk-sample-vuejs 安装依赖项: yarn install 在代码编辑器中打开websdk-sample-vuejs目录 打开文件,然后输入变量的值: 多变的 描述 签名端点 必需,返回签名的端点...
配置文件config-sample.plist config-sample.plist config-sample.plist
在"springboot-web-sample"这个项目中,我们看到的是一个基于Gradle构建的Web应用程序示例,它为学习和理解Spring Boot的核心特性和实践提供了很好的平台。 【Spring Boot基础知识】 1. **自动配置**:Spring Boot...
此“ASPNET-WebAPI-Sample-master.zip”压缩包可能包含了关于如何使用ASP.NET Web API创建和操作RESTful服务的示例代码和教程。 在ASP.NET Web API中,开发者可以利用C#或VB.NET等.NET Framework语言,通过定义控制...
"mp4_sample-aes"暗示了AES可能被应用于MP4多媒体文件的加密,这是在数字媒体和流媒体领域常见的做法,用于保护版权内容。"sample_aes"可能是一个测试用例或者演示程序,用来展示如何在实际应用中使用AES加密。 ...
4. **Web 应用集成**:在 Spring MVC 或其他 Web 框架中,你可以将 `jCaptcha` 集成到控制器中,处理验证码的生成和验证。这通常涉及到在请求处理方法中生成验证码,在表单提交时验证验证码。 5. **安全存储与清理*...
在压缩包子文件的文件名称列表中,"spring-boot-web-sample-master"可能代表了项目的源代码仓库的主分支,这通常包含了项目的全部源代码、配置文件、测试和其他资源。 在Spring Boot 2.0的Web应用中,我们可以预期...
根据提供的压缩包子文件的文件名称列表,我们可以推断出压缩包内可能包含的是"lim-sample-1.0.0"这个目录或者文件,这通常是Python库的组织方式,其中可能含有如下结构: - setup.py:这是一个Python脚本,用来配置...
总的来说,AISHELL-1-sample数据集结合Kaldi工具包,为研究者和开发者提供了研究中文语音识别的理想平台。通过处理和分析这个数据集,不仅可以提升模型的识别性能,还能深入理解语音识别技术的各个环节,包括数据...
unity无限跑酷源码Endless Runner - Sample Game 1.1 Requires Unity 5.6.1 or higher. This endless runner game example (Trash Dash) is optimised for mobile, it shows the use of ob ject pooling, origin ...
在本案例中,我们关注的是 "Vuforia Web Services Sample Code Java 2.0.0",这是一个针对 Vuforia 平台的 web 服务示例代码库,专门针对 Java 开发者设计。 **Vuforia Web Services** 是 Vuforia 平台的一部分,...
Android-WiFi-Connection-Demo-Code-Sample-master.zipAndroid-WiFi-Connection-Demo-Code-Sample-master.zipAndroid-WiFi-Connection-Demo-Code-Sample-master.zipAndroid-WiFi-Connection-Demo-Code-Sample-master...
总结,"aidl-sample.zip"压缩包提供的示例将帮助开发者深入了解AIDL的工作原理,以及如何在Android应用中实现进程间通信。通过学习和实践这个示例,开发者可以更好地掌握Android系统级别的服务交互和数据传递。
Endless Runner - Sample Game.unitypackage
它提供了一个灵活的、开箱即用的响应式 UI,可与核心库交互以查看、注释和操作可嵌入任何 Web 项目的 PDF。 此存储库专为有兴趣将 WebViewer 集成到项目中的任何用户设计。 该项目是使用模板生成的。 演示 您可以...
总之,"axis-sample1.4.rar" 提供了使用Axis 1.4框架开发和测试SOAP Web服务所需的所有资源。通过学习和实践这个压缩包中的内容,开发者可以深入理解Web服务的概念,掌握使用Java构建和消费Web服务的技术。
在onSensorChanged()中,我们可以通过event.values数组获取到传感器的最新读数。数组的索引对应传感器的轴,如加速度计的x、y、z轴。 在不再需要传感器数据时,别忘了注销监听器以释放资源: ```java ...
openui5-sample-app, 使用 Grunt Karma & Bower的OpenUI5示例应用程序 openui5-sample-appOpenUI5 示例应用使用 Grunt,Karma & Bower正在启动安装 node.js ( 来自 nodejs.org ) 。安装Grunt的CLInpm in