EL表达式与JSTL标签库(了解)

EL简介

1.EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。
2.EL表达式用于代替JSP表达式(<%= %>)在页面中做输出操作。
3.EL表达式仅仅用来读取数据,而不能对数据进行修改。
4.使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出。

EL写法格式

${表达式 }

EL使用

1 .取出4个域对象中存放的值。
	<%
		pageContext.setAttribute("name", "page");
		request.setAttribute("name", "request");
		session.setAttribute("name", "session");
		application.setAttribute("name", "application");
	%>
	
	一般JSP取出作用域中的值<br>
	<%= pageContext.getAttribute("name")%>
	<%= request.getAttribute("name")%>
	<%= session.getAttribute("name")%>
	<%= application.getAttribute("name")%>
	
	使用EL表达式取出作用域中的值<br>
	${ pageScope.name }
	${ requestScope.name }
	${ sessionScope.name }
	${ applicationScope.name }
扩展1:EL表达式中在指定域中获取属性
指定从哪个域中获取:
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }
扩展2:EL表达式中直接使用属性名获取属性
${name }
将会在四个域中由小到大(page,request,session,application )依次查找,为null则什么也不输出

获取域中的对象也是这样使用,如获取域中名字为user的对象
${user}
2.取数组
		<%
   			String [] name = {"aa","bb","cc"};
   			pageContext.setAttribute("array", name );
   		%>
   		
   		使用EL表达式取出作用域中数组的值<br>
   		${array[0] } , ${array[1] },${array[2] }
3.获取Map中属性时可以以直接通过属性的key
 	<%
      		Map map = new HashMap();
      		map.put("name", "Coder_z");
      		map.put("address","赣州");
      		
      		map.put("address.aa","含特殊的key,注意取属性写法");

   			pageContext.setAttribute("map", map);
   	%>
   	
   	使用EL表达式取出作用域中Map的值<br>
   	${map.name }  , ${map.address }  , ${map["address.aa"] }
4.获取对象的属性值可以直接通过“对象.属性名”

理解这里的属性名:这里的属性名为所获取对象的get****方法中****的值,首字母小写,并不是对象中的变量名。
如对象有getName()方法,即对象.属性名中的属性名为name

比如:如果获取name属性值,那么该对象中必定要存在一个getName()方法。在开发中如有Date类型数据需要格式转换则可以在后台,这个JavaBean中提供一个get方法用于转换时间格式,在前台通过对象.属性名就可获取转换的时间格式显示。

<%
	User user = new User("Coder_z",18);
	session.setAttribute("u", user);
%>

${ u.name }  , ${ u.age } 
获取对象的属性也可以通过   对象[“属性名”]
 u["name "]
5.进行数据运算

EL的11个隐含对象(内置对象)

  • pageContext :pageContext和JSP中的pageContext功能一样

请求域

  • pageScope
  • requestScope
  • sessionScope
  • applicationScope

头信息相关对象

  • header
  • headerValues

参数信息相关对象

  • param
  • paramValues
  • cookie

扩展:
param与paramValues主要用于获取get或post请求中的参数

param
获取指定的请求参数  ${param.name}
paramValues
获取请求参数数组    ${paramValues.sport[1]}

全局初始化参数

  • initParam

JSTL简介( jsp标准标签库)

EL表达式只具有输出功能,而不能做逻辑判断,像JSP页面中的JSP脚本片段<% %>,可以使用JSTL代替,JSTL一般与EL表达式配合使用。(JSTL的标签本身不具备从域里取数据的能力,也不具备数据运算的能力。必须要配合EL表达式来实现)

JSTL使用

1.导包
在这里插入图片描述

2.在JSP页面中通过taglib标签引入标签库。
注:支持 EL表达式,那么引入的标签库必须选择1.1的版本,1.0的版本不支持EL表达式。

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    prefix:用来指定前缀名,我们通过该名来使用JSTL
    uri:相当于库的唯一标识,因为JSTL由多个不同的库组成,使用该属性指定要导入哪个库。

3.使用JSTL

<c:out value="hello jstl"></c:out>
调用前缀为c的标签的out方法,向页面中输出value属性中的字符串。

在这里插入图片描述

JSTL常用标签(部分核心标签)

c:set 添加或修改域中的属性

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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>
	<!-- 声明一个对象name, 对象的值 Coder ,scope="application"指定存储到application  (默认存储到Page) -->
	<c:set var="name" value="Coder" scope="application"></c:set>
	
	使用EL表达式输出:
	${applicationScope.name }
</body>
</html>

在这里插入图片描述

c:forEach 循环遍历

  1. 基本for循环
<!--循环显示的1~9-->
<c:forEach begin="1" end="9" var="i">
		${i}
</c:forEach>
  1. 增强for循环
  <table class="table table-hover" class="table table-bordered">
		<tr>
			<td>编号</td>
			<td>姓名</td>
			<td>年龄</td>
			<td>性别</td>
			<td>操作</td>
		</tr>
		
		<!-- items : 表示遍历哪一个对象(案例中为一个集合),用EL表达式获取要遍历的对象。 
	            var: 设置遍历出来的对象的名称-->
		<c:forEach items="${allStudent}"  var="student">
			<tr>
				<td>${student.id}</td>
				<td>${student.name}</td>
				<td>${student.age}</td>
				<td>${student.sex}</td>
				<td> <a href="#">编辑</a>  <a href="#">删除</a> </td>
			</tr>
		</c:forEach>
	</table>

在这里插入图片描述

c:if 判断

//语法:
<c:if test="EL表达式进行判断">
    如果判断为true,这里的代码会执行
</c:if>

//注:与java语法不同,没有else,需使用两个或多个c:if实现

fmt:formatDate 使用不同的方式格式化日期

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

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

<html>
<head>
    <title>Title</title>
</head>
<body>
<c:set var="now" value="<%=new java.util.Date()%>" />
<fmt:formatDate pattern="yyyy-MM-dd" value="${now}" /></p>
</body>
</html>

参考:fmt:formatDate

JSTL常用标签 待完善…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinking in Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值