JSTL简介:
JSTL(Java Standard Tag Library) –Java标准标签库。
SUN公司制定的一套标准标签库的规范。
JSTL标签库,是由一些Java类组成的。
JSTL组成:
JSTL –Core 核心标签库。 - 这是本部分的重点
JSTL – I18N - 国际化标签库。Internationalization- I18N
JSTL – SQL – 数据库操作标签(有悖于MVC设计模式不用不讲)。
JSTL - Functions – 函数库。
JSTL - XML ,对XML的操作(同SQL标签)。
在jstl-1.2.jar包的META-INF目录中,保存着各种tld文件的版本。请查看。
JSTL核心标签库:
使用JSTL核心标签:
1.如果你的Web项目是基于JavaEE2.5或以上的。可以在你项目的任意页面上通过<%@ taglib 指令使用JSTL的核心标签库。
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
uri是引用标签库的资源定位符,并不代表一个实际的地址。
Prefix是自定义的前缀。
2.如果你的项目是JavaEE2.5以下的项目,必须在在你项目中的lib目录下,存在以下两个jar文件为:
Jstl.jar、standard.jar
在上面的包中,存在着jstl的tld文件,用于描述jstl标签的属性、名称、资源等信息。程序就是通过这个tld文件找到相关java类以供运行的。
然后再在任意的JSP页面通过指令导入jstl.
Jar文件的说明:
Jstl-1.2.jar – 包含在jstl规范中定义的接口和类的class文件,在META-INF目录下包含了所有可用的tld文件。
可以通过以下步骤修改引用jstl的方式:
找到META-INF目录中的c.tld文件,将c.tld放到WEB-INF/tld/目录下。
在web.xml中配置以下信息:
< jsp-config>
< taglib>
< taglib-uri>/c.tld< /taglib-uri>
< taglib-location>/WEB-INF/tld/c.tld< /taglib-location>
< /taglib>
< /jsp-config>
然后在页面上如下使用:
<%@ taglib uri=“/c.tld” prefix=“c”%>
JSTL-Core一共包含以下几个子标签:
< c:out>–${name} 输出标签
< c:set>–pageContext.setAttirbute(key,value,scope); 声明标签
C:remove–删除某个范畴内的数据
< c:if>–判断c:else,c:elsfif
< c:choose>< c:when>< c:otherwise>–判断分枝c:if,c:else if c:
< c:forEach>–遍历
< c:forTokens>–分隔
< c:import>–导入其他资源,相当于动态包含共享同一个request
< c:url>–重写url
< c:redirect>–重定向 response.sendRedirect(‘’..)
JSTL标签-out/set/if:
JSTL标签-out
< c:out value=”“…/>用于在页面上输出结果。
< c:out value=“
requestScope.name”/>−将request中的name值输出<c:outvalue=“
{param.username}”/> - 用于将参数输出到页面上。
< c:out value=“${name}” default=“hello”/>从page到application开始查找,如果没有找到,就显示默认值hello.
另一种设置默认值的方式:
< c:out value=“${name}”>
Default-value-默认值。
< /c:out>
只有当要求的信息为null或不存在时才会输出默认值。
excapeXml属性:默认值为true,用于将html等标签转换成<等转换元素,
escapeXml=“false”–不对xml或html进行转换,直接输出,这样就会在页面上看到红色的Red字符,因为浏览器会解析html数据。
< c:set/>-声明一个变量
< c:set/>标签的作用如下:
1.为String类型的命名变量设置值。
< c:set var=“变量名” value=“变量的值” scope=“page|request|session|application”/>
< c:set var=“name” value=“${param.name}”/>直接从参数中取出数据给name赋值。
2.如果变量为JavaBean则为这个JavaBean的属性设置值。
< c:set target=“JavaBean的变量名” property=“设置的属性” value=“值”/>
示例:
< jsp:useBean id=”person” class=”cn.itcast.Person”>< /jsp:useBean>
< c:set target=”${pageScope.person}” property=”name” value=”Jack”/>
3.如果变量为Map则,给Map中的key设置值。
< c:set target=“代表Map的变量” property=“key” value=“value”/>,示例:
< jsp:useBean id=”map” class=”java.util.HashMap” scope=”request”>< /jsp:useBean>
< c:set target=”${requestScope.map}” property=”name” value=”Jack”/>
< c:out value=”${requestScope.map.name}”/>
< c:if> - 判断标签
< c:if/>用于实现Java语言中的if语句。它的语法如下:
< c:if test=“逻辑表达式” var=“代表逻辑表达式值的命名变量” scope=../>
示例:
< c:if test=“${name!=‘Jack’}”>
当name的值为Jack时输出此行信息
< /c:if>
上面的判断等价于下面的代码片段:
if(pageContext.getAttribute(“name”)!=null && !..equals(“Jack”)){
out.println(“…..”);
}
<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前缀,相当于xml的命名空间 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSTL用法演示1</title>
</head>
<body>
<p><font color='red' size='6'>c:out标签--用于在页面上输出结果</font></p>
--输出表达式或标识符的值(功能和${标识符}类似),差别在两个属性上(default,escapeXml)
<%
pageContext.setAttribute("name", "jack");
%>
<c:out value="${name}"></c:out><br/>
<!--默认值default属性的功能:当变量aa为空时,输出该属性中的值none -->
<c:out value="${aa}" default="none"></c:out><br/>
<%
pageContext.setAttribute("str", "<font color='red' size='3'>湖南城市学院</font>");
%>
<!-- escapeXml="true"会把信息中的<号编码成<输出。false则不编码 -->
false:<c:out value="${str}" escapeXml="false"></c:out><br/>
true:<c:out value="${str}" escapeXml="true"></c:out><br/>
<!-- escapeXml="true"会把信息中的"<"号编码成"<"输出,若该属性为flase则编码 -->
<font color='red' size='6'>c:set标签</font><br/>
<!-- 给JavaBean设置属性 -->
<jsp:useBean id="u" class="cn.hncu.domain.User"></jsp:useBean>
<c:set target="${u}" property="name" value="tom"></c:set>
<c:set target="${u}" property="age" value="16"></c:set>
<c:out value="${u}"></c:out><br/>
姓名:<c:out value="${u.name}"></c:out><br/>
年龄:<c:out value="${u.age}"></c:out><br/>
<!-- 给String类型的变量设置值 -->
<c:set var="sum" value="200"></c:set>
<c:out value="${sum}"></c:out><br/>
<font color='red' size='6'>c:if标签--用于判断控制</font><br/>
<%
pageContext.setAttribute("age", "25");
%>
${age>20?"湖南abc代码功能简单时使用":"dsfsd"}<br/>
<!-- 实现if-else功能 -->
<!-- scope="session"放的哪个容器 -->
<c:if test="${age>20}" var="boo" scope="session">
湖南abc<br/>
里面有很多代码时,用这种方式<br/>
</c:if>
<c:if test="${!boo}">
sfdsfsd<br/>
</c:if>
</body>
</html>