Jsp中EL表达式的使用
以下来看看一个样例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String a=request.getParameter("a");
String b=request.getParameter("b");
out.println("a+b="+(Integer.parseInt(a)+Integer.parseInt(b)));
%>
</body>
</html>
以下用EL来写:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
${param.a}+${param.b}=${param.a+param.b}
</body>
</html>
代码相对原本少了非常多,并且非常明了。
2、JSP EL 表达式用于以下情形
3、基本的语法格式
${ EL Expression}
再来看个样例
EL的语法非常easy。他最大的特点就是使用上非常方便
例:
${sessionScope.user.sex}
全部EL都是以 ${ 为起始、以} 为结尾的。
上述EL范例的意思是:从Session取得用户的性别。假设使用之前JSP代码的写法例如以下:
<% User user = (User)session.getAttribute("user");
String sex = user.getSex( ); %>
两者相比較之下,能够发现EL的语法比传统JSP代码更为方便、简洁。
EL提供 . 和 [ ] 两种运算符来存取数据,[ ]能够訪问集合或者是数组的元素、Bean的属性。下列两者所代表的意思是一样的。可是须要保证要取得对象的那个的属性有对应的setXxx()和getXxx()方法才行。
例:
${sessionScope.user.sex}
等于
${sessionScope.user["sex"]}
. 和 [ ] 也能够同一时候混合使用,例如以下:
${sessionScope.shoppingCart[0].price}
返回结果为shoppingCart中第一项物品的价格。
4、“.”与”[ ]”的同样点和区别
5、操作符
EL的算术运算符和Java中的运算符的大致同样。优先级也同样。
注意:'+' 运算符不会连接字符串了,他仅仅用于加法运算。
EL关系运算符有以下六个运算符
关系运算符 说明 范例 结果
= = 或 eq | 等于 |${ 5 = = 5 } 或 ${ 5 eq 5 } | true
!= 或 ne | 不等于 |${ 5 != 5 } 或 ${ 5 ne 5 } | false
< 或 lt | 小于 |${ 3 < 5 }或 ${ 3 lt 5 } | true
> 或 gt | 大于 |${ 3 > 5 }或 ${ 3 gt 5 } | false
<= 或 le | 小于等于 |${ 3 <= 5 }或 ${ 3 le 5 } | true
>= 或 ge | 大于等于 |${ 3 >= 5 }或 ${ 3 ge 5 } | false
6、集合訪问
${} //如request.getAttribute(“name”);
7、隐式对象
JSP 表达式语言定义了一组隐式对象,当中很多对象在 JSP scriplet 和表达式中可用:
此外,还提供几个隐式对象,同意对以下对象进行简易訪问:
术语 | 定义 |
---|---|
param |
将请求參数名称映射到单个字符串參数值(通过调用 ServletRequest.getParameter (String name) 获得)。 getParameter (String) 方法返回带有特定名称的參数。表达式 $(param.name) 相当于 request.getParameter (name)。 |
paramValues |
将请求參数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。 它与 param 隐式对象非常相似。但它检索一个字符串数组而不是单个值。 表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)。 |
header |
将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name) 获得)。 表达式 ${header.name} 相当于 request.getHeader(name)。 |
headerValues |
将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常相似。表达式 ${headerValues.name} 相当于 request.getHeaderValues(name)。 |
cookie | 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求能够获得一个或多个 cookie。
表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值。假设请求包括多个同名的 cookie,则应该使用 ${headerValues.name} 表达式。 |
initParam | 将上下文初始化參数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。 |
除了上述两种类型的隐式对象之外,还有些对象同意訪问多种范围的变量,如 Web 上下文、会话、请求、页面:
术语 | 定义 |
---|---|
pageScope |
将页面范围的变量名称映射到其值。比如,EL 表达式能够使用 ${pageScope.objectName} 訪问一个 JSP 中页面范围的对象,还能够使用 ${pageScope.objectName.attributeName} 訪问对象的属性。 |
requestScope |
将请求范围的变量名称映射到其值。该对象同意訪问请求对象的属性。比如,EL 表达式能够使用 ${requestScope.objectName} 訪问一个 JSP 请求范围的对象,还能够使用 ${requestScope.objectName.attributeName} 訪问对象的属性。 |
sessionScope |
将会话范围的变量名称映射到其值。该对象同意訪问会话对象的属性。比如: $sessionScope.name} |
applicationScope |
将应用程序范围的变量名称映射到其值。 该隐式对象同意訪问应用程序范围的对象 |
特别说明:
cookie对象
所谓的cookie是一个小小的文本文件。它是以key、value的方式将SessionTracking的内容记录在这个文本文件内,这个文本文件通常存在于浏览器的暂存区内。
JSTL并没有提供设定cookie的动作。由于这个动作通常都 是后端开发人员必须去做的事情,而不是交给前端的开发人员。
假设我们在cookie中设定一个名称为userCountry的值。那么能够使 用${cookie.userCountry}来取得它。
header和headerValues(请求报头对象)
header储存用户浏览器和服务端用来沟通的数据。当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,比如:用户浏览器的版本号、用户计算机所设定的区域等其它相关数据。
假设要取得用户浏览器的版本号。即${header["User-Agent"]}。另外在非常少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues来取得这些值。
注意:由于User-Agent中包括“-”这个特殊字符,所以必须使用“[]”。而不能写成${header.User-Agent}。
initParam
就像其它属性一样。我们能够自行设定web应用的环境參数(Context),当我们想取得这些參数时,能够使用initParam隐含对象去取得它。比如:当我们在web.xml中设定例如以下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<context-param>
<param-name>userid</param-name>
<param-value>mike</param-value>
</context-param>
</web-app>
那么我们就能够直接使用 ${initParam.userid}来取得名称为userid,其值为mike的參数。
以下是之前的做法:String userid =(String)application.getInitParameter("userid");
pageContext对象
我们能够使用 ${pageContext}来取得其它有关用户要求或页面的具体信息。
以下列出了几个比較经常使用的部分。
Expression 说 明
${pageContext.request} |取得请求对象
${pageContext.session} |取得session对象
${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} |取得username称
${pageContext.request.remoteAddr } |取得用户的IP地址
${pageContext.session.new} |推断session是否为新的,所谓新的session,表示刚由 server产生而client尚未使用
${pageContext.session.id} |取得session的ID
${pageContext.servletContext.serverInfo}|取得主机端的服务信息
8、特别强调
1、注意当表达式依据名称引用这些对象之中的一个时。返回的是对应的对象而不是对应的属性。比如:即使现有的 pageContext 属性包括某些其它值。${pageContext} 也返回 PageContext 对象。
2、 注意 <%@ pageisELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
Jsp中EL表达式的使用的更多相关文章
- jsp中EL表达式不起作用的问题
jsp中EL表达式不起作用的问题 进行springmvc的@ExceptioinHandler调试,竟然是el表达式的问题, 学习了:http://blog.csdn.net/wolf_soul/ar ...
- jsp中/el表达式中将后台传来的时间戳格式化为年月日时分秒
sp中/el表达式中将后台传来的时间戳格式化为年月日时分秒1.引入相关标签库 <%@taglib prefix="c" uri="http://java.sun.c ...
- jsp中 EL表达式 ${}
原文位置:https://zhidao.baidu.com/question/711232806155434565.html jsp标签中的 ${表达式}用来输出或者计算一个表达式的内容,比如${3+ ...
- JSP 中EL表达式用法详解
EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...
- JSP中EL表达式取值问题记录(已解决)
***************************2015-10-28 22:21************************* 问题描述如下: 在当前的jsp页面已经有了如下代码: < ...
- jsp中EL表达式不起作用的问题1
问题:在jsp页面中使用el表达式取值,取不到值,但是使用jsp中嵌套java代码可以取到值,对应代码如下: 解决: 只要在 jsp中 头文件中写上 : <%@page isELIgnored= ...
- 【转载】JSP 中EL表达式用法详解
EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...
- JSP中EL表达式不能使用的问题
在JSP2.0中,增加了EL语言,可以通过EL语言,可以通过EL语言,实现获取数据,进一步将scriptlet 代码从JSP页面中分离出来.EL语言给大家带来了方便,但有时,也会遇到EL表达式不能显示 ...
- [转]JSP中EL表达式三元运算符的使用
原文地址:http://www.guance.com/469.html Java中的三元运算符为:条件?条件为true值:条件为false的值EL也有一样的运算符,用EL的三元运算符有时可以代替c:c ...
随机推荐
- SVN服务器搭建 内网可用外网不可用的问题
检查1:内网端口映射到了外网端口,这样外网才能够访问到 映射的方式有两种: 1.通过路由器的虚拟服务器功能,网上一搜一大把. 2.将路由器的DMZ功能开启,并把DMZ主机设置为目标计算机. 检查2:S ...
- C#模拟百度登录并到指定网站评论回帖(四)
基本的实现功能前面已经全部讲完,基本上可以复制黏贴完成登录百度的过程了 今天的这一贴就说说怎么获取百度的验证码 内容回顾:还记得前面第一贴说的如果登录发生异常,百度会发回2个值吗?是的,就是codeT ...
- [ NOI 2001 ] 方程的解数
\(\\\) \(Description\) 已知一个 \(N\) 元高次方程: \[ k_1x_1^{p_1}+k_2x_2^{p_2}+...+k_nx_n^{p_n}=0 \] 要求所有的 \( ...
- 01按照官方步骤编译NanoPiM1Plus的Android
01按照官方步骤编译NanoPiM1Plus的Android 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/6 10:58 版本:V1.0 ...
- Angular——$http
基本介绍 $http用于向服务端发起异步请求,同时还支持多种快捷方式如$http.get().$http.post().$http.jsonp.$hhtp也是属于内置服务的一种,这里特意提出来写一篇用 ...
- 服务器主机&软件性能测试自定标准
PS:最近一直致力于代理ip的服务搭建,其中就要根据客户群体的不同来测试搭建环境和搭建软件的性能,但是不同的客户群体所处的环境和使用的软件是不同的,而业内又没有一套完整的评估方法.在忽略网络本身来讲, ...
- CAD使用GetxDataString读数据(网页版)
主要用到函数说明: MxDrawEntity::GetxDataString2 读取一个字符扩展数据,详细说明如下: 参数 说明 [in] LONG lItem 该值所在位置 [out, retval ...
- CAD删除组(网页版)
主要用到函数说明: _DMxDrawX::DeleteGroup 根据组名,删除组.详细说明如下: 参数 说明 BSTR pszName 组名 js代码实现如下: 1 2 3 4 5 6 7 8 9 ...
- CAD在网页中如何实现嵌套打印?
当用户需要打印两个控件的图纸时,可以采用嵌套打印实现.点击此处在线演示. 实现嵌套打印功能,首先将两个控件放入网页中,js代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- ThinkPHP---thinkphp文件加载
[一]文件加载在ThinkPHP里提供了三种方式 实际开发里,文件加载方式一般以第一种为主(通过函数库形式自动加载,此时我们仅仅需要定义文件和函数) (1)函数库形式加载 函数库分3种级别,系统函数库 ...