JSTL是一个不断完善的开放源代码,EL只是一个表达式。
JSTL简介:
JSP 标准标签库(JSP Standard Tag Library,JSTL)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
在 developerWorks 上其新系列的第一篇文章中,软件工程师Mark Kolb 向您展示了如何使用 JSTL 标记来避免在 JSP 页面中使用脚本编制元素。您还将了解如何通过从表示层删除源代码来简化软件维护。最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。
JavaServer Pages(JSP)是用于 J2EE 平台的标准表示层技术。JSP 技术提供了用于执行计算(这些计算用来动态地生成页面内容)的脚本编制元素和操作。脚本编制元素允许在 JSP 页面中包括程序源代码,在为响应用户请求而呈现页面时可以执行这些源代码。
操作将计算操作封装到很象 HTML 或 XML 标记的标记中,JSP 页面的模板文本通常包含这些标记。JSP 规范只将几种操作定义成了标准,但从 JSP 1.1 开始,开发人员已经能够以定制标记库的方式创建其自己的操作了。
JSP 标准标记库(JSTL)是 JSP 1.2 定制标记库集,这些标记库实现大量服务器端 Java应用程序常用的基本功能。通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL 使 JSP 作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。
当然,您可以使用 JSP 脚本编制元素(scriptlet、表达式和声明)来实现此类任务。例如,可以使用三个 scriptlet 实现条件内容,清单 1 中着重显示了这三个 scriptlet。但是,因为脚本编制元素依赖于在页面中嵌入程序源代码(通常是 Java 代码)。
所以对于使用这些脚本编制元素的 JSP 页面,其软件维护任务的复杂度大大增加了。例如,清单 1 中的 scriptlet 示例严格地依赖于花括号的正确匹配。如果不经意间引入了一个语法错误,则条件内容中的嵌套其它 scriptlet可能会造成严重破坏,并且在 JSP容器编译该页面时,要使所产生的错误信息有意义可能会很困难。
EL简介:
EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,${pageContext} 也返回 PageContext 对象。
注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
JSTL标准标签库包括核心标签库和SQL标签库,核心标签库常用的是if和forEach
EL即Expression Language(表达式语言)
EL的语法:${ EL exprission }
${ bean.name } 或 ${ bean['name'] }
说白了,EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西的
EL的语法:${ EL exprission }
${ bean.name } 或 ${ bean['name'] }
说白了,EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西的
JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
JSTL标准标签库包括核心标签库和SQL标签库,核心标签库常用的是if和forEach
说白了JSTL常实现网页逻辑判断和迭代显示的,需要引入
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
只要JSTL和EL结合,就基本可以让页面再无<% %> jsp代码了。
给你一段我今天考试的代码:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="work.do?method=search" method="post">
<table border="1" align="center" width="50%">
班级:<select name="student.s_class">
<option value="0">全部</option>
<c:forEach var="T_class" items="${requestScope.tClassList}">
<option value="${T_class.c_no}">
${T_class.c_name}
</option>
</c:forEach>
</select>
科目:<select name="student.s_schedule">
<option value="0">全部</option>
<c:forEach var="T_schedule" items="${requestScope.tSchedultList}">
<option value="${T_schedule.s_no}">
${T_schedule.s_name}
</option>
</c:forEach>
</select>
状态<select name="student.s_status">
<option value="0">全部</option>
<option value="1">已处理</option>
<option value="2">未处理</option>
</select>
<input type="submit" value="提交">
</table>
</form>
<c:if test="${requestScope.searchResult==0}">
<h5 align=center>无此数据</h5>
</c:if>
<c:if test="${requestScope.searchResult==1}">
<h3 align=center>查询结果如下</h3>
<table border="1" align="center" width="50%">
<tr>
<th>姓名</th>
<th>班级</th>
<th>科目</th>
<th>成绩/处理</th>
</tr>
<c:forEach var="MainBean" items="${requestScope.mainList}">
<tr>
<td>${MainBean.s_name}</td>
<td>${MainBean.c_name}</td>
<td>${MainBean.ts_name}</td>
<td>
<c:if test="${MainBean.s_status==1}">${MainBean.s_score}</c:if>
<c:if test="${MainBean.s_status==2}"><a href="work.do?method=toPiyue&stuId=${MainBean.id}">批阅</a></c:if>
</td>
</tr>
</c:forEach>
</table></c:if>
</body>
</html>
可能说得不是很清楚,这个多查查资料,多练练手就会了