JSP系列七:JSP表达式(EL表达式)
一,表达式语言:Expression Language 生成动态内容的简洁方式。
1,JSP2.0最重要的二项特征:JSP语法定义定制标签和表达式语言。
2,为了计算和输出存储在标准位置的java对象的值。
* 语法简单有效。
* 条件输出。 * 精确访问存储对象。 * bean属性的简略使用。 * 对集合元素的简单访问。 * 对请求参数,cookie和其他请求数据的简单访问。 * 自动类型转换。 * 空值取代错误消息。 * 应该将表达式语言的运算符用在表示逻辑(表示数据)的简单任务中,避免在商业逻辑(创建并且处理数据)中使用,将商业逻辑放在java类中。 3,EL表达式语法:
${ 表达式 } * 可以在模板文本,自定义和标准动作标签中使用。但不能在脚本中使用。
4,操作符
[] (数组记法 )或. (点号记法)操作符:用来访问数据。 算术操作符 关系操作符 逻辑操作符 Empty操作符:检测值是否为null或empty。 条件操作符 括号操作符 5,数组记法 [] 和点号记法.:
* 数组记法允许在请求期间计算属性名,括号内的值可以是变量。允许使用不能成为合法属性名的值在访问结合和请求报头中有用。
二,阻止表达式语言的使用
1,停用整个web应用中的表达式语言。 使用servlet2.3或更早版本的web.xml文件,则JSP2.0表达式语言自动在web应用中停用。 2,停用多个jsp页面中的表达式语言。
使用web.xml中的jsp-property-group元素来指定相应的页面。 <jsp-config>
<jsp-property-group> <url-pattern>JSP页面相对路径</url-pattern> <el-ignored>true或false</el-ignored> </jsp-property-group> </jsp-config> 3,停用个别页面中的表达式语言。
使用page指令的isELEnabled属性。只能在jsp1.2中使用。 4,停用表达式语言的个别语句。
将$替换为$.如果JSP2.0页面即使用表达式语言又含有${字符,使用\${来输出${。 三,阻止标准脚本元素的使用。
使用jsp-property-group元素的scripting-invalid子元素来强制执行这项约束。 <jsp-config>
<jsp-property-group> <url-pattern>JSP页面相对路径或*.jsp表所有JSP页面被约束</url-pattern> <scripting-invalid>true或false</scripting-invalid> </jsp-property-group> </jsp-config> 四,表达式中的作用域变量 * 作用域对象:
要输出作用域中属性的值,只需要在EL中使用属性的名字。 EL会自动从作用域对象中按PageContext,HttpServletRequest,HttpSession,ServletContext搜索属性。 也可以手动使用pageScope,requestScope,sessionScope,applicationScope来指定属性的范围。 找到属性会调用toString方法并返回调用结果,没有找到返回空字符串而不是null或错误消息。
* 请求参数:
param :等同getParameter(String name)方法。 paramValues 等同getParameterValues(String name)方法返回所有为指定参数名的值组成的数组。 * 请求报头: header和headerValues:访问HTTP请求报头的指定值和全部值。header.报头 * Cookie的访问:
cookie 返回Cookie对象而不是值。需要使用Cookie类的value属性来获取值。cookie.userCookie.value * 初始化参数:
initParam 对上下文初始化参数的访问。initParam.参数名 五,javaBean与EL表达式 * 对bean属性的访问提供了点号记法。系统执行反射来分析对象的内在结构。给出属性的值。
* 可以嵌套访问属性。 六,访问集合
允许使用相同的方式访问不同类型的集合:${attributeName[entryName]} * attributeName为数组对象,entryName为下标。
* attributeName实现了List接口的对象,entryName为索引。
* attributeName实现了Map接口的对象,entryName为key。 * [entryName]中的entryName可以为变量。
七,使用函数
1,定义函数:编写java类将方法声明为static。 2,关联函数:在tld中配置函数使用<function>元素 3,使用函数:${前缀:函数名(param1,param2,... ...)} 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qfs_v/archive/2008/08/20/2799123.aspx
|
|
来自: squarecome > 《我的图书馆》