您的位置:首页 > Web前端 > JavaScript

初始JSP表达式语言-EL

2016-07-23 23:03 411 查看
EL简介

表达式语言-EL为web页和Bean管理提供了进行通信的机制。

EL表达式提供了获取对象及属性的简单方式,还支持简单的运算。

先看一个简单的例子,比如平时常用的:获取session中的username参数

使用Java代码片段

<%
if(null!=session.getAttribute("username")){
out.print(session.getAttribute("username").toString());
}
%>


使用EL表达式

${username}


EL的特点

可以与JSTL及javascript语句结合使用

可以执行类型转转换

不仅可以访问一般的变量,而且还可以访问JavaBean中的属性、嵌套属性和集合对象。

可以执行算术运算、逻辑运算、条件运算

可以获得命名空间(PageContext对象,这是页面中所有其他内置对象的最大范围的集成对象,通过他可以访问其他内置对象)

在执行除法运算时,0做除数不会返回错误,而是返回无穷大

可以访问JSP作用域(request、session、application及page)

扩展函数可以和JAVA类的静态方法执行映射

禁用EL

单句

\${username}   //  在前面加"\"就可以了


整个页面

<%@ page isELIgnored="true" %>


禁用服务器中的EL

<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>


EL保留关键字

andeqgttrue
instanceofdivorne
lefalseemptymod
notltgenull
EL访问数据

${userInfo.name}


${userInfo[name]}


EL判断对象是否为空

${empty user}


EL执行条件运算

${empty user? "是空的":"不是空的"}


EL的隐含对象

页面上下文对象

页面上下文对象为pageContext,用于访问JSP内置对象(如:request、response、out、session、exception和page等)
但不能用于获取application、config、pageContext对象和servletContext对象,获取这些对象后,即可获取其属性值

(1)访问request对象
${pageContext.request}
获取request对象后,即可通过该对象获取与客户端相关的信息。如:HTTP报头信息 客户信息提交方式 客户端主机IP地址和端口
eg获取端口号:${pageContext.request.serverPort}

(2)访问response对象
${pageContext.response}
eg返回响应的内容:${pageContext.response.contentType}

(3)访问out对象
${pageContext.out}
eg返回缓冲区大小:${pageContext.out.bufferSize}

(4)访问session对象
${pageContext.session}
eg返回session有效时间:${pageContext.session.maxInactiveInterval}

(5)访问exception对象
${pageContext.exception}
eg返回JSP页面异常信息:${pageContext.exception.message}

(6)访问page对象
${pageContext.page}
eg获取page对象:${pageContext.page.class}

(7)访问servletContext对象
${pageContext.servletContext}
eg返回servlet上下文信息:${pageContext.servletContext.contextPath}


访问作用于范围的隐含对象

EL提供了4个用于访问作用域范围的隐含对象,即pageScope  requestScope  sessionScope   applicationScope

(1)pageScope隐含对象
<jsp:useBean id="user" class="Model.User">
<jsp:setProperty name="user" property="name" value="张三"></jsp:setProperty>
</jsp:useBean>
运用pageScope隐含对象获取JavaBean实例的name属性
${pageScope.user.name}

(2)requestScope隐含对象
<%
request.setAttribute("username","YEN");
%>

${requestScope.username}

(3)sessionScope隐含对象
<%
session.setAttribute("username","YEN");
%>

${sessionScope.username}

(4)applicationScope隐含对象
<%
application.setAttribute("username","YEN");
%>

${applicationScope.username}


访问环境信息的隐含变量

(1)param对象
param对象用于获取请求参数的值  应用在参数只有一个的情况

在login.jsp中:<input type="text" name="name">
获取提交过来的值:${param.name}

(2)paramValues对象

<input id="user" type="text" name="name" value="YEN">
<input id="user" type="text" name="sex" value="MEN">
<input id="user" type="text" name="age" value="20">

获取到的信息为:${paramValues.user[0]}${paramValues.user[1]}${paramValues.user[2]}

(3)header和headerValues对象
header对象用于获取HTTP请求的一个具体的header值 但某些情况下,可能存在同一个header拥有多个不同的值 这是就必须使用headerValues对象
eg:获取HTTP请求的connection(是否需要持久连接)属性  ${header.connection}或${header["connection"]}

(4)initParam对象
用于获取web应用初始化参数的值

eg:在web.xml中有
<context-param>
<param-name>username</param-name>
<param-value>YEN</param-value>
</context-param>

获取值:${initParam.username}

(5)cookie对象
<%
Cookie cookie=new Cookie("username","YEN");
response.addCookie(cookie);
%>
获取值:${cookie.username.value}


定义和使用EL函数

定义和使用函数包括以下三个步骤:
(1)编写一个Java类,并在其中编写静态的公共方法,用于实现自定义EL函数的具体功能
(2)编写标签库描述文件申明函数,该文件的扩展名为".tld",保存在web应用的WEB-INF文件夹下
(3)在JSP页面中引用标签库,并调用定义的EL函数实现相应的功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: