核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作

功能分类:

1. 基本标签:

  <c:out>:输出属性内容

  <c:set>:设置属性内容

  <c:remove>:删除指定属性

  <c:catch>:异常处理

2. 流程控制标签:

  <c:if>:条件判断

  <c:choose>:多条件判断,可以设置<c:when>, <c:otherwise>标签

3. 迭代标签:

  <c:forEach>:输出数组,集合  

  <c:forTokens>:字符串拆分及输出操作

4. 包含标签:<c:import> 将一个指定的路径包含到当前页进行显示

5. 生成URL标签:<c:url>

6. 客户端跳转: <c:redirect>

  • <c:out>:输出属性内容:

<c:out value="打印的内容" [escapeXml="true/false"] [default="默认值"]/>

<c:out value="打印的内容" [escapeXml="true/false"]>默认值</c:out>

escapeXml:是否转换字符串,例如将">"转换成&gt,默认为true

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  3. <html>
  4. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  5. <body>
  6. <%
  7. pageContext.setAttribute("info","<www.MLDN.cn>") ;
  8. %>
  9. <h3>属性存在:<c:out value="${info}"/></h3>
  10. <h3>属性不存在:<c:out value="${ref}" default="没有此内容!"/></h3>
  11. <h3>属性存在:<c:out value="${ref}">没有此内容!</c:out></h3>
  12. </body>
  13. </html>

运行程序如果出现错误:java.lang.NoClassDefFoundError: javax/el/ELResolver

到apache-tomcat/lib目录下,拷贝el-api.jar放到D:\Java\jdk1.6.0_11\jre\lib\ext下即可

若运行里出现以下信息:

org.apache.jasper.compiler.TldLocationsCache tldScanJarINFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

可以修改D:\apache-tomcat-7.0.57\conf\logging.properties文件,将

org.apache.jasper.compiler.TldLocationsCache.level = FINE  注释去掉,调整log等级

  •  <c:set>:设置属性内容

设置属性:

<c:set var="属性名称"  value="属性内容" [scope="page/request/session/application"]/>

<c:set var="属性名称" [scope="page/request/session/application"]/>属性内容</c:set>

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  3. <html>
  4. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  5. <body>
  6. <c:set var="info" value="Hello MLDN!" scope="request"/>
  7. <h3>属性内容:${info}</h2>
  8. </body>
  9. </html>

设置对象:

<c:set value="属性内容"  target="属性对象" property="属性名称"/>

<c:set target="属性对象" property="属性名称"/>属性内容</c:set>

通过<c:set>标签还可以进行已有JavaBean的复制操作:

javabean文件:

  1. package org.lxh.jstldemo.vo ;
  2. public class SimpleInfo {
  3. private String content ;
  4. public String getContent(){
  5. return this.content ;
  6. }
  7. public void setContent(String content){
  8. this.content = content ;
  9. }
  10. }

jsp文件:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="org.lxh.jstldemo.vo.SimpleInfo"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <%
  8. SimpleInfo sim = new SimpleInfo() ;
  9. request.setAttribute("simple",sim) ;
  10. %>
  11. <c:set value="Hello MLDN!" target="${simple}" property="content"/>
  12. <h3>属性内容:${simple.content}</h2>
  13. </body>
  14. </html>
  • <c:remove>:删除指定属性

<c:remove var="属性名称" [scope="page/request/session/application"/]>

jsp例子:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  3. <html>
  4. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  5. <body>
  6. <c:set var="info" value="Hello MLDN!!" scope="request"/>
  7. <c:remove var="info" scope="request"/>
  8. <h3>属性内容:${info}</h3>
  9. </body>
  10. </html>
  • <c:catch>:异常处理

<c:catch [var="保存异常信息的属性名称"]>有可能发生异常的语句</c:catch>

jsp文件:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  3. <html>
  4. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  5. <body>
  6. <c:catch var="errmsg">
  7. <%
  8. int result = 10 / 0 ;
  9. %>
  10. </c:catch>
  11. <h3>异常信息:${errmsg}</h3>
  12. </body>
  13. </html>
  • <c:if>:条件判断 

<c:if test="判断条件" var="储存判断结果" [scope="page/request/session/application"]/>

<c:if test="判断条件" var="储存判断结果" [scope="page/request/session/application"]>满足条件时执行的语句

</c:if>

jsp例子:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  3. <html>
  4. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  5. <body>
  6. <c:if test="${param.ref=='mldn'}" var="res1" scope="page">
  7. <h3>欢迎${param.ref}光临</h3>
  8. </c:if>
  9. <c:if test="${10<30}" var="res2">
  10. <h3>10比30小</h3>
  11. </c:if>
  12. </body>
  13. </html>
  • <c:choose>:多条件判断

<c:choose>标签体内容(<c:when>, <c:otherwise>) </c:choose>

<c:when test="判断条件">满足条件时执行的语句</c:when>

<c:otherwise>当所有<c:when>条件不满足时,执行本内容</c:otherwise>

