- EL和JSTL
(一)EL
- EL 全名为 Expression Language,
原本是 JSTL 1.0(JavaServer Pages Standard Tag Library)为方便存取数据所自定义的语言,后来成了 JSP 标准的一部分,如今 EL 已经是一项成熟、标准的技术
- EL 的中文名称为表达式语言,很显然,和表达式应该具有一些联系。
- <%=变量名%>是典型的表达式,其用于将变量显示在客户端;
同理,<%out.print(变量名) %>和其作用相同。
EL 具有与表达式相同的输出的功能,
另外其还具有简单的运算符、访问对象、简单的JavaBean 访问、简单的集合访问功能
4.
通过Servlet或者JavaBean,可以消除一部分Java代码,然而在JSP中一些显示代码是无法去除的。
因此为了解决上述的问题,JSTL标准标签库应运而生。
而EL就是JSTL的基础,因为EL是JSP2.0新增的功能,
所以只有是支持Servlet2.4/JSP2.0的Container,才能在JSP网页中直接使用EL。Tomcat6.0中可以直接使用EL
5.
(1)从session中得到User对象,然后打印user中的sex属性,写在JSP上
User user =(User)session.getAttribute(“user”);
String sex = user.getSex();
out.print(sex);
(2)从 session 的范围中,取得用户的性别
${ sessionScope.user.sex }
String str = “sex”;
${ sessionScope.user[str] }
6.
(1)当要存取的数据的名称中包含一些特殊字符(即非字母或数字符号)时,只能使用[ ]运算符
${ sessionScope.user["user-sex"] }
(2)当动态取值时,只能使用[],例如:
${ sessionScope.user[param] }
param是自定义的变量时,其值可以是user对象的“name”、“age”以及“address”等。
- JSTL
1.JSTL 所提供的标签库主要分为五大类
- 使用 JSTL 必须使用 taglib 指令,
- taglib 指令的作用是声明 JSP 文件使用的标签库,同时引入该标签库,并指定标签的前缀。以声明核心标签库 core 为例,其基本语法如下:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
“prefix”表示前缀,习惯上把核心标签库的前缀定义为“c”,
通常taglib指令定义于JSP中,位于page指令之后
4.JSTL的核心标签库,又称core标签库
5.(一)基本数据操作标签
- <c:out>标签主要用来显示数据的内容,就像是 <%=表达式%> 一样
<c:out value=“变量名”> </c:out>
- <c:set> 标签用于对变量或 JavaBean 中的变量属性赋值。
<c:set>标签中包含以下的属性:value、target、property、var 以及 scope。如:
<c:set value="欢迎" scope="session" var="msg"></c:set>
<c:out value=“${msg}”></c:out>
表示将字符串“欢迎”存入session,起名为msg,然后显示
- <c:remove>标签用于删除存在于 scope 中的变量。
<c:remove/>标签中包含两个属性:var 以及 scope,分别表示需要删除的变量名以及变量的作用范围。
(二)流程控制标签
- <c:if>标签用于简单的条件语句。
<c:if test="${判断条件}">
</c:if>
- <c:choose>、<c:when>和<c:otherwise>这三个标签通常会一起使用,它们用于实现复杂条件判断语句,类似"if-elseif"的条件语句。
<c:choose>
<c:when test=“${条件 1}”>体</c:when>
<c:when test=“${条件 2}”>体</c:when>
<c:otherwise>体</c:otherwise>
</c:choose>
- <c:forEach>为循环控制标签,功能是将集合(Collection)中的成员顺序浏览一遍,在实际 应用开发中,其使用频率最高。
<c:forEach var="元素名" items="集合名" begin="起 始" end="结束" step="步长">
体
< /c:forEach>
- <c:forTokens>标签是用来浏览字符串中所有的成员,其成员是由分隔符 delims 所分隔的。
<c:forTokens items="字符串" delims="分隔符" var="子串名"
begin="起始" end="结束" step="步长">
体
</c:forTokens>
例一 scopeExample.jsp 对象的作用域
例2 访问javabeans
package beans;
public class Student {
private String stuno;
private String stuname;
public String getStuno() {
return stuno;
}
public void setStuno(String stuno) {
this.stuno = stuno;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
}
例3 表达式<%= 变量 %> <c: out value="变量名 "> </c: out>
例4 按照HTML标签处理 escapeXmlExample.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<%
session.setAttribute("msg", "<B>这是<c:out>示例</B>");
%>
<c:out value="${msg}"></c:out><br>
<c:out value="${msg}" escapeXml="false"> </c:out>
</body>
</html>
例5 if标签
例6 choose标签
例7 forEach标签
例8 forToken标签