初始JSP表达式语言-EL
2016-07-23 23:03
411 查看
EL简介
表达式语言-EL为web页和Bean管理提供了进行通信的机制。
EL表达式提供了获取对象及属性的简单方式,还支持简单的运算。
先看一个简单的例子,比如平时常用的:获取session中的username参数
使用Java代码片段
使用EL表达式
EL的特点
可以与JSTL及javascript语句结合使用
可以执行类型转转换
不仅可以访问一般的变量,而且还可以访问JavaBean中的属性、嵌套属性和集合对象。
可以执行算术运算、逻辑运算、条件运算
可以获得命名空间(PageContext对象,这是页面中所有其他内置对象的最大范围的集成对象,通过他可以访问其他内置对象)
在执行除法运算时,0做除数不会返回错误,而是返回无穷大
可以访问JSP作用域(request、session、application及page)
扩展函数可以和JAVA类的静态方法执行映射
禁用EL
单句
整个页面
禁用服务器中的EL
EL保留关键字
EL访问数据
EL判断对象是否为空
EL执行条件运算
EL的隐含对象
页面上下文对象
访问作用于范围的隐含对象
访问环境信息的隐含变量
定义和使用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保留关键字
and | eq | gt | true |
instanceof | div | or | ne |
le | false | empty | mod |
not | lt | ge | null |
${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函数实现相应的功能
相关文章推荐
- Js中的prototype
- Js中的prototype
- javascript之初识js
- js数组与字符串
- js中的面向对象程序设计(3)-继承
- 通过一张简单的图,让你彻底地、永久地搞懂JS的==运算
- js函数传参是按值传递还是按引用传递?
- 【Kruskal+dfs】BZOJ1016- [JSOI2008]最小生成树计数
- jstack和dump内存分析
- JS中的全局对象
- 编写《编辑器》阶段小结
- JavaScript高级程序设计(第3版)中文 高清 完整
- Javascript加载执行中的问题
- 欢迎使用CSDN-markdown编辑器
- 【bzoj1561】[JSOI2009]去括号
- javascript基础
- javascript继承详解(一):前世今生
- JS 用字符串生成动态变量名 或 字符串与已有变量对应
- debian pjsip 编译
- js桥