博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JEE_EL表达式
阅读量:6573 次
发布时间:2019-06-24

本文共 4773 字,大约阅读时间需要 15 分钟。

 

EL表达式语言(Expression Language):在JSP页面中代替Java代码,简化页面,方便代码维护。

 

1.EL基本语法

${expression}。

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。

假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。

${表达式}
以前编写jsp代码时,如果要获取表单中的用户名,一般使用  <%=request.getParameter("name")%> ,这样当然也可以获取到值,但是又把html代码和java代码混到一起,看起来比较乱套。现在使用EL表达式的话就比较简洁了:${param.name} 就可以解决了。注意:${表达式} 表达式部分不需要加引号,如果写成 ${"param.name"} ,那么页面上显示出来的就不是表单中name的值了,而是 "param.name" 这个字符串。表达式与开始符和终结符之间的空格被忽略不计。如果表达式的值为null,那么页面将显示一个空格而不是null。

 

2.禁用EL

(1)使用斜杠“\”

(2)使用page指令:<>

(3)在web.xml文件中配置<el-ignored>元素

 

3.EL表达式有自身的保留字,避免使用保留字命名。

 

4.EL运算符

通过EL访问数据:

EL 提供“.“和“[ ]“两种运算符来存取数据。

${param.name} 和 ${param["name"]} 是等价的,

但是当要存取的属性名称中包含有一些特殊字符如 "." 或 "-" 等非字母或数字的符号 或者 在使用动态取值时,就一定要使用 "[]" 运算符。

数组元素的获取,List集合元素的获取:

index.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><%@ page import="java.util.*" %>
通过EL输出数组的全部元素<%String[] arr={
"Java Web开发典型模块大全","Java范例完全自学手册","JSP项目开发全程实录"}; //定义一维数组request.setAttribute("book",arr); //将数组保存到request对象中%><%String[] arr1=(String[])request.getAttribute("book"); //获取保存到request范围内的变量//通过循环和EL输出一维数组的内容for(int i=0;i
${requestI}:${book[requestI]}
<%} %>
web.xml
13.1
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp

 

在EL中进行算术运算:

EL会自动转型: ${param.count + 20}

假若窗体传来count的值为10时,那么上面的结果为30。之前没接触过JSP 的读者可能会认为上面的例子是理所当然的,但是在JSP 1.2 之中不能这样做,原因是从窗体所传来的值,它们的类型一律是String,所以当你接收之后,必须再将它转为其他类型,如:intfloat 等等,然后才能执行一些数学运算,下面是之前的做法:

String str_count = request.getParameter("count");

int count = Integer.parseInt(str_count);

count = count + 20;

 

在EL中判断对象是否为空:

<%request setAttribute("user","");%>

<%request.setAttribute("user1",null);%>

${empty user}  ---true

${not empty user1}  ---false

 

在EL中进行逻辑关系运算:

EL关系操作符:==(或eq)、!=(或ne)、<(或lt)、>(或gt)、<=(或le)、>=(或ge)

逻辑操作符:&&(或and)、||(或or)、!(或not)。

View Code
<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%>
关系运算符和逻辑运算符的应用<%request.setAttribute("userName","mr"); //定义request范围内的变量userNamerequest.setAttribute("pwd","mrsoft"); //定义pwd范围内的变量pwd%>userName=${userName}
pwd=${pwd}
\${userName!="" and (userName=="明日") }:
${userName!="" and userName=="明日" }
\${userName=="mr" and pwd=="mrsoft" }:
${userName=="mr" and pwd=="mrsoft" }

 

在EL中进行条件运算:

${A?B:C}:A结果为true时返回B的结果,否则返回C的结果。

 

 

EL的隐含对象:

1.页面上下文对象:

pageContext:利用此对象可以访问Request、Response、out、Session,exception、page、servletContext等对象。例如:${pageContext.request()}

2.访问作用域范围的隐含对象:

pageScope、

requestScope、

sessionScope、

applicationScope

3.访问环境信息的隐含对象:

param(获取请求中的参数值,例如:${param.name})、 param Values(用于获取请求中的参数值,等同于request.getParameterValues(String name))、 header(用于获取请求报头的值,等同于调ServletRequest.getHeader(String name))、 headerValues(用于获取请求报头的值,等同于调用ServletRequest.getHeaders(String name))、 cookie(用于获取cookie对象)、 initParam(用于获取Web应用程序初始化参数的值)

 

定义和使用EL的函数:

定义函数步骤:

(1)编写一个Java类,并在该类中编写公用的静态方法static。

(2)编写标签库描述文件,该文件扩展名为.tld,保存到Web应用的WEB-INF文件夹下。

(3)在JSP页面中引用标签库< uri=标签位置 prefix=调用标签的前缀>,并调用定义的EL函数。

StringDeal.java
package com.wgh;public class StringDeal {    public static String shiftEnter(String str) { // 定义公用的静态方法        String newStr = str.replaceAll("\r\n", "
"); // 替换回车换行符 newStr = newStr.replaceAll(" ", " ");// 替换空格符 return newStr; }}
stringDeal.tld
1.0
/stringDeal
shiftEnter
com.wgh.StringDeal
java.lang.String shiftEnter(java.lang.String)
index.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030" %>
定义EL函数处理字符串中的回车换行符和空格符
deal.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><%@ taglib uri="/stringDeal" prefix="wghfn"%><%request.setCharacterEncoding("GB18030"); %>
显示结果内容为:
${wghfn:shiftEnter(param.content)}
web.xml
13.5
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp

 

 

 

 

转载于:https://www.cnblogs.com/wzmmao/archive/2012/08/14/2638561.html

你可能感兴趣的文章
cenOS+nginx+php+mysql (非一键包安装)
查看>>
我的友情链接
查看>>
我来自CSDN
查看>>
在mysql表中插入大量测试数据
查看>>
怎么给电脑设置IP地址和DNS地址,各系统设置IP/DNS几种方法
查看>>
面试总结之 oop desing 之 The Strategy Pattern
查看>>
必 备 习 题 集 (一)
查看>>
windows下批量部署简易脚本
查看>>
python爬虫入门—统计豆瓣电影评论词频
查看>>
【LoadRunner技术讲座4】利用sitescope监测监控mysql
查看>>
IEnumerable中运用yield
查看>>
python 时间转换(day,hous,minute,second)
查看>>
网络布线线材用量计算公式
查看>>
查询当前数据库用户会话信息
查看>>
转:模态对话框的支持 (IE,Firefox,Chrome)
查看>>
Jenkins+QTP自动化测试框架
查看>>
《Node.js In Action》笔记之流程控制
查看>>
3518EV200 SDK学习1
查看>>
JavaScript初学者应注意的七个细节
查看>>
1163: 零起点学算法70——Yes,I can!
查看>>