jsp例子:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  3. <html>
  4. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  5. <body>
  6. <%
  7. pageContext.setAttribute("num",10) ;
  8. %>
  9. <c:choose>
  10. <c:when test="${num1==10}">
  11. <h3>num属性的内容是10!</h3>
  12. </c:when>
  13. <c:when test="${num1==20}">
  14. <h3>num属性的内容是20!</h3>
  15. </c:when>
  16. <c:otherwise>
  17. <h3>没有一个条件满足!</h3>
  18. </c:otherwise>
  19. </c:choose>
  20. </body>
  21. </html>
  • <c:forEach>:输出数组,集合 

<c:forEach [var="每一个对象的属性名称"] items=“集合” varStatus=“保存相关成员信息” [begin="集合的开始输出位置"] [end="集合的结束输出位置"] [step="每次增长的步长"]> 具体的操作代码

</c:forEach>

例子1:输出数组:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  3. <html>
  4. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  5. <body>
  6. <%
  7. String info[] = {"MLDN","LiXingHua","www.MLDNJAVA.cn"} ;
  8. pageContext.setAttribute("ref",info) ;
  9. %>
  10. <h3>输出全部:
  11. <c:forEach items="${ref}" var="mem">
  12. ${mem}、
  13. </c:forEach></h3>
  14. <h3>输出全部(间隔为2):
  15. <c:forEach items="${ref}" var="mem" step="2">
  16. ${mem}、
  17. </c:forEach></h3>
  18. <h3>输出前两个:
  19. <c:forEach items="${ref}" var="mem" begin="0" end="1">
  20. ${mem}、
  21. </c:forEach></h3>
  22. </body>
  23. </html>

结果:

  1. 输出全部: MLDN LiXingHua www.MLDNJAVA.cn
  2.  
  3. 输出全部(间隔为2): MLDN www.MLDNJAVA.cn
  4.  
  5. 输出前两个: MLDN LiXingHua

输出list:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="java.util.*"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <%
  8. List all = new ArrayList() ;
  9. all.add("MLDN") ;
  10. all.add("LiXingHua") ;
  11. all.add("www.MLDNJAVA.cn") ;
  12. pageContext.setAttribute("ref",all) ;
  13. %>
  14. <h3>输出全部:
  15. <c:forEach items="${ref}" var="mem">
  16. ${mem}、
  17. </c:forEach></h3>
  18. </body>
  19. </html>

结果:

  1. 输出全部: MLDN LiXingHua www.MLDNJAVA.cn

输出map:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="java.util.*"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <%
  8. Map map = new HashMap() ;
  9. map.put("mldn","www.MLDNJAVA.cn") ;
  10. map.put("lxh","LiXingHua") ;
  11. pageContext.setAttribute("ref",map) ;
  12. %>
  13. <c:forEach items="${ref}" var="mem">
  14. <h3>${mem.key} --> ${mem.value}</h3>
  15. </c:forEach>
  16. </body>
  17. </html>

结果:

  1. mldn --> www.MLDNJAVA.cn
  2.  
  3. lxh --> LiXingHua
  • <c:forTokens>:字符串拆分及输出操作

<c:forTokens items="输出的字符串" delims="字符串分隔符" [var="存放每一个字符串变量"] [varStatus="存放当前对象的相关信息"] [begin="输出位置"][end="结束位置"][step="输出间隔"]>

标签体内容

</c:forTokens>

类似String类中的split()方法

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="java.util.*"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <%
  8. String info = "www.MLDNJAVA.cn" ;
  9. pageContext.setAttribute("ref",info) ;
  10. %>
  11. <h3>拆分结果是:
  12. <c:forTokens items="${ref}" delims="." var="con">
  13. ${con}、
  14. </c:forTokens></h3>
  15. <h3>拆分结果是:
  16. <c:forTokens items="Li:Xing:Hua" delims=":" var="con">
  17. ${con}、
  18. </c:forTokens></h3>
  19. </body>
  20. </html>

结果如下:

  1. 拆分结果是: www MLDNJAVA cn
  2.  
  3. 拆分结果是: Li Xing Hua
  •  包含标签:<c:import>

<c:import url="包含地址的URL" [context="上下文路径"] [var="保存内容的属性名称"] [scope="page/request/session/application"] [charEncoding="字符编码"] [varReader="以Reader方式读取内容"]>

标签体内容

[<c:param name="参数名称" value=“参数内容”/>]

</c:import>

<c:import>与<jsp:include>类似,区别在于,<c:import>可以包含外部的页面,<jsp:include>只能包含本项目中的文件

包含外部页面的例子:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="java.util.*"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <c:import url="http://www.mldn.cn" charEncoding="UTF-8"/>
  8. </body>
  9. </html>

上述包含只包含文字,而不能包含图片等信息

包含内部文件的例子:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="java.util.*"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <c:import url="param.jsp" charEncoding="UTF-8">
  8. <c:param name="name" value="LiXingHua"/>
  9. <c:param name="url" value="www.MLDNJAVA.cn"/>
  10. </c:import>
  11. </body>
  12. </html>

param.jsp:

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <h3>name参数:${param.name}</h3>
  3. <h3>url参数:${param.url}</h3>
  •  生成URL标签:<c:url>

