`
jishublog
  • 浏览: 866005 次
文章分类
社区版块
存档分类
最新评论

【JSP】JSTL核心标签库的使用方法和示例

 
阅读更多

JSTL 核心标签库

JSTL 核心标签库标签共有13个,功能上分为4类:

1. 表达式控制标签:out、set、remove、catch

2. 流程控制标签:if、choose、when、otherwise

3. 循环标签:forEach、forTokens

4. URL操作标签:import、url、redirect


使用标签时,一定要在jsp文件头加入以下代码:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


1. <c:out>

用来显示数据对象(字符串、表达式)的内容或结果
使用Java脚本的方式为:<% out.println("hello") %> <% =表达式 %>
使用JSTL标签:<c:out value="字符串">,例如:
<body>
  <c:out value="<要显示的数据对象(未使用转义字符)>" escapeXml="true" default="默认值"></c:out><br/>
  <c:out value="<要显示的数据对象(使用转义字符)>" escapeXml="false" default="默认值"></c:out><br/>
  <c:out value="${null}" escapeXml="false">使用的表达式结果为null,则输出该默认值</c:out><br/>
</body>

那么网页显示效果为:


2. <c:set>

用于将变量存取于 JSP 范围中或 JavaBean 属性中。下面的例子中假设已经有 Person.java 这个类文件。

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page contentType="text/html; charset=utf-8" %>

<jsp:useBean id="person" class="lihui.Person"></jsp:useBean>

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JSTL测试</title>
  </head>
  
  <body>
  <c:set value="张三" var="name1" scope="session"></c:set>
  <c:set var="name2" scope="session">李四</c:set>
  <c:set value="赵五" target="${person}" property="name"></c:set>
  <c:set target="${person}" property="age">19</c:set>
  <li>从session中得到的值:${sessionScope.name1}</li>
  <li>从session中得到的值:${sessionScope.name2}</li>
  <li>从Bean中获取对象person的name值:<c:out value="${person.name}"></c:out></li>
  <li>从Bean中获取对象person的age值:<c:out value="${person.age}"></c:out></li>
  </body>
</html>
一共有四种语法格式,前两种是给jsp的范围变量赋值,后两个是给 javabean 变量赋值。

效果如下:


3.<c:remove>

主要用来从指定的 jsp 范围内移除指定的变量。使用类似,下面只给出语法:

<c:remove var="变量名" [scope="page|request|session|application"]></c:remove>

4.<c:catch>

用来处理 JSP 页面中产生的异常,并存储异常信息

<c:catch var="name1">
      容易产生异常的代码
</c:catch>
如果抛异常,则异常信息保存在变量 name1 中。

5.<c:if>

<c:if test="条件1" var="name" [scope="page|request|session|application"]></c:remove>
例:

<body>
	<c:set value="赵五" target="${person}" property="name"></c:set>
	<c:set target="${person}" property="age">19</c:set>
	<c:if test="${person.name == '赵武'}" var="name1"></c:if>
		<c:out value="name1的值:${name1}"></c:out><br/>
	<c:if test="${person.name == '赵五'}" var="name2"></c:if>
		<c:out value="name2的值:${name2}"></c:out>
</body>
效果:



6. <c:choose> <c:when> <c:otherwise>

三个标签通常嵌套使用,第一个标签在最外层,最后一个标签在嵌套中只能使用一次

例:

<c:set var="score">85</c:set>
<c:choose>
	<c:when test="${score>=90}">
		你的成绩为优秀!
	</c:when>
	<c:when test="${score>=70&&score<90}">
		您的成绩为良好!
	</c:when>
	<c:when test="${score>60&&score<70}">
		您的成绩为及格
	</c:when>
	<c:otherwise>
		对不起,您没有通过考试!
	</c:otherwise>
</c:choose>

7.<c:forEach>

语法:

<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>

该标签根据循环条件遍历集合 Collection 中的元素。

var 用于存储从集合中取出的元素;items 指定要遍历的集合;varStatus 用于存放集合中元素的信息。

varStatus 一共有4种状态属性,下面例子中说明:

<%@ page contentType="text/html;charset=GBK" %>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>JSTL: -- forEach标签实例</title>
</head>
<body>
<h4><c:out value="forEach实例"/></h4>
<hr>
<% 
	List a=new ArrayList();
	a.add("贝贝");
	a.add("晶晶");
	a.add("欢欢");
	a.add("莹莹");
	a.add("妮妮");
    request.setAttribute("a",a);
%>
<B><c:out value="不指定begin和end的迭代:" /></B><br>
<c:forEach var="fuwa" items="${a}">
	
	<c:out value="${fuwa}"/><br>
</c:forEach>
<B><c:out value="指定begin和end的迭代:" /></B><br>
<c:forEach var="fuwa" items="${a}" begin="1" end="3" step="2">
	
	<c:out value="${fuwa}" /><br>
</c:forEach>
<B><c:out value="输出整个迭代的信息:" /></B><br>
<c:forEach var="fuwa" items="${a}" begin="3" end="4" step="1" varStatus="s">
	
	<c:out value="${fuwa}" />的四种属性:<br>
	所在位置,即索引:<c:out value="${s.index}" /><br>
	总共已迭代的次数:<c:out value="${s.count}" /><br>
	是否为第一个位置:<c:out value="${s.first}" /><br>
	是否为最后一个位置:<c:out value="${s.last}" /><br>
</c:forEach>
</body>
</html>
效果:


8.<c:forTokens>

用于浏览字符串,并根据指定的字符串截取字符串

语法:

<c:forTokens items="stringOfTokens" delims="delimiters" [var="name" begin="begin" end="end" step="len" varStatus="statusName"]></c:forTokens>
还是看个例子吧:

<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
	<title>JSTL: -- forTokens标签实例</title>
</head>
<body>
	<h4>
		<c:out value="forToken实例" />
	</h4>
	<hr>
	<c:forTokens items="北、京、欢、迎、您" delims="、" var="c1">
		<c:out value="${c1}"></c:out>
	</c:forTokens>
	<br>
	<c:forTokens items="123-4567-8854" delims="-" var="t">
		<c:out value="${t}"></c:out>
	</c:forTokens>
	<br>
	<c:forTokens items="1*2*3*4*5*6*7" delims="*" begin="1" end="3" var="n" varStatus="s">
		<c:out value="${n}" />的四种属性:<br>
		所在位置,即索引:<c:out value="${s.index}" /><br>
		总共已迭代的次数:<c:out value="${s.count}" /><br>
		是否为第一个位置:<c:out value="${s.first}" /><br>
		是否为最后一个位置:<c:out value="${s.last}" /><br>
	</c:forTokens>
</body>
</html>
效果:


9. <c:import>

把其他静态或动态文件包含到 JSP 页面。与<jsp:include>的区别是后者只能包含同一个web应用中的文件,前者可以包含其他web应用中的文件,甚至是网络上的资源。

语法:

<c:import url="url" [context="context"] [value="value"] [scope="..."] [charEncoding="encoding"]></c:import>
<c:import url="url"  varReader="name" [context="context"][charEncoding="encoding"]></c:import>

看个例子:

 <%@ page contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
    <head>
        <title>JSTL: -- import标签实例</title>
    </head>
    <body>
        <h4>
            <c:out value="import实例" />
        </h4>
        <hr>
        <h4>
            <c:out value="绝对路径引用的实例" />
        </h4>
        <c:catch var="error1">
            <c:import url="http://www.baidu.com" />
        </c:catch>
        <c:out value="${error1}"></c:out>
        <hr>
        <h4>
            <c:out value="相对路径引用的实例,引用本应用中的文件" />
        </h4>
        <c:catch>
            <c:import url="a1.txt" charEncoding="gbk" />
        </c:catch>
        <hr>
        <h4>
            <c:out value="使用字符串输出、相对路径引用的实例,并保存在session范围内" />
        </h4>
        <c:catch var="error3">
            <c:import var="myurl" url="a1.txt" scope="session" charEncoding="gbk"></c:import>
            <c:out value="${myurl}"></c:out>
            <c:out value="${myurl}" />
        </c:catch>
        <c:out value="${error3}"></c:out>
    </body>
</html>


URL路径有个绝对路径和相对路径。

相对路径:<c:importurl="a.txt"/>那么,a.txt必须与当前文件放在同一个文件目录下。

如果以"/"开头,表示存放在应用程序的根目录下,如Tomcat应用程序的根目录文件夹为 webapps。

导入该文件夹下的 b.txt 的编写方式:<c:importurl="/b.txt">。

如果要访问webapps管理文件夹中的其他Web应用,就要用context属性。

例如访问demoProj下的index.jsp,则:<c:import url="/index.jsp" context="/demoProj"/>.

10.<c:redirect>

该标签用来实现请求的重定向。

例如,对用户输入的用户名和密码进行验证,不成功则重定向到登录页面。或者实现Web应用不同模块之间的衔接。

语法:

<c:redirect url="url" [context="context"]/>
或:
	<c:redirect url="url" [context="context"]>
		<c:param name="name1" value="value1">
    </c:redirect>
看个例子:

<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:redirect url="http://127.0.0.1:8080">
    <c:param name="uname">lihui</c:param>
    <c:param name="password">11111</c:param>
</c:redirect>
则运行后,页面跳转为:http://127.0.0.1:8080/?uname=lihui&password=11111

11.<c:url>

用于动态生成一个 String 类型的URL,可以同上个标签共同使用,也可以使用HTML的<a>标签实验超链接。

语法:

<c:url value="value" [var="name"] [scope="..."] [context="context"]>
	<c:param name="name1" value="value1">
</c:url>
或:
<c:url value="value" [var="name"] [scope="..."] [context="context"]/>
看个例子:

<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:out value="url标签使用"></c:out>
<h4>
    使用url标签生成一个动态的url,并把值存入session中.
</h4>
<hr>
<c:url value="http://127.0.0.1:8080" var="url" scope="session"></c:url>
<a href="${url}">Tomcat首页</a>
显示:



【转自】

http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html

分享到:
评论

相关推荐

    JSTL标签-讲解及实例

    JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。 JSTL目前的最新...

    JSTL详解--Core 标签库介绍

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。在 developerworks 上其新系列...

    JSP标准标签库实例

    JSTL全名JspServer Pages Standdard Tag Library(Jsp标准标签库),它是sun公司发布的一个针对JSP开发的新组件,它允许使用标签开发Jsp页面. JSTL是一个标准的已制定好的标签库,它可以应用到很多领域. 如:基本输入...

    jstl入门示例源码

    适合于初学jstl,包含jstl基本功能的编译成功的示例,轻松入门jstl。

    JavaServer Pages标准标签库

    • 用JSTL核心标签替换Struts逻辑标签。 • 用消息格式标签替换访问消息储存的scriptlet。 • 用通过JSTL SQL标签对数据库的直接调用替换JavaBean组件数据库helper。对于大多数应用程序来说,最好将对数据库的调用...

    JSP和JSTL获取服务器参数示例

    代码如下: &lt;...JSP和JSTL获取服务器参数&lt;/title&gt; &lt;/head&gt; &lt;body&gt; JSP方式 &lt;&#37; String SERVER_NAME = request.getServerName(); String SERVER_SOFTWARE = getServletContex

    JSP2.0技术手册pdf(带示例源码).zip

    7-2 核心标签库(Core tag library) 7-3 I18N 格式标签库(I18N-capable formatting tags library) 7-4 SQL 标签库(SQL tag library) 7-5 XML 标签库(XML tag library) 7-6 函数标签库(Functions tag library) 第八章...

    JSP开发技术大全 源码

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    JSP设计(第三版)

    则会对第三部分详细介绍的高级主题倍加推崇,例如如何使用流行的Apache Struts MVC(模型-视图-控制器)框架将Servlet和JavaBeans组件与JSP集成,以及如何使用JSP API开发定制标记库,在此还提供了一些实际示例,...

    JSP开发技术大全 JSP

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    jsp 开发技术大全

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    JSP设计第二版(附源码).rar

    《JSP设计(第二版)》得到了彻底的修订和更新,包括了JSP规范1.2版本中的重大变化。它包括关于JSP Standard Tag Library...最后,本书作者展示了如何用逼真的示例开发自定义标记库,读者可将其用作自己JSP库的出发点。

    xmljava系统源码-jsp-jstl-engine:javajsp&jstl模板引擎

    语法完全同jsp语法,支持java脚本和jstl标签,对于使用jstl的人来说没有任何学习成本。 零配置,不需要任何配置文件,也可以指定配置文件,配置文件简单明了。 可插拔的模块设计,模板加载方式,el引擎,运行模式均...

    JSP设计第二版(附源码)

    JSP设计第二版(附源码) 《JSP设计(第二版)》得到了彻底的修订和更新,包括了JSP规范1.2版本中的重大变化。...最后,本书作者展示了如何用逼真的示例开发自定义标记库,读者可将其用作自己JSP库的出发点。

    JSTL应用实例(EXE格式)

    JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也...

    JSP设计第二版 - 内附源码(PDF中文版)

    最后,本书作者展示了如何用逼真的示例开发自定义标记库,读者可将其用作自己JSP库的出发点。 “这是一本很完整、很全面而且非常实用的书。作者出色地将他广博的经验与人共享,因此网页开发人员得以充分利用Java...

    Ext_3.2模板的使用示例

    本人觉得Ext.Template和Ext.XTemplate模板类非常类似.Net的母板页,或者非常类似于JSP技术中jstl标准标签和EL表达式功能;但是它是一个客户端的技术。 阅读目标:需要使用模板方式来开发web应用的人员。 前置条件:...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n...

    EL与JSTL的用法(与JSP对照)

    自己整理的EL与JSTL的用法,以及常用的标签示例。中间可能会有错漏的地方,如有还望指正。

Global site tag (gtag.js) - Google Analytics