重新学javaweb----EL表达式(1)

EL表达式:最初出现的目的是用来取代jsp页面中的jsp脚本表达式(<%= %>).但是随着el的发展el的功能已经不限于此了.

(1)获取数据:

  • 使用中括号的地方都可以使用点号替代,除了中括号中是数字或者中括号中包含特殊字符(-.)的情况除外
  • 在中括号中如果不用双引号引起来则是变量,先找变量的值再拿变量的值使用.如果用双引号则是常量,直接使用常量的值

~获取常量
字符串/数字/布尔类型,直接写在el表达式中,el直接进行输出

<h1>获取数据常量</h1>
    <hr>
    ${aaa} ${"fff"} ${123} ${true}
//结果为:fff 123 true //第一个aaa为变量他会去域里面找,找不这就什么东不输出

~获取域中的变量
如果el中写的是一个变量的名,则el会调用pageContext的findAttribute方法,在四大作用域中以给定的名字找对应的属性值,找到后进行输出,如果四个域中都找不到,什么都不输出

<%
        String name = "灭绝师太";
        session.setAttribute("name", name);
    %>
    ${name }
    //结果:灭绝师太

~获取数组中的数据
只能获取不能遍历,要想遍历 得配合JSTL标签

<hr>
    <%
        String names[] = { "小燕子", "紫薇", "尔康", "五阿哥" };
        pageContext.setAttribute("names", names);
    %>
 ${names[0] }
//结果:小燕子

~获取集合中的数据

<h1>获取集合中的数据</h1>
    <hr>
    <%
        List<String> list = new ArrayList();
        list.add("甄嬛");
        list.add("甄嬛1");
        list.add("甄嬛2");
        pageContext.setAttribute("list", list);
    %>
    ${list[1] }
    //结果:甄嬛1       

~获取Map中的数据
使用中括号的地方都可以使用点号替代,除了中括号中是数字或者中括号中包含特殊字符(-.)的情况除外

在中括号中如果不用双引号引起来则是变量,先找变量的值再拿变量的值使用.如果用双引号则是常量,直接使用常量的值

 <%
        Map<String, String> map = new HashMap();
        map.put("name", "奥巴马");
        map.put("age", "52");
        map.put("address", "白宫");
        pageContext.setAttribute("map", map);
        pageContext.setAttribute("name", "age");
    %>

    <br> ${map["name"] } ${map[name] } ${map["age"] } ${map.address }
    //结果:奥巴马 52 52 白宫

~获取javabean的属性


<%   //注意导包
        Person p = new Person();
        p.setName("林志玲");
        p.setAge(21);
        pageContext.setAttribute("p", p);
    %>
    <br>${p.name }
    //林志玲  

在el中 getXXX() 都可以用 .XXX代替

    <%=
     ((HttpServletRequest)pageContext.getRequest()).getContextPath()   
    %>
    <br>
    在el表达式中get可以省略
    <br>
    ${pageContext.request.contextPath}
    <br>
    <img alt="" src="${pageContext.request.contextPath}/1.jpg">
//结果:
/Day06 
在el表达式中get可以省略 
/Day06  
【图片的地址为】<img alt="" src="/Day06/1.jpg">

(2)执行运算:

    算数运算
        +-*/
    逻辑运算
    比较运算

    三元运算符
    empty运算符
