EL表达式

一、EL简介

1.语法结构
${expression}
2.[]与.运算符
EL 提供.和[]两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如:
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3.变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope

二、EL隐含对象
1.与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。

例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
session.getAttribute("username") 取得username的值,
在EL中则使用下列方法
${sessionScope.username}

2.与输入有关的隐含对象

与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。

例如我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
${param.name}
${paramValues.name}

3.其他隐含对象

cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。

header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。

initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}来取得名称为userid

pageContext
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${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 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息

三、EL运算符
1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
最常用的表达式:

为空判断:${empty param.name}

三元运算:${A?B:C}

算数运算:${A*(B+C)}

四、EL函数(functions)。
语法:ns:function( arg1, arg2, arg3 …. argN)
其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一置

1 EL表达式用${}表示,可用在所有的HTML和JSP标签中 作用是代替JSP页面中复杂的JAVA代码.
2 EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}. ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话范围内的变量.applicationScope表示应用范围的变量.
3 <%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言.
4 EL语言可显示 逻辑表达式如${true and false}结果是false 关系表达式如${5>6} 结果是false 算术表达式如 ${5+5} 结果是10
5 EL中的变量搜索范围是:page request session application 点运算符(.)和"[ ]"都是表示获取变量的值.区别是[ ]可以显示非词类的变量
${uplist[0].lzid == zulist.zname?'selected':'' }

转载于:https://www.cnblogs.com/yangzhilong/p/3708716.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作Geek风格的投影片

做投影片用什么&#xff1f;如果你的回答是用PowerPoint&#xff0c;有没有感觉弱爆了&#xff1f;好吧&#xff0c;也许你会说用开源的替代&#xff0c;比如openOffice/Libreoffice。当然其实本质都是一样的&#xff0c;那就是PPT&#xff01;从今天开始不要再说、再用 PPT这三…

Activity之launchMode:singleTop,singleTask与singleInstance

相关内容&#xff0c;可以参见官方网址&#xff1a; http://developer.android.com/guide/components/tasks-and-back-stack.html 如图所示&#xff0c;如果ABC三个Activity的launchMode都是standard&#xff0c;那么按照图示顺序调用后&#xff0c;堆栈为ABCBB&#xff1b; …

傅立叶变换是如何改变我们生活的? ——四个角度告诉你答案

全世界只有3.14 % 的人关注了爆炸吧知识引子&#xff1a;尽管没有微积分那样如雷贯耳的名声&#xff0c;也没有相对论那般独辟蹊径的创新&#xff0c;傅立叶变换却悄悄地潜藏在我们生活中的方方面面&#xff0c;默默地改变着这个世界。对于工科出身的读者而言&#xff0c;傅立叶…

Win11新版右键菜单用不惯?一键切换回Win10经典版!

在 Windows 11 操作系统中&#xff0c;微软对文件资源管理器和应用程序的上下文菜单&#xff08;Context Menu&#xff0c;俗称“右键菜单”&#xff09;进行了现代化改造。Windows 11 新版右键菜单更加简约&#xff0c;并且融入圆角设计&#xff0c;将常用的命令剪切、复制、粘…

Careercup - Google面试题 - 4877486110277632

2014-05-08 05:16 题目链接 原题&#xff1a; Given a circle with N defined points and a point M outside the circle, find the point that is closest to M among the set of N. O(LogN) 题目&#xff1a;给定一个圆上的N个点&#xff0c;和一个在这个圆外部的点。请找出这…

Android之adb shell dumpsys activity获取task里面的所有actitiy

android 如何在开启一个activity的时候清除所有前面的Activity intent intent new Intent();intent.addFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(intent); 在控制台输入&#xff1a; db shell dumpsys activity获取task里面的所有activity 图片就不给了&#xff…

MySQL使用详解--根据个人学习总结

1.安装配置 2.启动mysql服务并配置 mysql> \s&#xff08;status也行&#xff09;查看当前服务器状态查看编码状态Server characterset : utf8Db characterset: utf8Client characterset: gbkConn. characterset: gbk修改&#xff1a;---进入配置文件my.ini客户端&#xff1…

送什么给女朋友最致命?

1 啊&#xff0c;原来里面有说明书&#xff08;via.豆瓣哈组&#xff0c;侵删&#xff09;▼2 网友给女朋友准备的惊喜&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 这个泰国小哥的创意真棒&#xff08;via.阿森不是妖怪&#xff0c;侵删&#xff09;▼4 老婆的…

如何修改 匿名类型 中的属性值 ?

咨询区 Leo Vo我有下面一段代码&#xff1a;var output new {NetSessionId string.Empty };foreach (var property in output.GetType().GetProperties()) {property.SetValue(output, "Test", null); }代码运行后&#xff0c;它会抛出如下异常&#xff1a;Propert…

SWF反编译神器ASV2013功能展示(下)

动作脚本菜单动作脚本-查看元件类动作脚本-编辑AS3常量池动作脚本-ASV内部ABC数据浏览器窗口菜单 选项菜单-帧视图选项 选项菜单-预览窗口选项选项菜单-时间线视图选项选项菜单-库视图选项 选项菜单-动作脚本视图选项实用工具菜单 关于对话框 转载于:https://blog.51cto.com/as…

Andorid之taskAffinity 和 FLAG_ACTIVITY_NEW_TASK

taskAffinity 和 FLAG_ACTIVITY_NEW_TASK都是和activity启动时是否需要新建一个task有关&#xff0c;我们分四种情况看一下这两个标志对启动activity的影响&#xff1a;(前提&#xff1a;从MainActivity中启动ActivityA) 1)、两个标志都不设置 2)、有FLAG_ACTIVITY_NEW_TASK …

【项目 报错】 项目启动,内存溢出 可能出现的各种报错

内存溢出可能有如下的错误&#xff1a; 错误1&#xff1a; java.lang.OutOfMemoryError: PermGen space 错误2&#xff1a; Exception in thread "http-apr-8080-exec-2" 出现如上的错误&#xff0c;解决方法如下&#xff1a; 1.双击Tomcat 2.点击open launch config…

杨中科的.NET 6新书的出版进度汇报

各位朋友好&#xff0c;我有3个月没发公众号了&#xff0c;今天打扰大家一下&#xff0c;不好意思。最近这3个月&#xff0c;我在忙着给我的.NET 6新书收尾&#xff0c;并且在.NET 6正式版发布后&#xff0c;我把书中用.NET 6 预览版编写的内容在.NET 6正式版中又验证了一遍&am…

2021,如何找到适合自己的圈子?

全世界只有3.14 % 的人关注了爆炸吧知识蔡康永分享过这样一段话&#xff1a;“小S的个性本身就是很乐天&#xff0c;很有活力&#xff0c;她这个朋友让我觉得活着是一件很值得、很舒服、很有趣的事。而有的人会让我觉得活着很没劲&#xff0c;碰到他会把我的能量都吸走”。你和…

Android之用Intent.FLAG_ACTIVITY_CLEAR_TOP解决界面重复拉起问题

今天遇到了一个问题: 就是界面在服务拉起来用的Intent.FLAG_ACTIVITY_NEW_TASK导致登录界面拉起很多次,登录还要登录,主要是之前的activity没有关闭 用it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP)解决。 A - B - C 当 B - A - B 跳转的时…

抓图实例

//调用动态链接库gdi32.dll[ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]private static extern bool BitBlt (IntPtr hdcDest , //目标设备的句柄int nXDest , // 目标对象的左上角的X坐标int nYDest , // 目标对象的左上角的X坐标int nW…

代码Review发现问题

FrmMain.cs中存在问题 1. int i0 设定为了全局常量且未在类顶部&#xff0c;出现问题时不好查找 i 属于常用临时变量&#xff0c;设定全局变量容易引起混乱 2.定义的全局变量但仅在一处方法中使用&#xff0c;定义全局变量过多 3.变量名及控件名等意义不明确又缺少注释&#xf…

I/O多路转接之poll——基于TCP协议

1. 函数a. 参数&#xff1a;&#xff08;1&#xff09;fds:是一个struct pollfd结构类型的指针&#xff0c;指向用于存放需要检测状态的Socket描述符&#xff1b;每当调用这个函数之后&#xff0c;系统不会清空这个数组&#xff0c;操作起来比较方便&#xff1b;特别是对于sock…

Android之 FLAG_ACTIVITY_CLEAR_TASK

FLAG_ACTIVITY_CLEAR_TASK :如果在调用Context.startActivity时传递这个标记&#xff0c;将会导致任何用来放置该activity的已经存在的task里面的已经存在 的activity先清空&#xff0c;然后该activity再在该task中启动&#xff0c;也就是说&#xff0c;这个新启动的activity变…