分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

EL和JSTL

发布时间:2023-09-06 01:33责任编辑:沈小雨关键词:暂无标签

EL(表达式语言)

  表达式语言(Expression Language,EL)是JSP2.0中新增的功能。使用表达式语言,可以方便地访问标志位(page,request,session和application标志位)中的属性内容,可以避免出现许多的Scriptlet代码。语法如下:  

${属性名称}

  注:Scriptlet:在JSP中,Scriptlet被称为脚本小程序,所有嵌入在HTML代码中的Java程序都必须使用Scriptlet标记起来。一共有三种:

     第一种:<% %>    第二种:<%!%>   第三种:<%= %>

  EL表达式可以方便得访问对象中的属性、提交的参数或者是进行各种数学运算,EL表达式最大的特点是如果输出内容为null,则会自动使用空字符串(“”)表示。EL表达式语言可以输出4种范围中的内容,如在不同的属性范围中设置了同一个属性名称,则将按照如下顺序查找:

    page --> request --> session --> application

<%  pageContext.setAttribute(“info”,”page范围属性”);  request.setAttribute(“info”,” request范围属性”);  session.setAttribute(“info”,” session范围属性”);  application.setAttribute(“info”,” application范围属性”);%>${info}

   以上代码的运行结果是:page范围属性。

  当然要指定一个要取出属性的范围,可以添加标记

属性范围

范例

说明

page

${pageScpe.属性}

取出page范围的属性内容

request

${requestScpe.属性}

取出request范围的属性内容

session

${sessionScpe.属性}

取出session范围的属性内容

application

${applicationScpe.属性}

取出application范围的属性内容

接受请求参数

  使用表达式语言可以显示接收的请求参数,功能和request.getParameter()类似,语法如下:

    接收一个参数    ${param.参数名}

    接收一组参数    ${paramValues.参数名称}

  接收到一组参数,如果想要取出,需要分别指定下标。

  对集合的操作(Collection、Map集合中的内容)将集合保存在request范围中,使用EL表达式输出时,直接通过集合的下标即可访问。

<% ???List list = new Arraylist(); ???list.add(“a”); ???list.add(“b”); ???list.add(“c”); ???request.setAttribute(“list”,list);%>第一个元素:${list[0]}第二个元素:${list[1]}第三个元素:${list[2]}

  以上代码的运行结果是:  

    第一个元素:a

    第二个元素:b

    第三个元素:c

运算符

算术运算符

描述

范例

结果

+

加法

${4+6}

10

-

减法

${4-6}

-2

*

乘法

${4*6}

24

/或div

除法

${4/6} 或 ${4 div 6}

0.666

%或mod

取模(余数)

${4%6} 或 ${4 mod 6}

4

特别注意

    “+”在EL中只代表加法,不表示连接;

${a+”20”} ???//20${a+”20a”} //异常${10/0} ?//Infinity${“abc” < “b”} //true 比较的是位置的字符Unicode码${empty ulist} //返回的是boolean,即ulist是否为空。

 JSTL(JSP标准标签库)

  JSP标准标签库

    使用标签库可以避免过多的Scriptlet代码,但是采用自定义的标签库的做法,非常繁琐且不通用,所以可以借助一些开源工具使用一些公共的标签来完成代码的开发。JSTL(JSP Standard Tag Library,JSP标准标签库)是一个开放源代码的标签组件。核心标签库是JSTL中最重要的部分,也是在开发中最常用的部分,在核心标签库中主要完成的就是流程控制、迭代输出等操作。

  核心标签库中的主要标签

功能分类

标签名称

描述

基本标签

<c:out>

输出属性内容

<c:set>

设置属性内容

<c:remove>

删除指定属性

<c:catch>

异常处理

流程控制

<c:if>

条件判断

<c:choose>

多条件判断,可设置<c:when>和<c:otherwise>标签

迭代标签

<c:forEach>

输出数组,集合

<c:forTokens>

字符串拆分及输出操作

包含标签

<c:import>

将指定的路径包含到当前页

生成URL标签

<c:url>

根据路径和参数生成一个新URL

客户端跳转

<c:redirect>

客户端跳转

  使用核心标签库之前,必须在JSP页面中引入标签库配置文件。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

 

<c:if>标签

  语法:

<c:if test=”判断条件” var=”存储判断结果”></c:if>

  例子

<c:if test=”${username != null}”> ???????欢迎,${username}</c:if>

 

<c:choose>标签

   <c:if>的功能只是针对一个条件的判断,如果要判断多个条件,可以使用<c:choose>标签,<c:choose>只能作为<c:when>和<c:otherwise>的父标签出现,不能单独使用。

  例子:

<% 
  request.setAttribute(“num”,12);
%><c:choose> ???<c:when test=”${num == 10}”> ???????num属性的值为10 ???</c:when>  <c:when test=”${num == 20}”> ???????num属性的值为20 ???</c:when> ???<c:otherwise> ???????没有一个条件满足 ???</c:otherwise></c:choose>

 以上代码输出结果为:没有一个条件满足

   <c:otherwise>标签是当所有的<c:when>都不满足时执行的,所以编写时一定要放在所有<c:when>标签的最后。

 

<c:forEach>标签

  <c:forEach>标签的主要功能为循环控制,可以将集合中的成员进行迭代输出,功能与Iterator接口类似。

<c:forEach [var=”每一个对象的属性名称”] items=”集合” [varStatus=”存放当前对象的成员信息”] [begin=”集合的开始输出位置”] [end=”集合的结束输出位置”] [step=”每次增长的步长]>
  标签体
</c:forEach>

  例子:

<% ???String info[] = {“a”, “b”, “c”, “d”, “e”, “f”, “g”}; ???request.setAttribute(“info”,info);%> ???例一:<c:forEach var =”s” items=”${info}” > ???${s}、</c:forEach>例二:<c:forEach var =”s” items=”${info}” step=”2”> ???${s}、</c:forEach>例三:<c:forEach var =”s” items=”${info}” begin=”1” end=”2”> ???${s}、</c:forEach>

以上代码输出结果为:

  例一:a、b、c、d、e、f、h、

       例二:a、c、e、h、

       例三:b、c、

  使用<c:forEach>输出时,不仅可以输出List,也可以输出Set,即只要是Collection接口的子接口或类都可以输出。<c:forEach>也可以输出Map集合,但是Map集合中的元素都是按照键值对来存储的,要想得到key和value,则需要通过元素提供的getKey()和getValue()方法。

  例子:

<% ???Map m = new HaspMap(); ???m.put(“1”,”first”); ???m.put(“2”,”second”); ???request.setAttribute(“m”,m);%> ???<c:forEach var =”s” items=”${m}” > ???${m.key} --> ${m.value}</c:forEach>

以上代码输出结果为:

  1 --> first

  2 --> second

EL和JSTL

原文地址:https://www.cnblogs.com/ghq120/p/8168852.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved