Java Web学习总结(10)学习总结-EL表达式
一,EL 表达式概述(EL主要从域中取数据)
EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。
二,EL从域中取出数据(EL最重要的作用)
jsp脚本:
<%=request.getAttribute(name)%>
EL表达式替代上面的脚本:
${requestScope.name}
EL最主要的作用是获得四大域中的数据
格式:${ EL表达式 }
EL获得pageContext域中的值 |
${pageScope.key}; |
EL获得request域中的值 |
${requestScope.key}; |
EL获得session域中的值 |
${sessionScope.key}; |
EL获得application域中的值 |
${applicationScope.key}; |
EL从四个域中获得某个值:${key};
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回"" (注意,不是null,而是空字符串)。
例如:
User实体类:
public class User {private int id;private String name;private String pwd;public User(int id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}public User() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;} }
Index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ page import="com.zender.*,java.util.*"%> <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body><!-- 模拟域中的数据 --><%//存储字符串request.setAttribute("name","Zender");//存储一个对象User user = new User(1, "Zender", "123");session.setAttribute("user", user);//存储一个集合User user1 = new User(1, "Zender", "123");User user2 = new User(2, "Zender2", "1234");User user3 = new User(3, "Zender3", "1235");List<User> list = new ArrayList<User>();list.add(user1);list.add(user2);list.add(user3);application.setAttribute("list", list);%>通过脚本获取域中的数据:<br/><!-- 通过脚本获取域中的数据 --><%=request.getAttribute("name") %><%User sessionUser = (User)session.getAttribute("user");out.write(sessionUser.getName());%><hr/>通过EL表达式获取域中的数据:<br/><!-- 通过EL表达式获取域中的数据 -->${requestScope.name}${sessionScope.user.name}${applicationScope.list[1].name}<hr/>通过EL表达式,全域查找,获取域中的数据 :<br/><!-- 通过EL表达式,全域查找,获取域中的数据 -->${name}${user.name}${list[2].name}<hr/> </body> </html>
访问index.jsp结果如下:
三,EL表达式执行运算
语法:${运算表达式},EL表达式支持如下运算符:
1、关系运算符
2、逻辑运算符
3、empty运算符:检查对象是否为null(空)
4、二元表达式:${user!=null?user.name :""}
5、[ ] 和 . 号运算符
例如:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page import="com.zender.*,java.util.*"%> <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body>el表达式进行四则运算:<br/>加法运算:${100+100}<br/>减法运算:${100-100}<br/>乘法运算:${100*100}<br/>除法运算:${100/100}<hr/>el表达式进行关系运算:<br/><%--${user == null}和 ${user eq null}两种写法等价--%>${user == null}<br/>${user eq null}<hr/>el表达式使用empty运算符检查对象是否为null(空):<br/><%--使用empty运算符检查对象是否为null(空) --%><% List<String> list = new ArrayList<String>();list.add("Zender");list.add("Zender2");request.setAttribute("list",list);%><c:if test="${!empty(list)}"><c:forEach var="str" items="${list}">${str}<br/></c:forEach></c:if><hr/>EL表达式中使用二元表达式:<br/><% session.setAttribute("user1",new User(1,"Zender","123"));%>${user1 == null ? "对不起,您没有登陆 " : user1.name} </body> </html>
运行结果如下:
四,EL的内置11个对象
pageScope,requestScope,sessionScope,applicationScope |
用于获取JSP中域中的数据 |
param,paramValues |
用于接收参数,相当于request.getParameter(),rquest.getParameterValues() |
header,headerValues |
用于获取请求头信息,相当于request.getHeader(name),request.getHeaders() |
initParam |
用于获取全局初始化参数,相当于this.getServletContext().getInitParameter(name) |
cookie |
用于WEB开发中的cookie,相当于request.getCookies()--->cookie.getName()--->cookie.getValue() |
pageContext |
用于WEB开发中的pageContext |
注意:
测试header和headerValues时,如果头里面有"-" ,例Char-Encoding,则需要header["Char-Encoding"]、headerValues["Char-Encoding"]
测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,必须${cookie.key.name}或者${cookie.key.value}
五,EL表达式保留关键字
所谓保留字的意思是指变量在命名时,应该避开上述的名字,以免程序编译时发生错误。
转载于:https://www.cnblogs.com/Zender/p/7801330.html
Java Web学习总结(10)学习总结-EL表达式相关推荐
- javaweb学习总结(二十九)——EL表达式
一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...
- 【JAVA】(实训1)EL表达式编码问题
这一周在思途教育实训,再次巩固了之前学习过的javaMVC的知识,接触了不少新的知识,比如SSM/SSH框架.Spring.Bootstrap框架.JSTL等等.也暴露出了很多问题,谨以此记录下来以便 ...
- Java web 三大框架异常学习总结
struts2.1.8+hibernate2.5.6+spring3.0(ssh2三大框架)常见异常原因和解决方案 http://www.cnblogs.com/lanxuezaipiao/p/361 ...
- java web孤傲苍狼,JavaWeb学习笔记
我看的资料是孤傲苍狼的javaweb学习笔记,他写的真的很全,这或许就是社区力量吧!哪些问题不知道,上网搜一搜就有了,让自己不进步的敌人,只有懒惰了. 这是我接触JavaWeb的第二周,有一些自己的理 ...
- java web 自定义标签_JavaWeb学习——自定义标签
自定义标签 一.自定义标签概述 使用标准JSP访问.操作JavaBean,是实现展现(HTML)与业务实现(Java代码)分离的第一步.然而,标准方法功能不够强大,以至于开发者无法仅仅使用它们开发应用 ...
- java web开发常见问题_JavaWeb学习笔记(五)--Web开发其他常见问题
一.把web应用打成war包 使用JDK自带jar命令,进入到web应用里面,执行命令: jar -cvf 包名.war . # .表示当前目录所有的文件 直接用jar可查看帮助 执行完成后生成一个d ...
- Java学习_Day 10(学习内容:尚硅谷集合JAVA零基础P523-P533)
P523 集合-使用Iterator遍历Collection package com.collection;import org.junit.Test;import java.util.ArrayLi ...
- java web事务控制_JavaWeb学习之事务
一.事务(Transaction):其实是一组操作(包含许多个单一的逻辑).只要有一个逻辑没有执行成功,那么都算失败. 所有的数据都回归到最初的状态(回滚) 例如:银行转账 A用户向B用户转账,这样的 ...
- Java Web整合开发(10) -- 资源国际化
{0} 转载于:https://www.cnblogs.com/thlzhf/p/3941770.html
- java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库
本文转自与博客园一杯凉茶的博客. 在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为.行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上 ...
最新文章
- 【恋爱通告】高清完整版迅雷下载! 首发
- 区域显示触发_Unity3D 在Hierarchy窗口中显示物体所属Layer
- 在js对象上绑定js数组原生方法
- 【字符比较】单字符比较值是否相等
- Android添加垂直滚动scrollview
- 0002-Add Two Numbers(两数相加)
- d3 i5 神舟精盾k480n_神舟精盾k480n i5 d3和精盾i5 d1哪个好?
- 【转】WCF请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)
- JavaScript本地存储实践(html5的localStorage和ie的userData)的实例页面
- (25)FPGA面试题5分频器
- linux虚拟机备份树莓派,为树莓派做系统备份镜像(for Linux #038; Mac),
- 快速计算属于你的数字
- 下一个主要AI平台是什么?苹果说:手机
- Integer.ParseInt()异常
- 词频统计(30 分)(map vector sort)
- Selenium实战应用——实现知到智慧树自动播放课程
- oracle写存储过程ssm中调用存储过程
- 批量下载全国县级行政区划geojson格式数据,将下载的geojson数据批量转为shapefile格式,在arcgis中可视化
- SoundPool循环播放
- 初中计算机 课题研究,初中信息技术的教研课题题目
热门文章
- 数据结构 排序 java_Java数据结构之排序---选择排序
- python缺失值类型与分析_3.1.1 缺失值分析
- java 观察者模式_重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」...
- java类加载及new对象的过程
- Maven学习(二)————Maven核心概念(一)
- html怎么无损插入背景音乐,HTML插入背景音乐方法【全】
- asp 可否压缩_怎样用ASP压缩文件
- kafka 创建topic_Kafka试题
- 中快捷搜索_同事用1分钟,我用半小时,原来是因为这8个Word快捷键,秒杀一切办公技巧...
- sql server management studio性能分析_如何分析一条SQL的性能