EL表达式&JSTL

1、EL表达式

1、2EL的特点

  1.    自动转换类型 
    
    1.1、EL得到某个数据时可以自动转换类型
    1.2、对于类型的限制更加宽松
  2.    使用简单 
    
    2.1、相比较在JSP中嵌入Java代码,EL应用更简单

1、3什么是EL?

EL即Expression Language(表达式语言)
常用于取值,我们之前在JSP中写java代码必须写在**<%%>**里面。并且取值代码比较繁琐。
EL表达式 可以使我们的 取值代码更加简洁

1、4EL的功能

替代JSP页面中的复杂代码(可以说是java代码)

1、5EL的语法/格式

${ EL exprission }
${ bean.name } 或 ${ bean[‘name’] }

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

自动转换类型

  • List itemEL得到某个数据时可以自动转换类型
  • 对于类型的限制更加宽松

1、6EL表达式获取值的方法

EL表达式获取值会从最小作用域优先拿取

作用域大小:pageContest < request < session <application

代码演示:在web目录下创建Test.jsp

<body>
    <%
        request.setAttribute("key", "value");		
    %>
    <%--  表达式脚本输出key1的值  --%>
    <%=request.getAttribute("key1")%>
    <%--  EL表达式输出key1的值  --%>
    ${key1}
    <%--  表达式脚本输出null值时页面显示null
          EL表达式输出null值时页面什么都不显示(空串)--%>
</body>

运行结果:
在这里插入图片描述

<body>
    <%							  
        //向四个域对象中都保存相同key的值
        request.setAttribute("key", "request");
        session.setAttribute("key", "session");
        application.setAttribute("key", "application");
        pageContext.setAttribute("key", "pageContext");
    %>
    <%--  使用EL表达式输出key的值  --%>
    ${key}
</body>

运行结果:由此看出在同一个页面时,pageContext优先级最高
请添加图片描述

<body>
    <%							  
        //向四个域对象中都保存相同key的值
        request.setAttribute("key", "request");
        session.setAttribute("key", "session");
        application.setAttribute("key", "application");
        pageContext.setAttribute("key", "pageContext");
    %>
    <%--  使用JSP表达式进行跳转--%>
	 <jsp:forward page="test_02.jsp"></jsp:forward> 
</body>
<body>
<h1>过来了</h1> <br>
<h1>值为:${key}</h1>
</body>

运行结果:由此看出在页面发生跳转时,使用EL表达式获取值,优先级最大的是request
请添加图片描述

1、7EL隐式对象介绍

在这里插入图片描述

2.JSTL

2.1 JSTL介绍

JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL通常会与EL表达式合作实现JSP页面的编码

它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以及指定标签库而已

2.2 JSTL的使用及分类

要使用JSTL,首先要先下载好jar包(去网上搜索下载即可),下载好后,导入项目的WEN-INF的lib目录下即可,当然,要在jsp中使用JSTL,还得使用@taglib标签,不过不同的分类情况不一样,JSTL标签有以下几种分类。

可以分为4大类和JSTL函数:

  • 核心标签:core:核心标签库,学习的重点;
  • 格式化标签:fmt:格式化标签库
  • SQL标签:sql:数据库标签库,不需要学习了,它过时了;
  • XML标签:xml:xml标签库,不需要学习了,它过时了。

核心标签:

在JSP文件开头使用如下语法:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • prefix=“c”:指定标签库的前缀,这个前缀可以随便给值,但大家都会在使用core标签库时指定前缀为c;
  • uri=“http://java.sun.com/jstl/core”:指定标签库的uri,它不一定是真实存在的网址,但它可以让JSP找到标签库的描述文件;

2.3、JSTL标准标签库介绍

在这里插入图片描述

代码演示:
remove标签的用法

<!-- remove标签的用法 --> 
<c:set var="firstName" value="xiaop"></c:set> 
<c:out value="${firstName}"></c:out> 
<c:set var="lastName" value="liu"></c:set> 
<!-- 只能remove某个变量,不能remove掉JavaBean里的属性值 --> 
<c:remove var="lastName"/> 
<c:out value="${lastName}"></c:out><br>

if标签的用法

<!-- if标签的用法 --> 
<form action="index.jsp" method = "post"> 
    <!-- param为EL的隐式对象,获取用户输入的值 --> 
    <input type = "text" name = "score" value = "${param.score}"> 
    <input type = "submit" value = "提交"> 
</form> 
<!-- var中的变量为boolean类型,取决于test中的表达式 --> 
<c:if test="${param.score >= 90}" var="grade" scope="session"> 
    <c:out value="恭喜,成绩优秀"></c:out> 
</c:if> 
<c:if test="${param.score >= 80 && param.score < 90}"> 
    <c:out value="恭喜,成绩良好"></c:out> 
</c:if> 
<c:out value="${sessionScope.grade}"></c:out>

forEach标签用法

<!-- forEach标签的用法 --> 
<% 
    List<String> names = new ArrayList<String>(); 
    names.add("liu"); 
    names.add("xu"); 
    names.add("Code"); 
    names.add("Tiger"); 
    request.setAttribute("names", names); 
%> 
<!-- 获取全部值 --> 
<c:forEach var="name" items = "${requestScope.names}"> 
    <c:out value="${name}"></c:out><br> 
</c:forEach> 
<c:out value="========================"></c:out><br> 
<!-- 获取部分值 --> 
<c:forEach var="name" items = "${requestScope.names}" begin="1" end="3"> 
    <c:out value="${name}"></c:out><br> 
</c:forEach> 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值