<c:url value="操作的url" [context="上下文路径"] [var=“保存的属性名称”] [scope="page/request/session/application"]/>

<c:url value="操作的url" [context="上下文路径"] [var=“保存的属性名称”] [scope="page/request/session/application"]>

  <c:param name="参数名称" value=“参数内容”/>

</c:url>

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="java.util.*"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <c:url value="http://www.mldnjava.cn" var="urlinfo">
  8. <c:param name="author" value="李兴华"/>
  9. <c:param name="logo" value="mldn"/>
  10. </c:url>
  11. <a href="${urlinfo}">新的地址</a>
  12. </body>
  13. </html>

以上相当于帮主用户自动进行地址重写,如果传递的是中文,会帮助用户自动进行编码

跳转到以下页面:

  1. http://www.mldnjava.cn/?author=%c0%ee%d0%cb%bb%aa&logo=mldn
  • 客户端跳转: <c:redirect>

<c:redirect url="跳转的地址" context="上下文路径"/>

<c:redirect url="跳转的地址" context="上下文路径">

  <c:param name="参数名称" value="参数内容"/>

</c:redirect>

response.sendRedirect()属于jsp代码,既然是jsp代码,则肯定要使用scriptlet进行包含,而一个jsp页面最好不要包含任何的scriptlet代码,那么就可以通过标签来完成

  1. <%@ page contentType="text/html" pageEncoding="GBK"%>
  2. <%@ page import="java.util.*"%>
  3. <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
  4. <html>
  5. <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
  6. <body>
  7. <c:redirect url="param.jsp">
  8. <c:param name="name" value="LiXingHua"/>
  9. <c:param name="url" value="www.MLDNJAVA.cn"/>
  10. </c:redirect>
  11. </body>
  12. </html>

可以发现,JSTL和一些基础开发一样,从开发上讲,判断,迭代操作使用较多。

其他的JSTL标签使用较少,C标签最重要,其中if,forEach最重要!

JSP标准标签库(JSTL)--核心标签库 c的更多相关文章

  1. 小峰servlet/jsp(6)jstl核心标签库

    一.引入jstl 需要jstl.jar;standard.jar; 二.jstl核心标签库: c:out         内容输出标签; c:set      用来设置4种属性范围值的标签: c:re ...

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

    JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...

  3. jsp之jstl核心标签库

    JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...

  4. Java Servlet(十):JSTL核心标签库

    JSTL全名称:JaveServer Pages Standard Tag Library.JSTL是由JCP(Java Community Process)所定制的标准规范,它主要提供给Java W ...

  5. JSTL核心标签库使用

    JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...

  6. Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

    前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...

  7. JSTL、JSTL核心标签库——流程处理标签

    JSTL环境 JSTL是另一个标准规范,并非在JSP的规范中,所以必须另外下载JSTL实现. 要使用JSTL标签库,必须在JSP网页上使用taglib指示元素定义前置名称与uri参考.例如,引入JST ...

  8. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  9. JSTL 核心标签库 使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

随机推荐

  1. Compile Time Assertion..

    The most seen assertion are during runtime, but this one is at compile time, to give the error more ...

  2. do-while、while、for做循环算5的阶乘

    #include "stdio.h" void main() { ,r=; do { r*=d; d++; }); printf("5的阶乘5!为:%d",r) ...

  3. POJ 2536 Gopher II

    二分图的最大匹配 地鼠内部和地鼠洞内部都是没有边相连的,那么就可以看成一个二分图.地鼠如果可以跑到那个地鼠洞,就连一条边,然后跑二分图的最大匹配,最后地鼠的数量减去最大匹配数就是答案. #includ ...

  4. VBS调用windows api函数(postmessage)实现后台发送按键脚本

    '=========================================================================='' VBScript Source File - ...

  5. 用Replace Pioneer 提取正则内容

    推荐用软件Replace Pioneer完成,支持正则表达式和文本替换,提取,很灵活容易. 以下举例说明怎样把<a href 和 </a>之间的内容提取出来,其他的全部删除. 1. ...

  6. ASP.NET弹出提示点击确定之后再跳转页面的方法

    //ASP.NET弹出提示点击确定之后再跳转页面的方法 //弹出了提示并且通过location.href转到了DeskTop.aspx页面 Response.Write("<scrip ...

  7. git分支--branch

    分支创建: $ git branch testing 显示分支: $ git branch iss53 * master testing 如果需要查看每一个分支的最后一次提交 $ git branch ...

  8. python datetime时间差

    import datetime import time d1 = datetime.datetime(2005, 2, 16) d2 = datetime.datetime(2004, 12, 31) ...

  9. form异步无刷新提交,提交后可以显示弹出框,否则弹出框会被刷新不见,使用 preventDefault

    出错点:确认按钮上.加onclick事件.每次点击都会追加给form追加on监听方法.累加on方法,重复提交 suppress_exception:true 阻止异常 (百度推送 jdk) 向下按 p ...

  10. wamp服务器

    wamp2.5会出现的问题,是因为WampServer2.5内置的是PHP5.5,而PHP5.5 环境是基于VC11的编译脚本下生成的,所以需要安装Visual Studio 2012 VC 11 v ...