目录

前言

EL获取数据(从四大域中获取属性)

1、如果没有使用EL的内置对象,则查找数据顺序是依次按照由小到大范围从四大域中查找指定名称的属性值

2、EL中的内置对象

1、域属性相关(4个)

2、其他重要内置对象(4个)

3、EL访问Bean的属性

4、EL中的运算符(empty)

5、EL总结

Jstl标签

1.JSTL五大子库

2.下载与导入

3.JSTL核心库的使用

标签

标签

总结


前言

使用El表达式+jstl标签可以把java代码和jsp代码分开,这样界面更加简洁,同时代码出错时不会出现错误信息,能给用户更好的体验。


一、EL表达式介绍

  • Expression Language表达式语言
  • 是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)
  • 在JSP2.0开始引入概念

语法格式

在JSP页面的任何静态部分均可通过:${expression}来获取到指定表达式的值

EL获取数据(从四大域中获取属性)

1、如果没有使用EL的内置对象,则查找数据顺序是依次按照由小到大范围从四大域中查找指定名称的属性值

EL只能从四大域中获取属性

    <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!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=UTF-8"><title>Insert title here</title></head><body><%pageContext.setAttribute("name", "linjie");request.setAttribute("name", "lucy");session.setAttribute("name", "king");application.setAttribute("name", "bilibili");%>name=${name }</body></html>

没有使用EL内置对象时查找顺序是由小到大,所以最先显示的是pageContext域中的值

使用EL内置对象,从指定域中获取数据,提高了查找效率,使用applicationScope即可指定application域中的name输出,当然其他域也是类似,下文会说这四大域属性相关的内置对象

2、EL中的内置对象

EL有11个内置对象,这里主要讲域属性相关的4个和其他4个
EL的11个内置对象,除了pageContext以外,其他10个内置对象的类型都是java.util.Map类型

1、域属性相关(4个)

pageScope:从page范围域属性空间中查找指定的key
requestScope:从request范围域属性空间中查找指定的key
sessionScope:从session范围域属性空间中查找指定的key
applicationScope:从application范围域属性空间中查找指定的key

2、其他重要内置对象(4个)

1、pageContext
该pageContext与JSP内置对象pageContext是同一个对象。通过该对象,可以获取到request、response、session、servletContext、servletConfig等对象注意:这些对象在EL里不是内置对象,这些对象只能通过pageContext获取

在EL中直接${pageContext.request}即可获取request对象,其底层调用的是pageContext.getRequest()方法。同理,也可以通过类似方法获取其他对象
重点:其中最常用的:${pageContext.request.contextPath },代表web应用下的根,可以看出下面action中的路径可读性更强了

2、param(获取请求中的指定参数)

其底层实际调用request.getParameter()

3、paramValues

获取请求中的指定参数的所以值,其底层实际调用request.getParameterValues()

4、initParam

获取初始化参数,其底层调用的是ServletContext.getInitParameter()

3、EL访问Bean的属性

1、什么是java Bean
JavaBean是公共Java类,但是为了编辑工具识别需要满足至少三个条件有一个public默认构造器(例如无参构造器)属性使用public 的get,set方法访问,也就是说设置成private同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成,public String getName(){},N大写。需要序列化。这个是框架,工具跨平台反映状态必须的
2、EL访问Bean属性
EL可以通过${key.属性}的方式获取到指定值,其底层实际调用的是该对象的相应属性的get方法

4、EL中的运算符(empty)

1、先说说几个常用运算符
算术运算符:+、-、*、/、%(不支持++、–)
关系运算符:==、!=、>、>=、<、<=
逻辑运算符:!、&&、||、not、and、or
条件运算符:?:
取值运算符:[]、点号
2、empty运算符
用法为${empty 变量},结果为布尔值

5、EL总结

EL表达式不能出现在Java代码块、表达式块等JSP动态代码部分
EL只能从四大域属性空间中获取数据(pageContext、request、session、application)
EL不会抛出空指针异常,只会不显示
EL不会抛出数组越界异常,只会不显示
EL不具有对字符串进行处理的能力(可以使用JSTL的EL或者自定义EL函数)

