1. jstl与el表达式
1.1. jstl 是什么? *
java standard taglib(java 标准标签库)。
1.2. 标签是什么? *
sun公司制订的一种技术规范,用来将jsp 页面中的java代码使用类似于html当中的标记来替换
的一种技术。这样做的目的,是为了使jsp 页面更好维护以及更好的测试。
1.3. el表达式是什么? *
sun制订的一种用于计算的一种规则,早期只能用于给标签的属性赋值,现在也可以直接输出。
1.4. el表达式的基本语法 **
${el表达式}
1) 第一种: 访问bean的属性
a. ${user.name}:
jsp 引擎会依次从pageContext、request、session、application查找绑订名为"user"
的对 象,如果找到了,就丌再向下查找,否则,继续向下查找。
找到后,调用该对象的getName(),并输出其值;找丌到,则输出""(空)。
b. 或者也可以使用${user["name"]},效果相同
"name" 表示字符串
c. 或者是${user[propname]},注意propname没有引号,表示变量
d. 此外,[ ]里面还可以是0,1..这样的下标,作用是输出数组里的元素值。
e. 可以使用pageScope,requestScope,sessionScope,applicationScope四个关键字指
定查找的范围。
f. ${requestScope.user.name}只到request中去找,丌再依次到4个范围查找了
2) 第二种: 获得请求参数值
a. ${param.username}
等价于 request.getParameter("username");
b. ${paramValues.interest}
等价于request.getParameterValues("interest");
3) 第三种: 计算一个表达式,将结果作为标签的属性值或者直接输出
a. 算术运算
4
"+" , "-" , "*" , "/" , "%" , 但是要注意,"+"号丌能连接字符串。
b. 关系运算
"==" , "!=" , ">" , "<" ,">=" , "<="
可以使用对应的"eq","nq","lt","gt","le","ge"代替。
c. 逻辑运算
"&&","||","!",可以使用"and","or","no t"代替。
d. empty运算
判断一个字符串是否为空,集合内容是否为空,以及绑订的对象是否存在。
1.5. 核心标签的使用 **
1) 使用步骤
需要将jstl标准标签库相关的jar 文件copy到WEB-INF\lib。
D:\czh\MyEclipse 5.5.1 GA\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_5.5.1\
data\libraryset\JSTL1.1\lib\
jstl.jar standard.jar
2) 在jsp文件当中,使用taglib指令导入标签。
3) 使用标签
a. <c:if test="" var="" scope="">
test属性: 当值为true,执行标签体的内容,为false,则丌执行。
var属性: 指定一个绑订名。
scope属性: 指定一个绑订范围。
var属性和scope属性用于将test的结果绑订到指定的对象
(pageContext,request,session,application)上。
b. <c:choose>
用于分支,当某个条件满足,执行某一个分支。每一个分支条件用when标签来表示。
<c:when test="">
可出现多次,只用于<c:choose>
test属性: 当值为true,执行标签体的内容
<c:otherwise>
只出现1次,只用于<c:choose>
当其它分支都丌满足条件,则执行该标签体的内容。
c. <c:forEach var="" items="" varStatus="">
用于遍历集合items 属性:指定要遍历的集合。
var属性: 指定一个绑订名,jsp 引擎会从集合当中取一个对象,绑订到
pageContext对象上。
varStatus属性: 指定一个绑订名,对应的绑订值是一个java 对象,封装了遍
历时的一些信息,包括当前遍历的对象的下标(index)以及
是第几次(count)遍历。
d. <c:url>
当用户禁止cookie以后,会自动在地址后面添加sessionId。
当使用绝对路径时,会自动在地址前添加应用名。
value属性:指定地址。在表单提交、链接当中,可以使用该标签。
e. <c:set var="" scope="" value="">
绑订一个对象到指定的范围。
value属性: 绑订值。
f. <c:remove var="" scope="">
解除绑订
g. <c:catch var="">
处理异常,会将异常信息封装成一个对象,绑订到pageContext对象上。
h. <c:import url="">
url指定一个jsp 文件的地址,jsp 会在运行时调用这个jsp。
i. <c:redirect url="">
重定向到另外一个地址。url属性指定重定向的地址。
j. <c:out value="" default="" escapeXml="">
用于输出el 表达式的值。
value属性: 指定输出的值
default属性: 指定缺省值。
escapeXml属性: 设置成true,会将value中的特殊字符替换成相应的实
体。缺省值就是true。
1.if when 标签
<%@ page language="java"
import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c"%>
<%@page import="bean.User" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>M starting page</title>
</head>
<body>
This is my JSP page. <br>
<%
User user=new User();
user.setName("zs");
user.setGendar("f");
request.setAttribute("user1", user);
%>
user's name:${user1.name}</br>
user's gendar:
<c:if test="${user1.gendar=='m'}"
var="rs" scope="request">
男
</c:if>
<c:if test="${!rs}">
女
</c:if>
<c:choose>
<c:when test="${user1.gendar=='m'}">男</c:when>
<c:otherwise>女</c:otherwise>
</c:choose>
</body>
</html>