一,表达式语言: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元素来指定相应的页面。
3,停用个别页面中的表达式语言。
使用page指令的isELEnabled属性。只能在jsp1.2中使用。
4,停用表达式语言的个别语句。
将$替换为$.如果JSP2.0页面即使用表达式语言又含有${字符,使用/${来输出${。
三,阻止标准脚本元素的使用。
使用jsp-property-group元素的scripting-invalid子元素来强制执行这项约束。
四,表达式中的作用域变量
* 作用域对象:
要输出作用域中属性的值,只需要在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中配置函数使用
3,使用函数:${前缀:函数名(param1,param2,... ...)}