是什么?
-
Expression Language(表达式语言)
-
可以代替JSP中的java代码,让JSP程序看起来更加整洁、美观
-
EL表达式归属于JSP
作用
1、从某个作用域里面取数据
-
pageContext
-
request
-
session
-
application
2、将取出的数据转换成字符串
-
如果是一个对象,可以自动调用java对象的toString方法将其转换成字符串
3、将字符串输出到浏览器
使用
创建一个Users对象
Users user = new Users();
取出对象,并将其显示在浏览器上
<%=request.getAttribute("user")%> ${user} ${user.name} ${user.age}
-
从域中取出数据,取出user对象,然后调用user的toString()方法,转换成字符串,输出到浏览器。
-
并且属性可以直接调用,但是前提必须有get方法。
面试题:
${abc}和${"abc"}的区别是什么?
${abc}是表示从某个域中取数据,并且这个数据的名字是abc ${"abc"}表示直接将“abc”当作字符串直接输出到浏览器
取数据的域的顺序
-
在没有指定范围的情况之下,优先从小范围中取数据
-
pageContext<request<session<application
指定范围来读取数据
${pageScope.user} ${requestScope.user} ${sessionScope.user} ${applicationScope.user}
对NULL进行了预处理
如果取不到数据就会显示空白
${name}---><%=request.getAttribute("name") == null?"":request.getAttribute("name")%>
两种取数据的形式
[ ] :name中含有特殊字符,可以使用[ ]
. :大部分使用这种方式
取Map集合中的数据:
<% Map<String,String> map = new HashMap<>(); map.put("username","zhangsan"); map.put("password","123"); request.setArrtibute("usermap",map); Map<String,User> map1 = new HashMap<>(); User user = new User(); user.setname("lisi"); map1.put("usermap1",user); request.setArrtibute("usermap1",map1); %> ${map.key} ${usermap.username} ${usermap["username"]} ${usermap.password} ${usermap["password"]} ${usermap1.user.username}
取数组中的数据:
String[] usernames = {"zs","ls"}; request.setArrtibute("userarrs",usernames); ${userarrs[1]} User u1 = new User(); u1.setUsername("zs"); User u2 = new User(); u2.setUsername("ls"); User[] users = {u1,u2}; request.setArrtibute("userarrs1",users); ${userarrs1[0].username}
忽略EL表达式
-
在<@page > 标签中添加属性 isELIgnored = "true"
-
在EL表达式前面添加\ \${username}
获取应用的根
${pageContext.request.contextPath}
EL表达式中的其他隐式对象
-
param
获取的是请求参数一维数组当中的第一个元素 用户名:<%=request.getParameter("name")%> 用户名:${param.name}
-
paramValues
爱好:${paremVlaues.hobby[0]}、${paremVlaues.hobby[0]}、${paremVlaues.hobby[0]}
-
initParam
web.xml <context-param> <param-name>pageNum</param-name> <param-value>5</param-value> </context-param> <context-param> <param-name>pageSize</param-name> <param-value>10</param-value> </context-param> 每页的记录条数:${initParam.pageSize}<br> 页码${initParam.pageNum}
-
pageContext
运算符
-
算数运算符
= + - * / %
+号 运算符只能求和,不会字符串拼接,转换不成数字的话就会报错(Java.lang.NumberFormatException)
${10+"20"}------>30
-
关系运算符
== != > >= <= eq
-
逻辑运算符
! && || not and or
-
条件运算符
? :
-
取值运算符
[ ] .
-
empty 运算符