程序媛JavaEE第五章JSP-EL-超详细教程

EL表达式

问题

  • 首页中有Servlet和jsp技术的详细教程。Servlet负责请求的处理;jsp负责请求处理结果的展示。
  • 以前都是使用Servlet处理完请求,将请求结果数据放在request域中,然后转发到jsp页面,在jsp页面通过<%%>也就是java脚本的方式取出request域中的数据,然后进行展示。
  • 也可以将Servlet处理请求后的结果放在session域中,然后将请求重定向到jsp页面,在jsp页面通过<%%>j也就是java脚本的方式取出session域中的数据,然后进行展示。
  • 虽然Servlet结合jsp的方式已经极大的简化了开发功能和页面的操作。但在jsp页面中取域中的数据要使用<%%>java脚本和HTML代码进行拼接的方式展示数据,还是比较麻烦,也不利于阅读

解决

  • 在jsp页面中使用EL表达式来获取域对象中的数据,简化在jsp页面中使用<%%>java脚本获取域对象数据的方式

EL表达式的语法

  • 语法结构:

${expression}

  • 域对象 在 JSP 中有四个:pageContext, request, session, application
    范围依次是: 本页面中一次请求中一次会话中整个应用程序中
  • 当需要指定 从某个特定的域对象中查找数据时 可以使用四个域对象对应的空间对象
    分别是:pageScope, requestScope, sessionScope, applicationScope
  • 使用EL表达式获取域数据时,如果没有指明作用域,会按照作用域由小到大的顺序查找,直到找到为止: ​ pageContext ---> request ---> session ---> application
  • 当域对象全找完后 还未找到 则返回空字符串""。

EL表达式的使用

获取数据-基本语法-数据为字符串

设置域对象中的数据

<%
    pageContext.setAttribute("uname","gym1"); // page作用域
    request.setAttribute("uname","gym2"); // request作用域
    session.setAttribute("uname","gym3"); // session作用域
    application.setAttribute("uname","gym4"); // application作用域
%>

获取域对象的值

${uname} <!-- 输出结果为:gym1 -->

获取指定域对象的值

${pageScope.uname}          <!-- page作用域 -->
${requestScope.uname}       <!-- request作用域 -->
${sessionScope.uname}       <!-- session作用域 -->
${applicationScope.uname}   <!-- application作用域 -->
获取数据-数据为各种对象

获取List

获取List中指定下标的数据:${list[下标] }

获取集合的长度:                ${list.size()}

注:list代表的是存在域对象中的变量名(限域变量名)

  • 定义一个jsp:
<%
    List<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    request.setAttribute("list", list);
%>
${list[1]}

获取Map

获取Map中指定值:${map["key"] } 或 ${map.key }
注:map代表的是存在域对象中的变量名(限域变量名)
  • 定义一个jsp:
<%
    Map map = new HashMap();
    map.put("aaa", "111");
    map.put("bbb", "222");
    map.put("ccc", "333");
    request.setAttribute("map", map);
%>
${map.aaa }
${map["bbb"]}

获取JavaBean对象

获取对象:${user} 
获取对象中的属性:${user.uname}
  • 定义一个jsp:
<%
    User user = new User();
    user.setUserId(1);
    user.setUname("zhangsan");
    user.setUpwd("123456");
    request.setAttribute("user",user);
%>
${user}
${user.uname}
EL中的运算符

算术运算

加法: +  只有运算操作,没有字符串拼接操作
减法: -
乘法: *
除法:    / 或 div

比较两个值是否相等:==  或  eq(返回true或false)

大于:>
小于:<
大于等于:>=
小于等于:<=

empty:   判断域对象是否为空:${empty 限域变量名 }

                判断对象是否不为空:${!empty 限域变量名 }

                为空,返回true;不为空返回false;

                注意:字符串对象、集合对象、普通对象的empty测试 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值