SpringMVC学习之EL表达式二

来源:互联网 发布:巴萨拉菲尼亚数据 编辑:程序博客网 时间:2024/06/10 11:14

1.EL隐式对象

1) pageContext 这是当前JSP的javax.servlet.jsp.PageContext.它包含了所有其他的隐式对象.

JSP的隐式对象:request,response,out,session , application, config , PageContext , page , exception

例如访问当前的ServletRequest : ${ pageContext.request} 或 ${ pageContext["request"]}

获取请求方法:${ PageContext.request.method}

2)initParam 包含所有环境初始化参数 , 并用参数名作为key的Map,用于获取上下文参数的值,例如获取password的上下文参数值:${ initParam.password}

3)param 包含所有请求参数,并用参数名作为key的Map.每个key的值就是指定名称的第一个参数值,有两个请求参数重名只能获取第一个. 例如:${ param.userName}

4)paramValues 包含所有请求参数,并用参数名作为key的Map,每个key都是一个字符串数组,其中包含了指定参数名称的所有参数值,只有一个值,仍然返回一个带有一个值的数组,例如:${ paramValues.selectOptions[0]}

5)header 包含请求标题,并用标题名作为key的Map.每个key值就是指定标题名称的第一个标题,获取accept-language之歌header值,则使用${header["accept-language"]},如果header的名称是一个有效的Java变量名,则可以用${header.connection}

6)headerValues 包含所有请求的head , headerValues返回的是一个字符串数组,用法同4)

7) cookie 隐式对象用来获取cookie,这个对象表示HttpServletRequest中的所有cookie的值,例如获取名为jsessionid的Cookie值,${cookie.jsessionid.value} ,获取路径值则为${ cookie.jsessionid.path}

8) applicationScope,sessionScope,requestScope,pageScope

隐式对象applicationScope用于获取应用程序范围级变量的值.假如有应用程序范围级的变量myvar ,则 ${applicationScope.myvar} .隐式对象sessionScope,requestScope和pageScope与applicationScope相似,但是,其范围分别为session,request,page.

有界对象:PageContext,ServletRequest,HttpSession或者ServletContext.有界对象也可以通过没有范围的EL表达式获取,这种情况下,JSP容器将返回有界对象中第一个同名对象,执行的顺序是从最小范围(PageContext)到最大范围(ServletContext)

2.其他EL运算符

1) 算术运算符 加(+) , 减(-) , 乘(*) , 除(/ 或 div) , 取余或取模(% 和 mod)

按优先级,从左到右计算 ,乘除取余(优先级一样,并高于加减)  ,   加减(优先级一样,最低)

2) 逻辑运算符

a.和 (&& 和 and)                    b.或 (|| 和 or)               c.非 (! 和 not)

3) 关系运算符

a.等于 (== 和 eq)        b.不等于(!= 和 ne)        c.大于(> 和 gt)      d.大于等于 (>= 和 ge)

e.小于(< 和 lt)             f.小于等于(<= 和 le)   如:${3==4} 返回 false

4) 条件运算符

${statement? A:B} 如果statement的计算结果为True则,输出结果为A,否则输出结果为B

5) empty运算符

用来检查一个值是否是null或者empty ,如果是返回true

3.在jsp2.0或更高版本中配置EL

1) 关闭JSP页面中的脚本元素, 要使用jsp-property-group元素以及url-pattern(定义禁用脚本要用的URL样式,如:*.jsp)和scripting-invalid(true表示关闭,默认为false)两个子元素

<jsp-config>

    <jsp-prototype-group>

          <url-pattern>*.jsp</url-pattern>

          <scripting-invalid>true</scription-invalid>

    </jsp-prototype-group>

</jsp-config>  

PS:在部署描述符中只能有一个jsp-config.

2) 禁用EL计算

当需要JSP2.0即更高版本的容器中部署JSP1.2应用程序时,可能需禁用JSp中的EL运算(一个情况)

a. 将page指令的isELIgnored属性设为True (适合关闭一个或几个JSP页面中的EL运算)

<%@ page isELIgnored = "true" %>

b.在部署描述符中使用jsp-prototype-group

<jsp-config>

    <jsp-prototype-group>

          <url-pattern>*.jsp</url-pattern>

          <el-ignored>true</el-ignored>

    </jsp-prototype-group>

</jsp-config>  
原创粉丝点击