`

EL表达式

阅读更多
EL特点:简单

相比于JSP Scriptlet的
<%= new java.util.Date().getDate() %>
可以发现EL的语法比传统JSP Scriptlet 更为方便、简洁。
----------------------------------------------------------------------------------------------------------------------------------------------------------
EL支持的运算符

.与 [] 运算符都可以用做对象的导航。
${sessionScope.user["sex"]}
${sessionScope.user.sex}
不过,以下两种情况,两者会有差异:
(1) 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:${user.My-Name }
上述是不正确的方式,应当改为:${user["My-Name"] }

(2) 我们来考虑下列情况:
${sessionScope.user[data]}
此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};
假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但. 无法做到动态取值。

另外EL支持的运算符毫无疑问,支持一些基本的算术运算符和逻辑运算符。表达式语言不仅可在数字与数字之间比较,还可在字符与字符之间比较,字符串的比较是根据其对应UNICODE值来比较大小的。

注意:在使用EL 关系运算符时,不能够写成:
${param.password1} = = ${param.password2}
或者
${ ${param.password1 } = = ${ param.password2 } }
而应写成
${ param.password1 = = param.password2 }
----------------------------------------------------------------------------------------------------------------------------------------------------------
EL隐含对象

JSP有9个隐含对象,而EL也有自己的隐含对象。EL隐含对象总共有11 个
隐含对象类型说明
pageContextjavax.servlet.ServletContext表示此JSP的PageContext
pageScopejava.util.Map取得Page范围的属性名称所对应的值
requestScopejava.util.Map取得Request范围的属性名称所对应的值
sessionScopejava.util.Map取得Session范围的属性名称所对应的值
applicationScopejava.util.Map取得Application范围的属性名称所对应的值
paramjava.util.Map如同ServletRequest.getParameter(String name)。回传String类型的值
paramValuesjava.util.Map如同ServletRequest.getParameterValues(String name)。回传String[]类型的值
headerjava.util.Map如同ServletRequest.getHeader(String name)。回传String类型的值
headerValuesjava.util.Map如同ServletRequest.getHeaders(String name)。回传String[]类型的值
cookiejava.util.Map如同HttpServletRequest.getCookies()
initParamjava.util.Map如同ServletContext.getInitParameter(String name)。回传String类型的值

不过有一点要注意的是如果你要用EL输出一个常量的话,字符串要加双引号。${"hello world"}

常用的其实只有最上面的4个,一般情况下不会把数据直接提交给一个JSP页面,这有违MVC精神。不过后面还是给出一些小列子。

${pageContext.request.queryString}
取得请求的参数字符串

${pageContext.request.requestURL}
取得请求的URL,但不包括请求之参数字符串,即servlet的HTTP地址。

${pageContext.request.contextPath}
服务的webapplication的名称

${pageContext.request.method}
取得HTTP的方法(GET、POST)

${pageContext.request.protocol}
取得使用的协议(HTTP/1.1、HTTP/1.0)

${pageContext.request.remoteUser}
取得用户名称

${pageContext.request.remoteAddr}
取得用户的IP地址

${pageContext.session.new}
判断session是否为新的,所谓新的session,表示刚由server产生而client尚未使用

${pageContext.session.id}
取得session的ID

${pageContext.servletContext.serverInfo}
取得主机端的服务信息

这个对象可有效地改善代码的硬编码问题,如页面中有一A标签链接访问一个SERVLET,如果写死了该SERVLET的HTTP地址那么如果当该SERVLET的SERVLET-MAPPING改变的时候必须要修改源代码,这样维护性会大打折扣。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics