JSP——EL语法总结
前言:
这周学习了EL和JSTL,内容是很简单,但知识点很琐碎,所以来总结一下。
1、EL概述:
1、 什么是 EL ?
- EL即Expression Language(表达式语言),是一种简单的语言,便于简化JSP页面对变量和对象的访问。
2、EL的功能:
- 与
<jsp:getProperty />
类似 - 是简化的
<jsp:getProperty />
3、EL的语法结构:
- ${ EL expression }
- EL可以直接在JSP页面的模板文本中使用,也可以作为元素属性的值,还可以在自定义或者标准动作元素的内容中使用,但不能在脚本元素中使用 。
2、EL基本语法:
- 一个EL元素必须以
${
开始,以}
结束。 - 它可以直接出现在模板文本中,也可以出现在JSP标记的属性中,例:
姓名:${ expression1 }
地址:${ expression2 }
<jsp:include page= "${ expression3 }"/>
- empty操作符(验证操作符)
是一个前缀操作符,用于检测一个表达式的值是否为null或者为empty。
例:${empty user}
,如果变量user不存在返回true,否则为false。
- 条件操作符
条件运算符的格式:${A ? B : C}
如果A为true时,执行B代码;而如果A为false时,则执行C代码。
3、EL与JavaBean:
1、使用EL简化JavaBean的属性操作:
- 如原来的:
<jsp:getProperty name="myBean" property="name" />
或<%= myBean.getName()%>
现可以简化成:${myBean.name}
2、可以使用EL实现对属性的嵌套访问:
- 例:
${person.address.phoneNumbers[1].number}
3、EL基本操作符:
- ${ bean.name }(点操作符)
- ${ bean[“name”] }([ ]操作符)
例:
${user.name}或${user[“name”]}实质是调用JavaBean对象user的getName()方法
当要存取的属性名称中包含一些特殊字符(非字母、数字符号)或动态取值([]中是变量)时,要用[]操作符。
例:${user.My-name}应当改为${user[“My-name”]}
4、EL与属性操作:
1、在EL中访问某变量:${ 变量名 }
- 在EL中,有四个用于设定有效范围的对象:pageScope、requestScope、sessionScope、applicationScope;使用它们可以限定变量的查找范围。
- 如果没有指定变量的有效范围,JSP容器会首先从页内有效范围查找,如果找到,返回相应的值;否则,EL会依次到请求有效、会话有效和应用有效范围中查找对应的变量,找到了,就返回相应的值。如果最终也没有找到,则返回null。
2、可在变量名前直接指定范围,只在指定的范围内查找变量,如只在会话有效范围内查找变量userName的语句为:
${ sessionScope.userName }
例1:如果通过<% request.setAttribute(“user”, “chengdong”); %>
定义了一个属性对象。
要将这个属性对象输出,应该使用如下语句:
<% String s = (String)request.getAttribute(“user”);
out.print(s); %>
或<%=request.getAttribute(“user”) %>
如果采用表达式语言,则写出如下语句即可
${ user }
例2:如果有一个页面有效的属性对象,名叫customer,现在要输出它的firstName属性
<%pageContext.setAttribute(“customer”,customer)%>
customer对象的类型为NameBean,则相应语句为:
<% NameBean person = (NameBean) pageContext.getAttribute(“customer”); %>
<%=person.getFirstName() %>
如果采用表达式语言,采用如下语句即可:
${ customer.firstName }
5、EL与集合操作:
EL也可以实现简化对集合对象的访问:
例:
<%
String[] str = {"hello","world"};
List<String> list = new ArrayList<String>();
list.add("zhangsan");
list.add("lisi");
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("a",100);
map.put("b",200);
map.put("c",300);
request.setAttribute("str",str);
request.setAttribute("list",list);
request.setAttribute("map",map);
%>
${str[0] }
${map.a}<br>
${list[1] }<br>
运行结果:
6、EL隐含对象
EL是和JSP是共用的一套隐式对象。
1、pageContext对象的访问方法:
- EL中的pageContext对象其实就是当前JSP页面中的pageContext对象(即它们是同一个) 。
- 通过EL中的pageContext对象可以访问到当前JSP页面中的所有隐含对象。
2、param和paramValues对象:
使用对象param可以访问请求的参数值,下面的语句会输出请求参数userName的值
${ param.userName }
它相当于:
<%=request.getParameter(“userName”) %>
如果一个参数名对应多个值时,就需要使用paramValues对象了,获取其各个值的方法为:${ paramValues.user[i] }
(其中i表示第几个值,从0开始取值)。
3、cookie对象:
- 使用cookie可以快速访问引入的Cookie对象。
- 要访问名字为userCookie的Cookie对象,方法为:
${ cookie.userCookie }
- 要访问它的名字、值、maxAge等的方法为:
${ cookie.userCookie.name }
${ cookie.userCookie.value }
${ cookie.userCookie.maxAge }
🆗,EL的知识点差不多就这些了。