一 EL语法
${sessionScope.user.sex} 所有El都是以${开头 }结尾
运算符 。与[ ]
上述同样可以写成:${sessionScope.user[sex]}
若有特殊符号如. - 则只能用[ ] 形式
EL中的变量${username} 当未指定范围时,会默认先在page中找,然后是Request、session、application,找到一个即返回停止
若返回指定范围的对象,则可以使用如同:${pageScope.usernme}等
自动类型转换,若大括号中又+ - 等符号,里边的元素会根据符号转换的优先级先转换,然后在计算,与c里边的隐式转换很像
拥有的保留字:And Or No eq ne lt gt le ge true false null instanceof empty div mod
二 隐含对象
范围有关:
PageContext:
PageScope:
RequestScope:
sessionScope:
applicationScope:
输入输出有关:
param: 如${param.name} 功能与request .getParameter(String name)相同
paramValues: 与上类似 可以${param.name[0]} 等
在传输数据后,需要制定编码方式,才能确定页面顺利接受中文
有:<fmt:requestEncoding value = "GB2312" />
其他相关:
header: 用来沟通浏览器与服务器的信息
headerValues:
cookie: 是一个小小的文本文件,以key、value的方式将Session Tracking的内容记录在文本文件内,在浏览器的暂存区
initParam:可以自行设定web站台的环境参数(Context),想得到时可以通过initparam来获得,如一个web文件中:
<context-param>
<param-name>userid</param-name>
<param-value>mike</param-value>
</context-param>
就可以通过${initParam.userid}来获得他的参数值mike了
三 EL Functions
EL函数的语法:ns:function( arg1, arg2.....)
ns是前置名称(prefix)他必须和taglib指令的前置名称一样
如何定义el函数:如定义reverse 函数
tomcat的el函数范例,主要分为四个部分
1 web.xml:设定tablib的tld文件位置
2 functions.jsp:使用el函数的范例程序
3 jsp2-example-tablib.tld:EL函数、标签库的设定文件
4 jsp2.examples.el.function.java:EL函数主要程序逻辑部分
当Container执行程序时,它会根据uri的值,到web.xml中找到相应的tld文件
TLD文件:主要为标签的设定文件,其中包含标签的名称、参数等等,在jsp2.0之后,相关el函数的设定,也可以爱tld文件中定义
web.xml:是每个web站台最主要的设定文件,在这个设定文件中,额可以设定如:Servlet、Resource、Filter等等
以下是设定tld的:
<jsp-config>
<taglib>
<taglib-uid>
http://jakarta.apache.org/tamcat/jsp2-example-taglib
</taglib-url>
<taglib-location>
/WEB-INF/JSP2/JSP2-example-taglib.tld
</taglib-location>
</taglib>
</jsp-config>
分别有指定标签tld的文件位置和uri位置
在tld文件中,有el函数的定义:如
<function>
<description>........</description>
<name>reverse</name>
<function-class>jsp2.examples.el.Functions</function-class>
<function-signature>
java.lang.String reverse(java.lang.String)
</function-signature>
</function>
指定了名称,el函数的java类,以及el函数的传入值和回传值
程序在function.java文件中
在定义el函数式,都必须为公开静态函数。