EL表达式和JSTL(三)——EL表达式
在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"]}
方括号运算符和点运算符:
- 在某些请况下,方括号运算符和点括号运算符是可以相互转换的,如${user.name}和${user.["name"]};
- 方括号运算符还可以访问List集合或者数组中某个指定的元素,如${user[0]};
- 方括号运算符和点运算符可以结合使用,如${user[0].name};
EL表达式和JSTL(三)——EL表达式的更多相关文章
- C#动态构建表达式树(三)——表达式的组合
C#动态构建表达式树(三)--表达式的组合 前言 在筛选数据的过程中,可能会有这样的情况:有一些查询条件是公共的,但是根据具体的传入参数可能需要再额外增加一个条件.对于这种问题一般有两种方法: a. ...
- [转]EL表达式和JSTL表达式实例
/* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...
- EL表达式与JSTL
内容包括 EL表达式 EL函数库 JSTL 核心标签库 格式化标签库 SQL标签库 XML标签库 自定义标签库 EL表达式 EL是Expression Language的是缩写,是JSP页面编写的一种 ...
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出. 1,JSTL标签总结: a).JSTL标签有什么用? JSTL是由JCP(Java Commu ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- JSP和El表达式和JSTL标签库使用
核心标签库: <%@ page language="java" import="java.util.*" pageEncoding="utf-8 ...
- EL表达式、JSTL标签库
一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...
- EL表达式、 jstl标签
https://www.cnblogs.com/zhaotiancheng/p/6391894.html https://blog.csdn.net/zdwzzu2006/article/detail ...
随机推荐
- pwntool基础和ida常用操作
pwntools:http://www.91ri.org/14382.html ida:https://www.jianshu.com/p/d425140c6561
- Emacs服务器模式以及emacsclient配置
Emacs有很多强大的插件,但是插件安装多了会导致启动速度很慢.为了解决这个问题,一个方法是使用emacs提供的server模式. 基本用法[1] 启动emacs server: $ emacs -- ...
- Django ORM中常用的字段类型以及参数配置
一.数值型 AutoField对应int(11).自增主键,Django Model默认提供,可以被重写. BooleanField对应tinyint(1).布尔类型字段,一般用于记录状态标记. De ...
- Floyd--P2419 [USACO08JAN]牛大赛Cow Contest
*传送 FJ的N(1 <= N <= 100)头奶牛们最近参加了场程序设计竞赛:).在赛场上,奶牛们按1..N依次编号.每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就是 ...
- 实验吧-杂项-flag.xls(notepad++查找)、保险箱(linux文件分解、密码破解)
flag.xls 下载文件,用notepad++打开,查找flag就能找到flag. 保险箱(linux文件分解.密码破解) 将图片保存下来,用kali的binwalk分析,发现有rar文件,然后用f ...
- 七、React表单详解 约束性和非约束性组件 input text checkbox radio select textarea 以及获取表单的内容
一.约束性和非约束性组件: 非约束性组: MV: <input type="text" defaultValue="a" /> 这个 default ...
- 2.2 学习总结 之 servlet 的两次抽取
说在前面 昨天 完成了文件上出的学习和实践 今天 学习servlet的两次抽取,以加快编写工程的速度 一.servlet 抽取的原因: 刚刚学习使用servlet写后台,往往只使用一个servlet来 ...
- POJ1338 & POJ2545 & POJ2591 & POJ2247
POJ1338 2545 2591 2247都是一个类型的题目,所以放到一起来总结 POJ1338:Ugly Numbers Time Limit: 1000MS Memory Limit: 10 ...
- TX2安装pycharm&tensorflow
https://blog.csdn.net/zt1091574181/article/details/88899668 TX2 (JetPack4.2)安装 Pycharm&TensorFlo ...
- 大数据高可用集群环境安装与配置(08)——安装Ganglia监控集群
1. 安装依赖包和软件 在所有服务器上输入命令进行安装操作 yum install epel-release -y yum install ganglia-web ganglia-gmetad gan ...