EL表达式(目的简化代码)
来源:互联网 发布:密码学 知乎 编辑:程序博客网 时间:2024/05/16 09:30
- EL表达式目的简化代码
- 一EL表达式的用途
- 二EL概述
- 1EL的基本语法
- 2EL的特点
- 三禁用EL表达式三种
- 1通过符号
- 2使用page指令
- 3在Webxml中配置
- 四保留的关键字
- 五EL的运算
- 1使用EL访问数据
- 1访问JavaBean对象userInfo的id属性
- 2数组元素的获取
- 例子如下两个
- 通过EL表达式输出数组的全部元素
- List集合元素的获取
- 2算术运算
- 3逻辑关系运算
- 1关系运算
- 2逻辑运算
- 4条件运算
- 1使用EL访问数据
- 六用EL语句判断是否为空
- 七EL的隐含对象
- 1页面上下文对象pageContext
- 1访问request对象
- 2response对象
- 3out对象
- 4session对象
- 5exception对象
- 6page对象
- 7servletContext对象获取servlet上下文路径
- 2访问作用域范围的隐含对象
- 1pageScope隐含对象
- 例子
- 2requestScope隐含对象
- 3sessionScope隐含对象
- 4applicationScope隐含对象
- 1pageScope隐含对象
- 3访问环境信息的隐含对象
- 1param对象
- 2paramValues对象
- 3headerValues和header对象
- 4initParam对象
- 5cookie对象
- 1页面上下文对象pageContext
- 八定义和使用EL函数
- 定义和使用函数
- 九例子
- 1用EL判断登入密码和用户名是否为空
- 2实现通过EL获取用户的注册信息名称密码E-Mail地址性别爱好和备注
- EL表达式目的简化代码
EL表达式(目的简化代码)
EL(Expression Language) 目的:为了使JSP写起来更加简单。
基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。
一、EL表达式的用途
- 获取数据:(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
- 执行运算:基本的关系运算、逻辑运算和算术运算
- 获取web开发的内置对象
- 调用Java方法:允许用户开发自定义EL函数,在JSP页面中通过EL表达式调用Java类的方法。
二、EL概述
1、EL的基本语法
EL表达式语法,以“${”开头以“}”结尾
形如:${ expression }
例如:${“学习EL表达式”} ——>输出为“学习EL表达式”
2、EL的特点
- EL可以和JSTL、JavaScript语句结合使用
- 在EL中可以访问JSP的作用域(request、session、application、page)
- 在EL中可以执行运算操作
- EL可以访问JavaBean中的属性以及嵌套属性
三、禁用EL表达式(三种)
1、通过“\”符号
例如:\${expression}
2、使用page指令
<%@page isELIgnored="布尔值"%>
- isELIgnored=”true”:禁用EL表达式
- isELIgnored=”flase”:解析EL表达式
3、在Web.xml中配置
<jsp-config> <jsp-property> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> //值为true表示禁用EL,值为false使用EL </jsp-property> </jsp-config>
四、保留的关键字
如果在EL中使用保留的关键字的时候会出错,所以为变量命名时不要使用保留关键字命名
五、EL的运算
1、使用EL访问数据
通过“[ ]”,“.”两个运算符来访问数据
(1)访问JavaBean对象userInfo的id属性
${userInfo.id}${userInfo[id]}//两个一样
(2)数组元素的获取
获取request范围中的数组book中第一个元素
${book[0]}
例子如下两个:
通过EL表达式输出数组的全部元素
<%//定义一维数组String[] arr={"Java Web开发典型模块大全","Java范例完全自学手册","JSP项目开发全程实录"};//将数组保存到request对象中request.setAttribute("book",arr); %><%//获取保存到request范围内的变量String[] arr1=(String[])request.getAttribute("book"); //通过循环和EL输出一维数组的内容for(int i=0;i<arr1.length;i++){ request.setAttribute("requestI",i);%> ${requestI}:${book[requestI]}<br> <!-- 输出数组中第i个元素 --><%} %>
List集合元素的获取
<%List<String> list = new ArrayList<String>(); //声明一个List集合的对象list.add("饼干");//添加第1个元素list.add("牛奶");//添加第2个元素list.add("果冻");//添加第3个元素session.setAttribute("goodsList",list); //将List集合保存到session对象中%><%List<String> list1=(List<String>)session.getAttribute("goodsList"); //获取保存到session范围内的变量//通过循环和EL输出List集合的内容for(int i=0;i<list1.size();i++){ request.setAttribute("requestI",i); //将循环增量保存到request范围内%> ${requestI}:${goodsList[requestI]}<br> <!-- 输出集合中的第i个元素 --><%} %>
2、算术运算
3、逻辑关系运算
(1)关系运算
(2)逻辑运算
4、条件运算
${条件表达式 ? 表达式 1:表达式 2}
表达式1:当条件为真,将要返回的值
表达式2:当条件为假,将要返回的值
六、用EL语句判断是否为空
在EL中判断对象是否为空,可以通过empty运算符实现,该运算符是一个前缀(prefix)运算符
格式:${empty expression}
<font color="red">可与条件运算符一起用</font>
七、EL的隐含对象
EL提供11个隐含对象,来获取Web应用程序中的相关数据,类似于JSP内置对象。PageContext是JavaBean对象并且属于javax.servlet.jsp.PageContext类,其他隐含对象都属于java.util.Mao类型。
隐含对象分为三种:
- 页面上下文对象
- 访问作用域范围的隐含对象
- 访问环境信息的隐含对象
1、页面上下文对象(pageContext)
(1)访问request对象
通过pageContext获取JSP内置对象的request对象
例如:
获取端口号
${pageContext.request.serverPort}
(2)response对象
(3)out对象
(4)session对象
(5)exception对象
(6)page对象
(7)servletContext对象获取servlet上下文路径
${pageContext.servletContext.contextPath}
对应的方法在JSP里面介绍
2、访问作用域范围的隐含对象
在EL中提供4个用于访问作用域范围的隐含对象,pageScope、requestScope、sessionScope、
applicationScope。4个隐含对象只能用来取得指定范围内的属性值。
(1)pageScope隐含对象
pageScope隐含对象用于返回包含page范围内的属性值集合
例子:
在com包中创建类User类
public class User { private String name = "";// 用户名 // name属性对应的set方法 public void setName(String name) { this.name = name; } // name属性对应的get方法 public String getName() { return name; }}
创建index.jsp
<body><jsp:useBean id="user" scope="page" class="com.com.User" type="com.com.User"><jsp:setProperty name="user" property="name" value="我是你获取的值"/></jsp:useBean>${pageScope.user.name}</body>
(2)requestScope隐含对象
requestScope对象用于返回包含request范围内的属性值集合,返回值为java.util.Map对象
例如:
<% request.setAttribute("userName","we are boy");%>${request.Scope.userName}
(3)sessionScope隐含对象
sessionScope隐含对象用于返回包含session范围内的属性集合,返回值为java.util.Map对象
例如:
<% session.setAttribute("userName","we are boy");%>${session.Scope.userName}
(4)applicationScope隐含对象
applicationScope对象用于返回application范围内的属性值集合,返回值为java.util.Map对象
例如:
<% application.setAttribute("userName","we are boy");%>${application.Scope.userName}
3、访问环境信息的隐含对象
在EL中,提供了6个访问环境信息的隐含对象
(1)param对象
param对象用于获取请求参数的值,应用在参数值只有一个的情况。
例如:
<input name="name" type="text">//表单输入的值${param.name}获取表单输入的值
(2)paramValues对象
如果一个请求参数名对应多个值的时候,利用paramValues可以获取多个值
例如:
<input name="favorite" type="checkbox" id="favorite" value="游泳"> 游泳 <input name="favorite" type="checkbox" id="favorite" value="旅游"> 旅游 <input name="favorite" type="checkbox" id="favorite" value="看书"> 看书 <input name="favorite" type="checkbox" id="favorite" value="唱歌"> 唱歌//提交表单后<%request.setCharacterEnconding("utf-8")%>爱好为:${paramValues.favorite[0]} ${paramValues.favorite[1]} ${paramValues.favorite[2]} ${paramValues.favorite[3]}
(3)headerValues和header对象
hearder对象用于获取HTTP请求的一个具体header的值,如果同一个header有多个值则用hearderValue
(4)initParam对象
initParam对象用于获取web应用初始化参数的值
例如:
<context-param> <param-name>book</param-name> <param-value>我们努力过</param-value> </context-param>
通过EL表达式获取值
${intParam.book}
(5)cookie对象
在EL中没有提供向cookie中保存值的方法,但是提供了访问请求设置的cookie的方法,这可以通过cookie隐含对象实现
<%Cookie cookie=new Cookie("user","获取的值")response.addCookie(cookie);%>${cookie.user.value}//获取到cookie的值
八、定义和使用EL函数
定义和使用函数
- 编写java类,用于实现自定义EL函数的具体功能
- 编写标签库描述文件,对函数声明。文件的扩展名为“.tld”,保存在WEB-INF文件夹下
在JSP页面中引用标签库,调用定义的EL函数实现功能
例子:处理字符串中的回车和换行和空格符
(1)在包com下创建ChangeShiftEnter类
package com;public class ChangeShiftEnter { public static String shiftEnter(String str) { // 定义公用的静态方法 String newStr = str.replaceAll("\r\n", "<br>"); // 替换回车换行符 newStr = newStr.replaceAll(" ", " ");// 替换空格符 return newStr; }}
(2)在WEB-INF下创建名称为Change.tld
<?xml version="1.0" encoding="UTF-8"?><taglib 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-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <uri>/Change</uri> //uri用于指定tld文件路径 <function> <name>shiftEnter</name> <function-class>com.ChangeShiftEnter</function-class>//java包 <function-signature>java.lang.String shiftEnter(java.lang.String) </function-signature> </function></taglib>
(3)创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>定义EL函数处理字符串中的回车换行符和空格符</title></head><body><form name="form1" method="post" action="deal.jsp"> <textarea name="content" cols="30" rows="5"></textarea> <br> <input type="submit" name="Button" value="提交" ></form></body></html>
(4)创建deal.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="/Change" prefix="wghfn"%>//prefix是前缀<%request.setCharacterEncoding("UTF-8"); %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>显示结果</title></head><body>内容为:<br>${wghfn:shiftEnter(param.content)}</body></html>
九、例子
1、用EL判断登入密码和用户名是否为空
2、实现通过EL获取用户的注册信息,名称、密码、E-Mail、地址、性别、爱好和备注
- EL表达式(目的简化代码)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (转)
- 表达式语言(EL)
- EL表达式(二)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- EL表达式 (详解)
- JSF表达式(EL)
- EL表达式 (详解) .
- 设置select宽度
- 剑指offer 21 包含min函数的栈
- Robot Framework+Appium案例分享四: Bluetooth测试
- mongokit 与 mongoengine 区别
- maven的讲解(pom.xml)
- EL表达式(目的简化代码)
- 国内交易平台关闭了,教你如何把Zcash(zec)兑换成人民币
- java多线程yield
- Gradle——依赖管理和多项目构建
- php的计划任务 使用crontab
- 【2-SAT】2sat问题小结
- 【网易笔试题】成对的括号
- 为人子女者
- Scala函数式程序设计原理 week3 Data and Abstraction