学习新知识 beetl beetl和shiro

来源:互联网 发布:我知我师我爱我师ppt 编辑:程序博客网 时间:2024/05/01 00:50

beetl:首先它是在取代我之前熟悉的什么哪里的知识,它是取代jsp和freemaker的。距介绍说它会比其它的引擎要速度快,并且与javascript的语法相似,所以学起来也是简单的。
一、适合开发cms:cms是指内容管理系统,到现在还没有一个系统是非常完善的, 所以对于我来说这是一次机会,加油,赵玉红,你一定可以的。相信自己,从来都是没有你输的时候。
二、它可以和其它框架完好的整合:Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet
三、在没有m和c的情况下仍然可以开发测试,这个是别的页面所不能的
四、它是的扩展性是非常好的,他可以自己定义函数,定义方法,定义标签,还可以使用html的标签,它也支持自定义的占位符等等。
在maven项目中的应用,在pom.xml中引入就可以直接应用jar包。

com.ibeetl
beetl
2.7.13

beetl的核心是:GroupTemplate 它是模版的形式,它会有参数,一个主要的参数是资源的加载器,一个是默认的表示符,当声明后就可以应用
最用给页面的是render();它可以渲染到页面上。
其中第一个参数beetl内置的有六种 他们都是实现ResourceLoader :StringTemplateResourceLoader 字符串模版加载器gt.getTemplate(String template)来获取模板实例对象 ,该实例对象中含有分隔符或者定界符。
第二种:FileResourceLoader 文件模版加载器。参数是String类型的文件的相对的路径。
第三种:ClasspathResourceLoader 文件模版加载器。模版文件位于classpath里面。
第四种:WebAppResourceLoader 用于webapp集成,假定模板根目录就是WebRoot目录。特殊情况它实现的是FileResourceLoader
第五种:MapResourceLoader 动态模版加载器 它继承map集合实现ResourceLoader接口
第六种:CompositeResourceLoader 混合使用多种加载器。
五、beetl模版可以有很多中渲染的方式。目前比较常用的是rend();renderTo(Writer);renderTo(OutputStream);三种
六、configuration默认的配置中基本的设计是有的,但如果想要有自己的设计,可以自己配置beetl的属性文件,它的加载过程过程是先加载系统默认的,然后再加载用户自己配置的,并且后加载的会把先加载的覆盖。
七:关于加载器应用这里,提供的例子没有运行,路径找不对
八、定界符号里是表达式,如果表达式跟定界符或者占位符有冲突,可以在用 “\” 符号,如
@for(user in users){
email is {user.name}\@163.com//这里的\就是为了解决冲突的,其实和java里的转义符是一样。  
    @}
{[1,2,3]} //输出一个json列表
${ {key:1,value:2 } } //2后面的也是一个转义符号,这里需要注意一下。
九、a.设置成全局变量,比如在数据库里面查找出一个列表,然后要使这个数据在整个页面都是可以利用的,所以在Java代码中要用template.binding();将其声明成全局的变量,这样在页面的任何一个地方都是可以应用的。
b.共享变量:所谓的共享变量就是要在所有的模版中都可以利用,这个功能在查找出来后,在Java代码中是可以设计的。
groupTemplate.setSharedVars(Map sharedVars);可以实现所有的模板都可以用这个数据。
c.模板变量是一个特殊的变量,就是在页面中执行了一个函数,然后把函数的结果做为一个变量在其他地方使用。例如代码:

<%var content = {        var c = "1234";        print(c);%>模板其他内容:<% }; %>

d.引用属性,它和javascript是一样的,有点特殊的是,他的虚拟函数,比如要获得一个列表的长度。.~size 列表的索引用的是:名称LP
f.属性的赋值和javascript也是一样的。
userLP.index 当前的索引,从1开始
userLP.size 集合的长度
userLP.first 是否是第一个
userLP.last 是否是最后一个
userLP.even 索引是否是偶数
userLP.odd 索引是否是奇数
g.虚拟属性:比如性别在设置的时候,我们用的是数字,但是在展示的时候,却要显示汉字,所以这个时候就可以设置一个虚拟的值在显示的时候就用这个虚拟的属性,这样原来的设计模型也不会有所改变。

0 0