博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(七)JSP之EL表达式
阅读量:5806 次
发布时间:2019-06-18

本文共 3516 字,大约阅读时间需要 11 分钟。

hot3.png

一、简介

最初定义在JSTL1.0规范中,直到JSP2.0之后,EL表达式才正式成为JSP规范中的一部分。

EL表达式定义了一系列的隐式对象和操作符,使得开发人员能够更方便地访问页面上下文,以及不同作用域内的对象。

EL语法如下:

${El表达式}

在JSP页面中我们可以禁用EL表达式,需要配置page指令的isELIgnored属性,属性值若为true则支持EL表达式,若为false则禁用表达式,默认情况下是支持EL表达式的。

二、EL表达式-隐式对象

隐式对象 说明
pageContext 当前页面的pageContext对象
pageScope 表示page 作用域
requestScope 表示request 作用域
sessionScope 表示session 作用域
applicationScope 表示application 作用域
param 接收Request 对象的参数(只有一个值)
paramValues 接收Request对象的参数(拥有多个值)
header HTTP 信息头
headerValues HTTP 信息头值
cookie Cookie值
initParam 取得配置的初始化参数

1 . 作用域访问对象

pageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。

实例1

${pageScope.name}

如果EL表达式中不指定查找范围,例如:

${name}

Web容器将会自动按照page >> request >> session >> application的顺序查找

2 . 参数访问对象

param和paramValues对象用来访问页面输入参数,通过调用request.getParameter方法和request.getParameterValues方法,可以得到用户的请求参数。

param对象用于得到请求中单一名称的参数;paramValue对象用于得到请求中的多个值

实例1 ELSubmitParam.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>			
Insert title here
姓名:
年龄:

实例2 ELParam.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8" %><%@ page isELIgnored="false"%>			
Insert title here <% request.setCharacterEncoding("UTF-8"); %>

用户提交的参数

姓名 : ${param.user }

年龄 : ${param.ages }

运动 : ${paramValues.sport[0] } ${paramValues.sport[1] } ${paramValues.sport[2] }

3 . 其他隐式对象

(1)pageContext对象

pageContext对象是JSP中pageContext对象的引用。

实例1

${pageContext.request.property}取得请求的参数字符串${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} 取得主机端的服务信息

(2)header和headerValues对象

用来读取请求的信息头 。

实例1

${header["UserAgent"]} 获取浏览器的版本信息

(3)cookie对象

读取用户请求中的cookie参数

实例1

${cookie.JSESSIONID.value }

(4)initParam对象

读取设置在web.xml中配置的相关参数。等价于调用application.getInitParameter()或 servletContext.getInitParameter()方法。

三、EL表达式-基本操作符

EL表达式支持大部分Java所提供的算术和逻辑操作符:

. 访问一个Bean属性或者一个映射条目
[] 访问一个数组或者链表的元素
( ) 组织一个子表达式以改变优先级
+
- 减或负
*
/ or div
% or mod 取模
== or eq 测试是否相等
!= or ne 测试是否不等
< or lt 测试是否小于
> or gt 测试是否大于
<= or le 测试是否小于等于
>= or ge 测试是否大于等于
&& or and 测试逻辑与
|| or or 测试逻辑或
! or not 测试取反
empty 测试是否空值

注意:

1 . EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。

2.   empty 判断EL表达式中的表达式是否为空.

实例1

${empty sessionScope.user}

四、EL表达式-函数

EL表达式语法允许开发人员开发并调用自定义函数,也可以调用 JSTL函数(本篇笔记中不作详细介绍)。

EL函数必须是一个public修饰的类,且EL表达式调用的方法必须是public修饰的且为静态方法。

EL自定义hsh开发步骤如下:

1 .  编写调用自定义函数的类,编写类中具体实现的静态方法

实例1

package cn.iborder.elfn;public class ELfn {		public static String elfn1(String name){        return "EL自定义函数";    }}

2 .  建立TLD文件,定义表达式函数

实例1

1.0
el
elfn
cn.iborder.elfn.ELfn
java.lang.String elfn()

3 .  在JSP页面内导入并且使用

实例1

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ page isELIgnored="false" %><%@ taglib prefix="el" uri="/WEB-INF/elfn.tld" %>			
自定义EL函数

${el:elfn() }

 

转载于:https://my.oschina.net/u/2321708/blog/742438

你可能感兴趣的文章
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
SQL Server数据库概述
查看>>
Linux 目录结构及内容详解
查看>>
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>
Oracle命令导入dmp文件
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
Http、TCP/IP协议与Socket之间的区别(转载)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
vrpie在Visio Studio 中无法调试的问题
查看>>
第六课:数据库的基本工具
查看>>
关于二叉树重构的思索
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
skynet实践(8)-接入websocket
查看>>
系统版本判断
查看>>
关于Css选择器优先级
查看>>