Spring 梳理-el表达式和jstl
- JSP中有这么几种元素
1: Scriptlet
<% ... %>
2: 声明元素 <%! ... %>
3: Java表达式 <%= ... %>
4: 指令元素 <%@ ... %>
5: EL表达式 ${ ... }
6: 标准动作元素 <jsp:*** ... />
7: 非标准动作 <***:*** ... />
- EL表达式
- 用来代替
<%= %>
表达式脚本的 - 主要用于四个域中取出数据(application,request,session,page),即简化getAttribute…等操作的。
- 如果这样写
${name}
,不指定域,则会从小域到大域依次查找。 - 示例
<%
request.setAttribute("name", "Feathers");
%> name为:${requestScope.name} <!-- 即可取出request域中key为name的值 -->${student.name}表示输出student对象的name属性值,等效于<%=student.getName()%>
EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex}等于${sessionScope.user["sex"]}
. 和 [ ] 也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
回传结果为shoppingCart中第一项物品的价格。
不过,以下两种情况,两者会有差异:
(1) 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],
例如:${user.My-Name }
上述是不正确的方式,应当改为:${user["My-Name"] }
属性范围(jstl名称)
EL中的名称
Page
PageScope
Request
RequestScope
Session
SessionScope
Application
ApplicationScope
我们也可以指定要取出哪一个范围的变量:
范例
说明
${pageScope.username}
取出Page范围的username变量
${requestScope.username}
取出Request范围的username变量
${sessionScope.username}
取出Session范围的username变量
${applicationScope.username}
取出Application范围的username变量
JSP有9个隐含对象,而EL也有自己的隐含对象。EL隐含对象总共有11 个
隐含对象
类型
说明
PageContext
javax.servlet.ServletContext
表示此JSP的PageContext
PageScope
java.util.Map
取得Page范围的属性名称所对应的值
RequestScope
java.util.Map
取得Request范围的属性名称所对应的值
sessionScope
java.util.Map
取得Session范围的属性名称所对应的值
applicationScope
java.util.Map
取得Application范围的属性名称所对应的值
param
java.util.Map
如同ServletRequest.getParameter(String name)。回传String类型的值
paramValues
java.util.Map
如同ServletRequest.getParameterValues(String name)。回传String[]类型的值
header
java.util.Map
如同ServletRequest.getHeader(String name)。回传String类型的值
headerValues
java.util.Map
如同ServletRequest.getHeaders(String name)。回传String[]类型的值
cookie
java.util.Map
如同HttpServletRequest.getCookies()
initParam
java.util.Map
如同ServletContext.getInitParameter(String name)。回传String类型的值
- pageContext
我们可以使用 ${pageContext}来取得其他有关用户要求或页面的详细信息。下表列出了几个比较常用的部分
Expression
说明
${pageContext.request.queryString}
取得请求的参数字符串
${pageContext.request.requestURL}
取得请求的URL,但不包括请求之参数字符串,即servlet的HTTP地址。
${pageContext.request.contextPath}
服务的webapplication的名称
${pageContext.request.method}
取得HTTP的方法(GET、POST)
${pageContext.request.protocol}
取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser}
取得用户名称
${pageContext.request.remoteAddr}
取得用户的IP地址
${pageContext.session.new}
判断session是否为新的,所谓新的session,表示刚由server产生而client尚未使用
${pageContext.session.id}
取得session的ID
${pageContext.servletContext.serverInfo}
取得主机端的服务信息
EL关系运算符
关系运算符
说明
范例
结果
== 或 eq
等于
${5==5}或${5eq5}
true
!= 或 ne
不等于
${5!=5}或${5ne5}
false
< 或 lt
小于
${3<5}或${3lt5}
true
> 或 gt
大于
${3>5}或{3gt5}
false
<= 或 le
小于等于
${3<=5}或${3le5}
true
>= 或 ge
大于等于
5}或${3ge5}
false
- 用来代替
jsp指令有三种:
- page指令
- include指令
- taglib指令
- JSTL:
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Spring 梳理-el表达式和jstl的更多相关文章
- [转]EL表达式和JSTL表达式实例
/* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...
- 简述jsp之EL表达式和jstl及其使用
Jsp的指令之include指令include指令:代表的是页面的包含. 作用:可以把一些jsp的页面包含在一起,对外展示. 页面的布局,现在已经不用了,现在都用css+div进行布局.include ...
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- Javaweb学习笔记6—EL表达式与JSTL及自定义标签
今天来讲javaweb的第六阶段学习. EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps: ...
- EL表达式、JSTL
EL表达式 一.简介 > JSP表达式 <%= %> 用于向页面中输出一个对象. > 到JSP2.0时,在我们的页面中不允许出现 JSP表达式和 脚本片段. ...
- (十)EL表达式和JSTL标签快速入门
目录 什么是 el 表达式 示例:使用EL表达式获取pageContext .request.session.application域中的数据: 示例:使用EL表达式获取Bean属性 获取当前WEB应 ...
- EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统
EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...
- EL表达式与JSTL
内容包括 EL表达式 EL函数库 JSTL 核心标签库 格式化标签库 SQL标签库 XML标签库 自定义标签库 EL表达式 EL是Expression Language的是缩写,是JSP页面编写的一种 ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...
随机推荐
- Codeforces 1009G
题意略. 思路: 首先是贪心, 我们从前往后依次从小到大考虑放哪个字符, 重点是判断放了这个字符后, 对于剩下的后缀是否存在合法解. 考虑每个位置的允许放的字符集合只有2 ^ 6种, 我们预处理一个后 ...
- js数组的五种迭代遍历方式 every filter forEach map some
ECMAScript 5 为数组定义了 5 个迭代方法. 每个方法都接收两个参数 数组项的值和索引 every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 tru ...
- 关于Springboot+thymeleaf +MybatisPlus 报错Error resolving template [index], template might not exist的问题解决
这个问题困扰了我整整一上午,各种方式,什么返回路径 ,静态资源啊 什么的,能想到的都去搞了,可是问题还是解决不了!!!我查看了一下编译文件的[target]文件夹!发现了问题所在!根本就没有编译进去! ...
- 超越Storm,SparkStreaming——Flink如何实现有状态的计算
流式计算分为无状态和有状态两种情况.无状态计算观察每个独立的事件,Storm就是无状态的计算框架,每一条消息来了以后和前后都没有关系,一条是一条.比如我们接收电力系统传感器的数据,当电压超过240v就 ...
- WTM重磅更新,LayuiAdmin and more
从善如登,从恶如崩.对于一个开发人员来说,那就是做一个好的系统不容易,想搞砸一个系统很简单,删库跑路会还不会么. 对于我们开源框架的作者来说,做一个好的框架就像登山(也许是登天),我们一步一步往上走, ...
- MySQL之PXC集群搭建
一.PXC 介绍 1.1 PXC 简介 PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实 ...
- 你真的了解Mybatis的${}和#{}吗?是否了解应用场景?
转自:https://www.cnblogs.com/mytzq/p/9321526.html 动态sql是mybatis的主要特性之一.在mapper中定义的参数传到xml中之后,在查询之前myba ...
- office web apps server安装
1.准备服务器 准备一台windows server 2012 R2服务器,修改计算机名称加入域,如果是通过虚拟机复制导致sid冲突,可以先运行 c:\windows\system32\sysprep ...
- yzoj1657货仓选址 题解
题面: 在一条数轴上有N家商店,它们的坐标分别为 A[1]~A[N].现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品.为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的 ...
- Java 中的array数组总结之一
数组:是一个将同种类型的数据存储在存储单元中. 可以用三种方式声明数组: 1.数据类型 标识符[]; int mothDays[]; 2.数据类型 标识符[] = new 数据类型[大小]; int ...