JavaWeb开发技术学习笔记(八)——EL、JSTL

EL :为了消除jsp中的Java代码

语法:
${EL表达式}
a.EL不需要导包
b.在el中调用属性,其实是调用的getXxx()方法

${范围.对象.属性.属性的属性 }

操作符:操作:属性,不是对象
. : 使用方便
[] : 如果是常量属性,需要使用双引号/单引号 引起来;比点操作符更加强大

[]强大之处:
a.可以容纳一些 特殊符号 (. ? -)
b.[]可以容纳 变量属性 (可以动态赋值)
String x = “a”;
r e q u e s t S c o p e . a {requestScope.a}等价于 {requestScope[“a”]}等价于KaTeX parse error: Expected '}', got 'EOF' at end of input: {{requestScope[x]}

c.可以处理数组
${requestScope.arr[0] }

普通对象、map中的变量

通过EL获取JSP 九大内置对象

${pageContext }
${pageContext.request }
${pageContext.sessoin }

JSTL:比EL更加强大

需要引入2个jar :jstl.jar standard.jar
引入tablib :
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
其中prefix=“c” :前缀

核心标签库: 通用标签库、条件标签库 迭代标签库

a.通用标签库
<c:set>赋值
i:
在某个作用域之中(4个范围对象),给某个变量赋值
<%–
request.setAttribute(“name”, “zhangsan”) ;
–%>
<c:set var=“name” value=“zhangsan” scope=“request”/>
${requestScope.name }

<c:set var=“变量名” value=“变量值” scope=“4个范围对象的作用域”/>

ii:
给普通对象赋值
在某个作用域之中(4个范围对象),给某个对象的属性复制 (此种写法,不能指定scope属性)

​ <c:set target="${requestScope.student}" property=“sname” value=“zxs” />

给map对象赋值
<c:set target="${requestScope.countries}" property=“cn” value=“中国” />

<c:set target=“对象” property=“对象的属性” value=“赋值” />

注意 <c:set>可以给不存在的变量赋值 (但不能给不存在的对象赋值)

<c:out> :显示
true:<c:out value=‘百度’ default=“当value为空的,显示的默认值” escapeXml=“true” />
false: <c:out value=‘百度’ escapeXml=“false” />

<c:remove >:删除属性
<c:remove var=“a” scope=“request”/>

选择:
if(boolean)
单重选择
<c:if test="" >

if else if… esle if… else /switch

<c:choose>
<c:when test="…"> </c:when>
<c:when test="…"> </c:when>
<c:when test="…"> </c:when>
<c:otherwise> </c:otherwise>
</c:choose>

在使用 test="" 一定要注意后面是否有空格
例如:test=" 10 > 2 " t r u e t e s t = " {10>2 }" true test=" {10>2 } " 非true

循环(迭代标签库)

for(int i=0;i<5;i++)
	<c:forEach  var="name" items="${requestScope.names }" >
		-${name }-
	</c:forEach>

for(String str:names)
	<c:forEach  var="student" items="${requestScope.students }" >
		${student.sname }-${student.sno }

</c:forEach>

猜你喜欢

转载自blog.csdn.net/MACRosshaha/article/details/105871053