在JSP的开发中,为了获取Servlet中存储的数据,通常需要很多的Java代码,这样的做法使的JSP页面非常混乱,为此,JSP2.0中提供了一种EL规范,是一种简单的数据访问语言。

1.初识EL

  EL表达式是非常简单的,都是以"   ${   "   开始,以“  }  ”结束。具体格式如下:

  ${ 表达式}  ,表达式必须符合语法。

  ${表达式}:EL语句在执行,会调用pageContext.findAttribute()方法,以表达式为标识,分别从page,request,session,application四个域中查找相应的对象,找到此对象就返回此对象的值,没有找到就返回“  ”,不是null,从小到大的域查找,找到就不再找。

  例如:${pageScope.name}:从page域中查找name的属性,域后面必须跟一个Scope,当没有指定的域时,就从四个域中依次查找。

  实例:设置一个Myservlet,在MyServlet中给request中存属性,转发到myjsp.jsp

  Myservlet.java

package cn.it.ELDemo;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public MyServlet() {
super();
// TODO Auto-generated constructor stub
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//给域对象设置属性和值
request.setAttribute("username", "itcase");
request.setAttribute("password", "123");
//创建一个转发器
RequestDispatcher dispatcher=request.getRequestDispatcher("/myjsp.jsp");
dispatcher.forward(request, response);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

myjsp.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>EL表达式的使用</title>
</head>
<body>
用户名:<%=request.getAttribute("username") %><br>
密码:<%=request.getAttribute("password") %><br/> <hr>
使用EL表达式<br>
用户名:${username }
密码:${password} </body>
</html>

运行结果:

  EL表达式代替的是:<%=表达式%>,因此EL表达式只能够代替输出,如果设置属性则需要使用JSTL。

2.EL中的运算

  EL表达式支持简单的运算,例如:“+”,“-”,“*”,“/”;

  “  .  ”点运算符:EL中的点号运算符用来表示访问JSP页面中的某些对象的属性,如JavaBean对象,List集合,Array数组,其语法格式如下:

    ${customer.name}

    这个相当于getName方法,因此,一个类中只有getXxx方法,无论有没有setXxx方法,或者有没有Xxx属性,使用customer.name获得getXxx方法里面的内容。

  “【】“方括号运算符于点运算符的功能相同,都用于访问JSP页面中的某些属性,当需要获得的属性名中包含一些特殊的符号,如”-“,”?“时可以使用方括号运算符来访问该属性:

    ${user["my_name"]}

  方括号运算符和点运算符:

  1. 在某些请况下,方括号运算符和点括号运算符是可以相互转换的,如${user.name}和${user.["name"]};
  2. 方括号运算符还可以访问List集合或者数组中某个指定的元素,如${user[0]};
  3. 方括号运算符和点运算符可以结合使用,如${user[0].name};

EL表达式和JSTL(三)——EL表达式的更多相关文章

  1. C#动态构建表达式树(三)——表达式的组合

    C#动态构建表达式树(三)--表达式的组合 前言 在筛选数据的过程中,可能会有这样的情况:有一些查询条件是公共的,但是根据具体的传入参数可能需要再额外增加一个条件.对于这种问题一般有两种方法: a. ...

  2. [转]EL表达式和JSTL表达式实例

    /* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...

  3. EL表达式与JSTL

    内容包括 EL表达式 EL函数库 JSTL 核心标签库 格式化标签库 SQL标签库 XML标签库 自定义标签库 EL表达式 EL是Expression Language的是缩写,是JSP页面编写的一种 ...

  4. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总

    一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出.       1,JSTL标签总结: a).JSTL标签有什么用?          JSTL是由JCP(Java Commu ...

  5. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...

  6. jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...

  7. JSP和El表达式和JSTL标签库使用

    核心标签库: <%@ page language="java" import="java.util.*" pageEncoding="utf-8 ...

  8. EL表达式、JSTL标签库

    一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...

  9. EL表达式、 jstl标签

    https://www.cnblogs.com/zhaotiancheng/p/6391894.html https://blog.csdn.net/zdwzzu2006/article/detail ...

随机推荐

  1. 公司网络能ping通ip,不能ping域名

    第一天去公司,就因为网络问题弄了大半天.只能ping通ip,不能ping域名.网上查了各种方式都不行,刷新dns缓存.说是什么域名解析问题.dns的问题.公司里好几个人都看了看不能解决.领导让重装系统 ...

  2. 吴裕雄--天生自然C++语言学习笔记:C++ 信号处理

    信号是由操作系统传给进程的中断,会提早终止一个程序.在 UNIX.LINUX.Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断. 有些信号不能被程序捕获,但是下表所列信 ...

  3. Java学生成绩系统

    package text; public class helloworld{ private String stunumber; private String name; private double ...

  4. redis qps监控

    最近有个客户反应redis的qps不准确,通过查看代码,发现我们的监控是调用的redis info里面的instantaneous_ops_per_sec 客户反应说自己压测了ns,但是从监控上看不到 ...

  5. 个人网站一步一步搭建——(20)成功在本地IIS运行

    昨天网站都做完了,今天发布.然后在IIS运行成功了. 遇到了很多问题  发布了不低于10次 头都晕了. 问题1:之前写了很多调试代码 console.log(); 慢慢删除完,. 问题2:vue 不能 ...

  6. BGP联邦配置

    BGP联盟建立: ①:启用BGP进程. ②:关闭同步与自动汇总. ③:router-id ④:公布自己所属联盟.——confederation identifier ID ⑤:表达自己的与其他对等(p ...

  7. 修改虚拟机ip

    在命令行里输入:more  /etc/sysconfig/network-scripts/ifcfg-eth0 (注意more后要空一格,还有eth0,最后是数字零).  然后再输入:ifconfig ...

  8. java题求代码,4、现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5}

    public class TEST { public static void main(String[] args) { int [] oldArr= {1,3,4,5,0,0,6,6,0,5,4,7 ...

  9. SQL常用短语小记-持续更新

    创建链接服务器语句 --//创建链接服务器[在本地服务器创建] exec sp_addlinkedserver '链接服务器名称','','SQLOLEDB','远程服务器地址' -- exec sp ...

  10. 读书笔记 - javascript 高级程序设计 - 第一章 简介

      第一章 简介   诞生时间 1995 最初用途 客服端验证 第一版标准 注意是标准 1997年 Ecma-262  一个完整的js实现由三部分组成 ECMAScript DOM 文档对象模型 BO ...