freemarker 页面怎么获取Session中的值

freemarker 页面怎么获取Session中的值,第1张

session可以看成一个数组,只是数组的下标是数字,比如a[1],而session下标是一个字符串,也就是他的key值。

获取session值:

string strSession = Session["user_name"]ToString();

就这麼简单。

1 模板+数据模型=输出

2 数据模型

a) 类似目录的变量称为hashes,包含保存下级变量的唯一的查询名字,充当其它对象的容器,每个都关联唯一的查询名字

b) 类似文件的变量称为scalars,保存单值,有两种类型

i 字符串:用引号括起,单引号or双引号

ii 数字:不用引号

iii 日期:可以是日期,时间或日期-时间

iv 布尔值:true或false,通常在<#if …>标记中使用

v 对scalars的访问从root开始,各部分用””分隔,如 animalsmouseprice

c) 另外一种变量是sequences,和hashes类似,充当其它对象的容器,按次序访问,只是不使用变量名字,而使用数字索引,如animals[0]name,索引值从0开始

d) 通常每个变量具有上述的一种能力,但一个变量可以具有多种上述能力

e) 方法

i ${avg(3,5,20)} ${avg(studentzhangyaangage,studentsituage)}

f) 宏和变换器:用户自定义的指令(FTL标记)

g) 节点:树形结构中的一个节点,常用于xml处理中

3 模板

a) 文本:直接输出

b) ${…}:称为interpolations,FreeMarker会在输出时用实际值代替,或#{},只用于文本中

c) FTL标记:类似于HTML,为了与HTML区分,用#开始,有的以@开始,不会输出,区分大小写,FTL标记不能位于另一个FTL标记内部

d) 注释:<#--和-->,不会输出

e) 多余的空白字符会在模板输出时移除

f) 指令

i 使用FTL标记引用指令,有三种FTL标记

1 开始标记:<#name prarm>

2 结束标记:</#name>

3 空内容指令标记:<#name param />

ii 有两种类型的指令:预定义指令和用户定义指令,用户定义指令要用@替换#

iii FTL标记不能够交叉,应该正确嵌套

iv 如果使用不存在的指令,FreeMarker会产生错误消息

v < , </ 和指令间不允许有空白字符

g) 表达式

i 字符串

1 使用单引号或双引号限定

2 特殊字符要转义

3 raw字符串,可以认为是文本,其中的$和{等不具有特殊含义,该类字符串在引号前面加r,如${r”${foo}”} ${r”c:foobar”}

ii 数字

1 直接输入,不需要引号

2 精度数字使用””分隔,不能使用分组符号

3 不支持科学计数法

4 不能省略小数点前面的0

5 数字8 ,+8 ,08和800 都是相同的

iii 布尔值:true 和 false, 不使用引号

iv 序列

1 有逗号分隔的子变量列表,有方括号限定,如:

<#list [“winter”, ”spring”, ”summer”, ”autumn”] as x>

${x}

</#list>

2 列表的项目是表达式,如:

[2+2, [1,2,3,4], ”whatnot”]

3 可以使用数字范围定义数字序列,如:

25等同于[2,3,4,5] 注意:数字范围没有方括号 如:52

4 散列(hash) 由逗号的键/值列表,有大括号限定,键和值之间用冒号分隔

{“name”:”zhangyang”,”age”:23} 键和值都是表达式,但键必须是字符串

v 获取变量

1 顶层变量:${variable}, 变量名只能是字母, 数字, 下划线, $, @ 和# 的组合, 不能以数字开头

2 从散列中获取数据

a) schoolstudentname

b) school[“student”]name

c) school[“student”][“name”]

说明:使用点语法,变量名有顶层变量一样的限制, 方括号语法没有该限制

3 从序列获(sequences)得数据: 和散列的方括号语法一样, 只是方括号的表达式值必须是数字; 注意: 第一个项目的索引是0

4 序列片段: 使用[startIndexendIndex]语法, 从序列中获得片段(也是序列)

5 特殊变量: FreeMarker内定义的变量, 使用 variablenae 语法访问

vi 字符串 *** 作

1 Interpolation(或连接 *** 作)

a) 可以使用${} 或#{} 在文本部分插入表达式的值,

如${“Hello ${user}”} 等于 ${“Hello”+user}

b) ${} 只能用于文本部分, 不用于FTL表达式中

2 子串

假设user的值为”tom cat”

${user[0]}${user[4]} tc

${user[14]} om c

vii 序列 *** 作

连接 *** 作: 和字符串一样, 用”+”

<#list [“joe”,”fred”] + [“julia”,”kate”] as user>

${user}

</#list>

viii 散列 *** 作

连接 *** 作: 和字符串一样, 用”+”, 如果有相同的key, 右边的值替换左边的值(后面的替换前面的), 如

