一、JSP表达式语言EL
在使用基于MVC架构模式的web应用开发中,JSP页面通过标准动作jsp:useBean和jsp:getProperty,得到存储在作用域中的Bean属性数据,显示在页面上。但是这两个元素冗长而笨拙,且jsp:getProperty只支持对简单的Bean属性的访问,如果Bean的属性是集合或者另外的Bean,那么,对子属性的访问需要用到复杂的Java脚本。
Eg:示例两个javaBean ,Person类包含一个name属性和一个Dog类型的属性,Dog类包含一个name属性
<%@ page language="java" contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>Inserttitle here</title>
</head>
<body>
${person.dog.name}
</body>
</html>
1、EL表达式和JSP脚本表达式
区别:1EL表达式以“${”开始,以“}”结尾;
JSP脚本表达式以“<%”开始,以“%>”结尾
2二者处理内部表达式的方式
Eg: <%! int i=100; %>
i的值是<%=i %>
i的值是${i} //返回一个未定义的值
2、在EL表达式中使用隐式变量
3、EL运算符
1)用于访问属性和集合的EL运算符
1a.b:返回a的属性b的值
2a[b]:返回a的键或索引为b的值
2)EL算术、关系、逻辑运算符
4、EL函数
将EL函数插入到JSP页面的过程共包含创建和更改四个文件:
1) 创建静态方法(.java)
注意:1方法必须被声明为static和public,而方法所属的类必须声明为public。这样servlet就可以直接访问该类及其方法,而不用创建一个新对象;2方法的参数和返回值必须在EL中是有效的;
3类文件必须保存在/WEB-INFO/classes目录下。
2) 创建标记库描述文件(TLD)
3) 更改部署描述文件
4) 在JSP内访问EL函数
二、标准标记库JSTL
根据JSTL标签所提供的功能,可以将其分为5个类别。
· 核心标签
· 格式化标签
· SQL 标签
· XML 标签
· JSTL 函数
· 核心标签是最常用的JSTL标签。引用核心标签库的语法如下:
· <%@ taglib prefix="c"
· uri="http://java.sun.com/jsp/jstl/core"%>
标签 | 描述 |
用于在JSP中显示数据,就像<%= ... > | |
用于保存数据 | |
用于删除数据 | |
用来处理产生错误的异常状况,并且将错误信息储存起来 | |
与我们在一般程序中用的if一样 | |
本身只当做<c:when>和<c:otherwise>的父标签 | |
<c:choose>的子标签,用来判断条件是否成立 | |
<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 | |
检索一个绝对或相对 URL,然后将其内容暴露给页面 | |
基础迭代标签,接受多种集合类型 | |
根据指定的分隔符来分隔内容并迭代输出 | |
用来给包含或重定向的页面传递参数 | |
重定向至一个新的URL. | |
使用可选的查询参数来创造一个URL |
1、通用标记
<c:catch>:不会自己执行例程,但是会将抛出的异常保存到<c:catch>标记的var属性中
<c:out>:此标记的功能就是显示value的值,还可以设置默认值
Eg: <c:out value=”${color}” default=”red”>
2、变量支持标记
<c:set>:设置变量和对象的值,还可以操作JavaBean和java.util.Map对象。Eg: <c:set var=”num” value=”${4*4}”>
<c:set target=”customer” property=”zipcode” value=”55501”>
<c:remove>:将一个变量从其作用域中删除,不能用于avaBean和java.util.Map对象。
3、流程控制
1)条件处理:<c:if>和<c:choose>都需要一个用于设置布尔表达式的test属性
<c:if test=”${x==9}”>${x}</c:if>
2)循环:<c:forEach>和<c:forTokens>
4、用JSTL访问URL信息
<c:url>:重写url并对其编码
<c:import>:访问web应用程序之外的内容
<c:redirect>:重定向到不同的url