el 能否定义作用域变量_第八章 表达式EL和JSTL

  1. EL和JSTL

(一)EL

  1. EL 全名为 Expression Language,

原本是 JSTL 1.0(JavaServer Pages Standard Tag Library)为方便存取数据所自定义的语言,后来成了 JSP 标准的一部分,如今 EL 已经是一项成熟、标准的技术

  1. EL 的中文名称为表达式语言,很显然,和表达式应该具有一些联系
  1. <%=变量名%>是典型的表达式,其用于将变量显示在客户端

同理,<%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”等。

  1. JSTL

1.JSTL 所提供的标签库主要分为五大类

5a0950c30919e61a6a0afb515f2b2ceb.png
  1. 使用 JSTL 必须使用 taglib 指令,
  2. taglib 指令的作用是声明 JSP 文件使用的标签库,同时引入该标签库,并指定标签的前缀。以声明核心标签库 core 为例,其基本语法如下:

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

“prefix”表示前缀,习惯上把核心标签库的前缀定义为“c”,

通常taglib指令定义于JSP中,位于page指令之后

4.JSTL的核心标签库,又称core标签库

c64fd71dd691e58850d1fc6d4bb42350.png

5.(一)基本数据操作标签

  1. <c:out>标签主要用来显示数据的内容,就像是 <%=表达式%> 一样

<c:out value=“变量名”> </c:out>

  1. <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,然后显示

  1. <c:remove>标签用于删除存在于 scope 中的变量。

<c:remove/>标签中包含两个属性:var 以及 scope,分别表示需要删除的变量名以及变量的作用范围。

(二)流程控制标签

  1. <c:if>标签用于简单的条件语句。

<c:if test="${判断条件}">

</c:if>

  1. <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>

  1. <c:forEach>为循环控制标签,功能是将集合(Collection)中的成员顺序浏览一遍,在实际 应用开发中,其使用频率最高。

<c:forEach var="元素名" items="集合名" begin="起 始" end="结束" step="步长">

< /c:forEach>

  1. <c:forTokens>标签是用来浏览字符串中所有的成员,其成员是由分隔符 delims 所分隔的。

<c:forTokens items="字符串" delims="分隔符" var="子串名"

begin="起始" end="结束" step="步长">

</c:forTokens>

例一 scopeExample.jsp 对象的作用域

a86373465fbe214527419553d518f89b.png

例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;

}

}

ab512fc64bcee0133c01778a863bb8d1.png

例3 表达式<%= 变量 %> <c: out value="变量名 "> </c: out>

b4bf00036aaea7ed89fee0d4fd75bd9a.png

例4 按照HTML标签处理 escapeXmlExample.jsp

293679d1213fe5860a579cbf39cb8810.png

<%@ 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标签

cdc8fbddbd381040c0803f26c0ae8b62.png

例6 choose标签

efcfad24d92c9da3b28f2fee2bdd71f0.png

例7 forEach标签

2e40ff6490bea21ea25e22946f7db048.png

a7aab460de6d012470721a9fad85a923.png

例8 forToken标签

566fa12eae81a51a28b0de87e23905d8.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值