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和set方法对应的属性值,并不是对象中的变量名。
比如:如果获取name属性值,那么该对象中必定要存在一个getName()方法。

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

${ u.name }  , ${ u.age } 

获取对象的属性也可以通过   对象[“属性名”]
 u["name "]

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使用

1.导包
EL表达式与JSTL标签库(了解)

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属性中的字符串。

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

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>

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

  • c:forEach 对多个对象的集合进行迭代,重复执行标签体
  <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>

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

JSTL常用标签 待完善…

EL表达式与JSTL标签库(了解)EL表达式与JSTL标签库(了解) coding_note 发布了6 篇原创文章 · 获赞 5 · 访问量 125 私信 关注
上一篇:java学习第四阶段(EL&JSTL)


下一篇:java-是否可以使用JSTL在客户端的时区中显示日期?