<body>
    <h1>empty 运算符 : 判断一个对象是否为null或字符串是否为空字符串或集合内容是否为空或域中是否没有任何属性</h1>
    <hr>
    <%
        String str = "aaaa";
         pageContext.setAttribute("str", str);
        List list = new ArrayList();
        list.add("");
        list.add("1");
        pageContext.setAttribute("list1", list,pageContext.SESSION_SCOPE);
        String aa = "";
    %>
       ${empty str }
       ${empty list}    <!-- 放到遇中才能够拿的到 -->
       ${empty list1}  <!-- (//若没有上面的两个add 这个就是true) -->
       ${empty pageScope }
       ${empty aa }
        ${empty requestScope }
        ${empty  sessionScope }
    <h1>三元运算</h1>
    <hr>
    ${10>9? "yes" : "no" }

    <h1>逻辑运算</h1>
    <hr>
    && and || or ! not ${not (3>2 and 1<2 or 10>3) }


    <h1>比较运算</h1>
    <hr>
    > gt < lt >= ge <= le != ne ==eq ${1 eq 1 } ${3 ge 2 } ${5+3 lt 3 }
    <h1>算术运算:如果有非数字参与算数运算,el表达式会试图将非数字转换为数字后参与运算</h1>
    <hr>
    ${1+1 } ${1-2 } ${1+"2" }

</body>

结果:
这里写图片描述

(3)获取常用开发对象:

el中内置了11个内置对象,这些对象el内置的,不需要提前定义就可以直接在el中使用

!pageContext – 有了它可以很方便的获取jsp页面中的9大隐式对象(直接.就可以 如:pageContext.request)

!pageScope – page域中属性组成的Map

     String str = "aaaa";
     pageContext.setAttribute("str", str);//aaaa

!requestScope – request域中属性组成的Map
!sessionScope – session域中属性组成的Map
!applicationScope –application域中属性组成的Map

!param – 所有请求参数组成的Map< String,String >
paramValues – 所有请求参数组成的Map< String,String[] >

header – 所有请求头组成的Map< String,String>
headerValues – 所有请求头组成的Map< String,String[]>

!cookie – 所有cookie信息组成的Map< String,Cookie>

initParam – 所有web应用的初始化参数组成Map

<%
    pageContext.setAttribute("name","fang");
    request.setAttribute("name","chao");
   %>
    ${requestScope.name}<br>
    ${pageContext.request.contextPath }<br>
    ${param.name } | ${paramValues.like[2] } | ${header["Accept-Language"] }<br>
    ${cookie.JSESSIONID.name } | ${cookie.JSESSIONID.value }<br>
    ${initParam.name2 }<br>

当请求地址为:http://localhost:8080/Day06/el/el3.jsp?name=fangchao&like=pingpang&like=lanqiu&like=zuqiu
结果:

chao
/Day06
fangchao | zuqiu | zh-CN,zh;q=0.8
JSESSIONID | E444A1AEE5D8565D7FC99E4B8EC9F3DF
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaWeb 中,使用 EL 达式和 JSTL 可以实现在 JSP 页面中进行动态数据处理和展示。下面我来分别介绍这两种技术的实现方法。 1. EL 达式的实现 EL 达式是一种用于在 JSP 页面中访问 JavaBean 中属性的语言。在 JSP 页面中,我们可以通过 ${} 语法来使用 EL 达式。例如,我们可以通过 ${user.name} 来获取 JavaBean 中的 name 属性的值。 要在 JavaWeb 中使用 EL 达式,我们需要完成以下步骤: 1) 在 JSP 页面中引入 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>,指定页面编码为 UTF-8。 2) 在 JSP 页面中引入 JSTL 标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>。 3) 在 JavaBean 中定义属性,并提供 getter 和 setter 方法。 4) 在 JSP 页面中使用 EL 达式来访问 JavaBean 的属性值。例如:${user.name}。 2. JSTL 的实现 JSTL 是一组 JSP 自定义标签,用于在 JSP 页面中进行动态数据处理和展示。JSTL 提供了一些常用的标签库,例如 core、fmt、sql、xml 和 functions 等。 要在 JavaWeb 中使用 JSTL,我们需要完成以下步骤: 1) 在 JSP 页面中引入 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>,指定页面编码为 UTF-8。 2) 在 JSP 页面中引入 JSTL 标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>。 3) 在 JSP 页面中使用 JSTL 标签库提供的标签来进行动态数据处理和展示。例如,使用 <c:forEach> 标签来遍历一个集合: ``` <c:forEach var="item" items="${list}"> ${item} </c:forEach> ``` 这样就可以在 JSP 页面中使用 EL 达式和 JSTL 来进行动态数据处理和展示了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值