<#assign ages = {“joe”:23,”fred”:25} + {“joe”:30,”julia”:23}>

</#assign> 结果: joe的值为30

ix 算术运算

1 +, -- , , /, %

${x / 2}

2 *** 作符两边必须是数字

3 使用 “+” *** 作符时,如果一边是数字, 一边是字符串, 就会自动将数字转换为字符串, 如: ${3+”4”} 结果 34

4 使用内建的 int 获得整数部分

${11int} 1

${1999int} 1

${(5/2)int} 2

5 比较 *** 作符

a) 使用=(或==,完全相等)测试两个值是否相等, 使用!=测试两个值是否不相等

b) = 和!= 两边必须是相同类型的值

c) FreeMarker是精确比较,”x”,”x “和”x”是不等的

d) 对数字和日期可以使用<, <=, >, 和>=, 但不用用于字符串

e) 由于FreeMarker 会将>解释成FTL标记的结束字符, 所以对于>和>=可以使用括号来避免这种情况, 如<#if (x > y)>

f) e)的一种替代方法, 使用lt, lte, gt 和gte来替代

6 逻辑 *** 作符

a) &&(and), ||(or), !(not), 只能用于布尔值

<#if x < 13 && color = “green”>

</#if>

<#if ! man>

woman

</#if>

7 内建函数

a) 内建函数的用法类似访问散列的子变量, 只是用””|替代”,”

b) 用于字符串

i html: 对字符串进行html编码

ii cap_first: 将字符串转换成第一个字母大写

iii lower_case: 小写

iv upper_case: 大写

v trim: 去掉字符串前后的空白字符

c) 用于序列

i size: 获得序列中元素的数目

d) 用于数字

i int: 取得数字的整数部分

e) 例子:

test = “tom & jerry”

${testhtml} tom & jerry

${testupper_casehtml} TOM & JERRY

8 *** 作符优先顺序

h) Interpolation(只用于文本部分)

i Interpolation有两种类型

1 通用Interpolation: ${expr}

a) 插入字符串值: 直接输出表达式结果

b) 插入数字值: 根据缺省格式(由#setting指令设置)将表达式转换成文本输出; 可以使用内建函数string格式化单个Interpolation

c) 例子

<#setting number_format=”currency”/> 金额

<#assign answer=43/>

${answer} $4300

${answerstring} $4300

${answerstringnumber} 43

${answerstringcurrency} $4300

${answerstringpercent} 4,300%

2 数字Interpolation: ${expr} 或#{expr ; format}

3 插入日期: 根据缺省格式(#setting) 将表达式结果转换成文本输出; 可以使用内建的函数string 格式化单个Interpolation, 例子:

${updatestring(“yyyy-MM-dd HH:mm:ss zzzz”)}

4 插入布尔值: 说明同上

<#assign foo = true/>

${foostring(“yes”,”no”)} yes

5 数字Interpolation的#{expr ; format}形式可以用来格式化数字, format可以是

a) mX: 小数部分最小X位

b) MX: 小数部分最大X位

c) 例子

<#assign x=2364/>

<#assign y=4/>

#{x; M2} 236

#{y; M2} 4

#{x; m1} 24

#{y; m1} 40

i) 例子

i if指令

<#if zhangyangage < situage>

Situ is order

<#else>

Zhangyang is order

</#if>

ii list指令 <#list students[05] as s_list></#list>取list的前5条记录

<table border = “1”>

<tr>

<td>name</td><td>age</td>

<#list students as s_list>

<td>${s_listname}</td><td>${s_listage}</td>

</#list>

</tr>

</table>

iii include指令

<#include “/all/headerhtml”>

<#include “/all/footerhtml”>

iv 应用

<table>

<#list students as s_list>

<tr>

<td>

<#if s_listsex =”man”><img src=”/img/boygif”/>

<#else><img src=”/img/girlgif/>

</#if>

${s_listname}

</td>

<td>${s_listage}</td>

</tr>

</#list>

</table>

1取Application范围的对象

xml 代码

1 <#if ApplicationmyApplicationAttributeexists>

2 ${ApplicationmyApplicationAttribute}

3 </#if>

或者 : ${ApplicationmyApplicationAttribute!"default value"}

2取session范围的对象

xml 代码

1 <#if SessionmySessionAttributeexists>

2 ${SessionmySessionAttribute}

3 </#if>

或者 : ${SessionmySessionAttribute!"default value"}

3取request范围的对象

xml 代码

1 <#if RequestmyRequestAttributeexists>

2 ${RequestmyRequestAttribute}

3 </#if>

或者 : ${RequestmyRequestAttribute!"default value"}

以上就是关于freemarker 页面怎么获取Session中的值全部的内容,包括:freemarker 页面怎么获取Session中的值、freemarker怎么在双引号里使用、freemarker如何获取页面请求的参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9279625.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存