【JAVADAY33】EL表达式,简单语法及方法使用

EL表达式

语法格式

在JSP页面的任何静态部分均可通过:${expression}来获取到指定表达式的值

EL表达式的作用:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mCFnH1OI-1648213648470)(C:\Users\TMJIE5200\AppData\Roaming\Typora\typora-user-images\image-20220325180323781.png)]

EL如何取数据

EL只能拿取四大域中的数据,因此你必须把数据放在四大域中,域对象.setAttribute(KEY,VLAUE),EL表达式,才能拿得到。

第二个EL的语法${}大括号里面不要加引号,加引号的话它就等于把这个字符串输出了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ijuV1qj6-1648213648478)(C:\Users\TMJIE5200\AppData\Roaming\Typora\typora-user-images\image-20220325181218052.png)]

  • 如果获取对象的属性,没有对应的get方法直接报错,报500错误!

  • 如果四大域,存的key都一样,当我们取得时候,优先级是page>request>session>application,优先从小得范围内开始取。

  • EL提供了4个隐式的范围对象,分别是 pagascope,requestscope,sessionscope,applicationscope,我们可以在访问的key前面加其中的对象,就能获取到指定域的对象了。

  • 如果你取的时候名字写错了,那么EL表达式输出的值将啥也不显示,是一个空白。

  • 另外一种取数据的语法:${xxx[“xxxxxxx”]},中括号当中需要添加双引号,多用于名字中带有点的,你用普通的调它调不出来

  • 怎么从map和数组中取数据
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-70t8r1OX-1648213648482)(C:\Users\TMJIE5200\AppData\Roaming\Typora\typora-user-images\image-20220325185758782.png)]

<%@ page import="com.sj.www.User" %>
<%@ page import="java.util.*" %><%--
  Created by IntelliJ IDEA.
  User: TMJIE5200
  Date: 2022/3/25
  Time: 18:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--从四大域中取数据--%>
<%
  request.setAttribute("username","张三");
  pageContext.setAttribute("name","李四");
  session.setAttribute("name","王五");
  application.setAttribute("name","赵六");
%>
${username}<br>
${pageScope.name}<br>
${sessionScope.name}<br>
${applicationScope.name}<br>

<%
  /*从对象中取*/
  User user = new User();
  user.setName("张伟");
  user.setAge(22);
  user.setSex("男");
  request.setAttribute("objuser",user);
%>
<%--以前取request.getpatinte("objuser")才能拿到值--%>
${requestScope.objuser.toString()}<br>
${requestScope.objuser.name}<br>
${requestScope.objuser.sex}<br>
${requestScope.objuser.age}<br>

<%
  /*从map集合中取*/
  HashMap<String,String> hashMap=new HashMap<>();
  hashMap.put("name","丽萨");
  hashMap.put("age","22");
  hashMap.put("sex","女");
  pageContext.setAttribute("person",hashMap);
%>
<%--取出哈希map--%>
${pageScope.person}<br>
${pageScope.person.name}<br>
${pageScope.person.sex}<br>
${pageScope.person.age}<br>

<%
  /*从一个list集合中取*/
  User zhangsan = new User();
  zhangsan.setSex("男");
  zhangsan.setName("王明");
  zhangsan.setAge(33);
  List<User> list=new ArrayList<>();
  list.add(user);/*把张伟放进去*/
  list.add(zhangsan);/*把张伟放进去*/
  session.setAttribute("张伟",list);
%>
<%--list依旧是使用下标--%>
${sessionScope.张伟[0].name}<br>
${sessionScope.张伟[0].sex}<br>
${sessionScope.张伟[0].age}<br>
${sessionScope.person1[1].name}<br>

<%
  Map<String,String> map=new TreeMap<>();
  map.put("type","水果");
  session.setAttribute("type1",map);
%>
<%--map一律使用的是名字获取--%>
${sessionScope.type1.type}<br>
<%
  int[] arr={1,2,3,4,5,6,7,8};
  session.setAttribute("arr",arr);
%>
<%--数组是采用下标--%>
${arr[0]}<br>
${arr[2]}<br>
${arr[3]}<br>
${arr[4]}<br>

<%--具体使用什么,可以参考,原本获取它的数据是怎么获取的,是根据get方法还是下标,并且首字母要变小写,要符合驼峰命名法--%>

如果你想在jsp忽略某一个EL表达式,你可以在表达式前面加一个斜杠

以下所有对比的效果是一样的
用户名:<%=request.getParameter("username")%><br>
用户名:${param.username}<br>
param只能拿数组或者map集合中的第一个元素
paramValues可以拿任意位置的元素
爱好:${param.aihao}<br>
爱好:${paramValues.aihao[0]}、${paramValues.aihao[1]}、${paramValues.aihao[2]}<br>
	application 对应的是  servletContext

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hoc6Ugkf-1648213648484)(C:\Users\TMJIE5200\AppData\Roaming\Typora\typora-user-images\image-20220325204432793.png)]

获取XML里面的initparam

END

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Keyle777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值