Jstl标签

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标签库有5个子库,但随着发展,目前常使用的是他的核心库

1.JSTL五大子库

Core (核心库)  标签库的URI:http://java.sun.com/jsp/jstl/core  常用前缀:cI18N(国际化)   标签库的URI:http://java.sun.com/jsp/jstl/fmt 常用前缀:fmtSQL               标签库的URI:http://java.sun.com/jsp/jstl/sql  常用前缀:sqlXML             标签库的URI:http://java.sun.com/jsp/jstl/xml 常用前缀:xFunctions   标签库的URI:http://java.sun.com/jsp/jstl/functions  常用前缀:fn 

2.下载与导入

下载:Apache的网站下载JSTL的JAR包。进入“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”网址下载 JSTL的压缩包。jakarta-taglibs-standard-1.1.2.zip

    导入:解压后在lib目录下可以看到两个JAR文件,分别为jstl.jar和standard.jar。其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD),将两个文件导入项目中。

3.JSTL核心库的使用

<c:if>标签         

1. 语法格式:

                       <c:if  test="xxx"   [var="xxx"]   [scope="{page|request|session|application}"]  >

                                        执行体

                       </c:if>

           2. 标签属性讲解:

                      test属性:用于设置逻辑表达式,当逻辑表达式为true时执行执行体

                      var属性:用于指定逻辑表达式中变量的名字

                       scope属性:用于指定var变量的作用范围,默认值是page。

           3.用法案例: 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="T277" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body><!-- 定义变量a: 赋值777 --><T277:set var="a" value="777"></T277:set><T277:set var="b" value="${100+1 }" ></T277:set><!-- 打印变量 --><T277:out value="${a }"></T277:out><T277:out value="${b }"></T277:out><!-- 删除变量 --><T277:remove var="a"/>a:<T277:out value="${a }"></T277:out>用户:<T277:out value="${u }"></T277:out><!-- if --><T277:if test="${true }">条件成立</T277:if><T277:if test="${false }">条件不成立</T277:if><!-- 判断用户是否登录 --><T277:if test="${empty u }"><h1>用户为空</h1></T277:if></body>
</html>

<c:forEach>标签  

 两种语法格式:

                1.迭代集合对象:

                                <c:forEach items="xxx"   [var="xxx"]   [varStatus="xxx"]   [begin="xxx"]   [end="xxx"]   [step="xxx"]>
                                             循环体.....
                                </c:forEach>

                 2.迭代数组:

                                 <c:forEach   begin="xxx"  end="xxx"   [var="xxx"]   [varStatus="xxx"]   [step="xxx"]>
                                              循环体....
                                 </c:forEach>

    标签属性讲解:

                1.items属性用于指定将要迭代的对象

                2.var属性用于指  将当前迭代到的元素保存到page域中的名称(可以通过${xxx}获得对象)

                3.varStatus属性用于指定当前迭代状态信息的对象保存到page域中的名称

                         varStatus属性可以获取以下信息:

                                       count:表示元素在集合中的序号,从1开始

                                       index:表示当前元素在集合中的索引,从0开始

                                       first:表示当前是否为集合中的第一个元素

                                       last:表示当前元素是否为集合中最后一个元素         

                 4.begin属性用于指定从集合中的第几个元素开始迭代,begin的索引值从0开始              

                 5.step属性用于指定迭代的步长,即迭代的增长因子

               3.用法案例:

<!-- for循环 -->
<T277:forEach begin="1" step="10" end="100" var="i">${i }<br>
</T277:forEach>
<hr>
<!-- 遍历集合 -->
<T277:forEach items="${ulist }" var="user">${user.uname }____${user.upwd }<br>
</T277:forEach>

总结

 在前端JSP页面中会经常用到EL表达式,和JSTL标签库,EL表达式使得取出request域和其它域中数据变得极其方便,JSTL免去了<%=    %>的繁琐操作。我介绍的JSTL的两个标签是核心库中最常用的两个,它们两个标签可以解决大多数问题。当然JSTL标签库中的标签远不止这些,有兴趣的小伙伴可以深入了解。

El表达式+jstl标签相关推荐

  1. EL 表达式 JSTL 标签库

    EL 表达式 & JSTL 标签库 1.什么是EL表达式?EL表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的什么作用:EL 表达式 ...

  2. javaweb(09) EL表达式JSTL标签库(jsp相关,了解)

    javaweb(09) EL表达式&JSTL标签库(jsp相关,了解) EL表达式 简介和基本使用 EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的 ...

  3. Web.17.EL表达式JSTL标签的使用

    本节主要是上节课的加精 目录 本节主要是上节课的加精 一.购物车主页面java代码的分离 二.使用分页面板展示购物车所有商品的主页面 一.购物车主页面java代码的分离 注意: 当一个jsp文件同时存 ...

  4. EL表达式 JSTL标签库

    EL表达式 什么是EL表达式? 作用? 全称是Expression Langue 是表达式语言 EL表达式的作用主要是替代jsp页面中的表达式脚本在jsp页面中方进行输出,因为EL表达式在输出数据的时 ...

  5. el表达式,JSTL标签库

    1.el表达式    表达式语言(Expression Language,简称EL) EL主要作用:       获取数据:       EL表达式主要用于替换JSP页面中的脚本表达式,检索reque ...

  6. JSTL/EL表达式/Struts2标签/OGNL表达式

    文章目录 JSTL + EL表达式 Struts 标签 + OGNL表达式 JSTL + EL表达式 JSTL 只能用在 JSP 文件中,不可以在 XML 和 HTML 文件中使用,不可以用在 JS ...

  7. EL表达式+JSTL,forEach的两种用法

    <%@ page language="java" isELIgnored="false"contentType="text/html; char ...

  8. EL表达式 JSTL(详解)

    相关JSTL.EL博客收集如下: JSTL 标签大全详解:http://blog.csdn.net/qq_25827845/article/details/53311722 EL表达式详解:http: ...

  9. 34、JAVA_WEB开发基础之EL表达式和标签

    EL表达式是什么 一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名} 使用方式 取出request范围内的参数:{pageContext.request.username} ...

最新文章

  1. 【js】v-for 的一些用法 :class {{index}}
  2. mysql列目录_mysql列直接存储图片路径
  3. Manual手册的正确姿势
  4. 搞技术多少要有点危机意识,切不可温水煮青蛙
  5. 线性表-----队列
  6. java四种内部类区别_浅谈Java中的四种内部类
  7. oracle 触发器更新视图,关于UPDATE触发器的详细介绍
  8. poj 2773(容斥原理)
  9. 别再透支你的社交信用了
  10. C# Get请求携带body
  11. scara机器人dh参数表_7. 机器人正运动学—连杆坐标系与DH参数
  12. 微信小程序打开另一个小程序
  13. os系统 测试网络软件,iStumbler For Mac v103.43 WiFi 信号强度检测工具 _ 黑苹果乐园...
  14. DCT变换的FPGA实现
  15. vue 会议室日历预约组件
  16. 2011-07-13 wince上面plg插件生成
  17. Chrome插件扩展程序的默认安装目录
  18. 译文:基于动态补偿的微型压电压力传感器冲击波高精度测试
  19. 使用KMS激活软件导致浏览器呗篡改解决办法
  20. SBUS协议(20200210)

热门文章

  1. dnsmasq mysql_DNSmasq介绍
  2. HTML5+CSS3从入门到精通书籍配套源码
  3. HTML基本元素案例笔记回顾
  4. 【Helpdesk】技巧汇总(转载)
  5. 经久不衰的远古时代产物——WebService。
  6. 我的 2019:找工作 | 写作 | 挣钱,文末送年终福利
  7. MathJax初体验
  8. 使用Orion测试ASM磁盘组
  9. 我想要你为我披上白色的婚纱
  10. 一个vue小demo购物车