JSP页面中EL表达式语言的使用详解

JavaBean在JSP中的局限

获取JavaBean属性必须要实例化

强制类型转化

<%
    Employee employee = (Employee)request.getAttribute("employee");
    Computer comp = employee.getComputer();
    String manufacturer = comp.getManufacturer();
%>

如果页面编写出现逻辑错误,将会导致代码执行错误,并且JSP页面编译页面时也会产生错误

解决办法

使用EL表达式简化

什么是EL

EL即Expression Language(表达式语言)

EL的功能

替代JSP页面中的复杂代码

EL的语法

${  EL exprission }

${  bean.name } 或  ${  bean[‘name‘] }

${bean.name}实质是调用bean的getName()方法

注: 1 el通过.和[]来存取数据。  例如${applicationScope.user.userName}或者${applicationScope.user["userName"]}

2 如果存取的属性名称包含一些特殊符号,如"."或者是"-"等非字母或数字符号必须用[]

3 applicationScope.user["user-Name"]

4 如果使用变量来传入,那么也只能使用[].例如

<%String data="username";%>

${applicationScope.user[data]}

5 当然有四个隐含对象:applicationScope,sessionScope,requestScope,pageScope.与application  ,session,request,pageContext相对应.例如applicationScope用
来获取application范围的属性值

自动转换类型

EL得到某个数据时可以自动转换类型

对于类型的限制更加宽松

使用简单

相比较在JSP中嵌入Java代码,EL应用更简单

EL语法

以“${”作为开始,以“}”作为结束

直接使用变量名获取值$

${  username }

变量属性范围名称

属性范围            EL中的名称

page pageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返回Null

request requstScope

session sessionScope

application applicationScope

EL运算符

运算符”[ ]”

运算符”.”

作用

获取对象属性

获取对象集合中的数据

在Session中保存了一个(list)集合users

简单应用:输出姓名显示

<%

Map names = new HashMap();

names.put("one","LiYang");

names.put("two","WangHua");

request.setAttribute("names",names);

%>

姓名:${names.one}<br/>

姓名:${names["two"] }<br/>

EL隐式对象介绍

对象名称 说  明

pageScope 返回页面范围的变量名,这些名称已映射至相应的值

requestScope 返回请求范围的变量名,这些名称已映射至相应的值

sessionScope 返回会话范围的变量名,这些名称已映射至相应的值

applicationScope 返回应用范围内的变量,并将变量名映射至相应的值

param 返回客户端的请求参数的字符串值

paramValues 返回映射至客户端的请求参数的一组值

pageContext 提供对用户请求和页面信息的访问

时间: 2024-10-25 10:31:43

JSP页面中EL表达式语言的使用详解的相关文章

———— JSP页面用EL表达式 输出date格式 ————

JSP页面用EL表达式 输出date格式 1.头上引入标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 2.使用: <fmt:formatDate value="${proje

maven项目下jsp文件中el表达式失效问题

本来是为了写个springmvc的小demo,雏形搭建起来后想起来做成maven的好了,就重新建的maven项目,坑就从这里开始了... maven创建web项目默认使用的是web 2.3版本,web.xml文件头中也是2.3的版本..说实话之前没怎么用maven创建过项目,后来觉得maven项目看源码太方便了才更偏向于用maven的,所以这里也根本没在意..引入的javax-servlet-api 2.5的版本.然后发现jsp文件中的el表达式都原样输出了,看起来el表达式根本没解析..这就怪

activiti7 + springboot2 (十五) JSP页面使用EL表达式引起的错误解决

activiti7整合springboot2,启动服务访问有EL表达式的页面报错 java.lang.NoSuchMethodError: javax.el.ExpressionFactory.getStreamELResolver()Ljavax/el/ELResolver; 错误提示javax.el.ExpressionFactory没有getStreamELResolver方法,一般根据经验这应该是包冲突. 发现tomcat的tomcat-embed-el包javax.el.Express

JSP页面用EL表达式 输出date格式

1.头上引入标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 2.<fmt:formatDate value="${project.creatDate }" patt

SpringMVC返回数据给jsp页面(EL表达式取值)

第一种方式(通过request域) 通过request域返回字符串“resok”到success.jsp页面. @RequestMapping(value = "test") public String test( HttpServletRequest request) { request.setAttribute("res", "resok"); return "/pages/front/success.jsp"; } su

在JSP页面用EL表达式获取数据

<h4>获取域对象中的值</h4><%    request.setAttribute("name", "射雕英雄传");    application.setAttribute("name", "鹿鼎记");%>${requestScope.name } ${applicationScope.name } <h4>获取数组中的值</h4><%    Strin

jsp页面用el表达式获取枚举的code

<c:set var="D_BUSINESS" value="<%=DeptEnum.D_BUSINESS%>"/> otherType="${D_BUSINESS.code}"

JSP不支持EL表达式的解决方案

JSP不支持EL表达式的解决方案 EL的全称是Expression Language. 1.在默认情况下,Servlet 2.3 / JSP 1.2是不支持EL表达式的,而Servlet 2.4 / JSP 2.0支持. servlets 2.4这个版本的isELIgnored默认设置为false.所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意声明.如何查看Servlet / JSP的版本?打开tomcat的common/lib 目录下,有两个JAR文件:

解决JSP 不解析EL表达式

今天维护一个老项目,在jsp页面使用EL表达式获取数据的时候,没有被解析,而是原样输出了,很奇怪,查找资料验证后,得到结果,特记录如下 原因:在默认情况,Servlet 2.4 / JSP 2.0(以上)支持 EL 表达式. 解决的办法有两种: 1.修改web.xml的开头定义. 代码如下: <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http:/