JSP标准标签库(JSTL)--核心标签库 c
核心标签库是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:是否转换字符串,例如将">"转换成>,默认为true
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <%
- pageContext.setAttribute("info","<www.MLDN.cn>") ;
- %>
- <h3>属性存在:<c:out value="${info}"/></h3>
- <h3>属性不存在:<c:out value="${ref}" default="没有此内容!"/></h3>
- <h3>属性存在:<c:out value="${ref}">没有此内容!</c:out></h3>
- </body>
- </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>
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:set var="info" value="Hello MLDN!" scope="request"/>
- <h3>属性内容:${info}</h2>
- </body>
- </html>
设置对象:
<c:set value="属性内容" target="属性对象" property="属性名称"/>
<c:set target="属性对象" property="属性名称"/>属性内容</c:set>
通过<c:set>标签还可以进行已有JavaBean的复制操作:
javabean文件:
- package org.lxh.jstldemo.vo ;
- public class SimpleInfo {
- private String content ;
- public String getContent(){
- return this.content ;
- }
- public void setContent(String content){
- this.content = content ;
- }
- }
jsp文件:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="org.lxh.jstldemo.vo.SimpleInfo"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <%
- SimpleInfo sim = new SimpleInfo() ;
- request.setAttribute("simple",sim) ;
- %>
- <c:set value="Hello MLDN!" target="${simple}" property="content"/>
- <h3>属性内容:${simple.content}</h2>
- </body>
- </html>
- <c:remove>:删除指定属性
<c:remove var="属性名称" [scope="page/request/session/application"/]>
jsp例子:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:set var="info" value="Hello MLDN!!" scope="request"/>
- <c:remove var="info" scope="request"/>
- <h3>属性内容:${info}</h3>
- </body>
- </html>
- <c:catch>:异常处理
<c:catch [var="保存异常信息的属性名称"]>有可能发生异常的语句</c:catch>
jsp文件:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:catch var="errmsg">
- <%
- int result = 10 / 0 ;
- %>
- </c:catch>
- <h3>异常信息:${errmsg}</h3>
- </body>
- </html>
- <c:if>:条件判断
<c:if test="判断条件" var="储存判断结果" [scope="page/request/session/application"]/>
<c:if test="判断条件" var="储存判断结果" [scope="page/request/session/application"]>满足条件时执行的语句
</c:if>
jsp例子:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:if test="${param.ref=='mldn'}" var="res1" scope="page">
- <h3>欢迎${param.ref}光临</h3>
- </c:if>
- <c:if test="${10<30}" var="res2">
- <h3>10比30小</h3>
- </c:if>
- </body>
- </html>
- <c:choose>:多条件判断
<c:choose>标签体内容(<c:when>, <c:otherwise>) </c:choose>
<c:when test="判断条件">满足条件时执行的语句</c:when>
<c:otherwise>当所有<c:when>条件不满足时,执行本内容</c:otherwise>
jsp例子:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <%
- pageContext.setAttribute("num",10) ;
- %>
- <c:choose>
- <c:when test="${num1==10}">
- <h3>num属性的内容是10!</h3>
- </c:when>
- <c:when test="${num1==20}">
- <h3>num属性的内容是20!</h3>
- </c:when>
- <c:otherwise>
- <h3>没有一个条件满足!</h3>
- </c:otherwise>
- </c:choose>
- </body>
- </html>
- <c:forEach>:输出数组,集合
<c:forEach [var="每一个对象的属性名称"] items=“集合” varStatus=“保存相关成员信息” [begin="集合的开始输出位置"] [end="集合的结束输出位置"] [step="每次增长的步长"]> 具体的操作代码
</c:forEach>
例子1:输出数组:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <%
- String info[] = {"MLDN","LiXingHua","www.MLDNJAVA.cn"} ;
- pageContext.setAttribute("ref",info) ;
- %>
- <h3>输出全部:
- <c:forEach items="${ref}" var="mem">
- ${mem}、
- </c:forEach></h3>
- <h3>输出全部(间隔为2):
- <c:forEach items="${ref}" var="mem" step="2">
- ${mem}、
- </c:forEach></h3>
- <h3>输出前两个:
- <c:forEach items="${ref}" var="mem" begin="0" end="1">
- ${mem}、
- </c:forEach></h3>
- </body>
- </html>
结果:
- 输出全部: MLDN、 LiXingHua、 www.MLDNJAVA.cn、
- 输出全部(间隔为2): MLDN、 www.MLDNJAVA.cn、
- 输出前两个: MLDN、 LiXingHua、
输出list:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="java.util.*"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <%
- List all = new ArrayList() ;
- all.add("MLDN") ;
- all.add("LiXingHua") ;
- all.add("www.MLDNJAVA.cn") ;
- pageContext.setAttribute("ref",all) ;
- %>
- <h3>输出全部:
- <c:forEach items="${ref}" var="mem">
- ${mem}、
- </c:forEach></h3>
- </body>
- </html>
结果:
- 输出全部: MLDN、 LiXingHua、 www.MLDNJAVA.cn、
输出map:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="java.util.*"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <%
- Map map = new HashMap() ;
- map.put("mldn","www.MLDNJAVA.cn") ;
- map.put("lxh","LiXingHua") ;
- pageContext.setAttribute("ref",map) ;
- %>
- <c:forEach items="${ref}" var="mem">
- <h3>${mem.key} --> ${mem.value}</h3>
- </c:forEach>
- </body>
- </html>
结果:
- mldn --> www.MLDNJAVA.cn
- lxh --> LiXingHua
- <c:forTokens>:字符串拆分及输出操作
<c:forTokens items="输出的字符串" delims="字符串分隔符" [var="存放每一个字符串变量"] [varStatus="存放当前对象的相关信息"] [begin="输出位置"][end="结束位置"][step="输出间隔"]>
标签体内容
</c:forTokens>
类似String类中的split()方法
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="java.util.*"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <%
- String info = "www.MLDNJAVA.cn" ;
- pageContext.setAttribute("ref",info) ;
- %>
- <h3>拆分结果是:
- <c:forTokens items="${ref}" delims="." var="con">
- ${con}、
- </c:forTokens></h3>
- <h3>拆分结果是:
- <c:forTokens items="Li:Xing:Hua" delims=":" var="con">
- ${con}、
- </c:forTokens></h3>
- </body>
- </html>
结果如下:
- 拆分结果是: www、 MLDNJAVA、 cn、
- 拆分结果是: 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>只能包含本项目中的文件
包含外部页面的例子:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="java.util.*"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:import url="http://www.mldn.cn" charEncoding="UTF-8"/>
- </body>
- </html>
上述包含只包含文字,而不能包含图片等信息
包含内部文件的例子:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="java.util.*"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:import url="param.jsp" charEncoding="UTF-8">
- <c:param name="name" value="LiXingHua"/>
- <c:param name="url" value="www.MLDNJAVA.cn"/>
- </c:import>
- </body>
- </html>
param.jsp:
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <h3>name参数:${param.name}</h3>
- <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>
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="java.util.*"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:url value="http://www.mldnjava.cn" var="urlinfo">
- <c:param name="author" value="李兴华"/>
- <c:param name="logo" value="mldn"/>
- </c:url>
- <a href="${urlinfo}">新的地址</a>
- </body>
- </html>
以上相当于帮主用户自动进行地址重写,如果传递的是中文,会帮助用户自动进行编码
跳转到以下页面:
- 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代码,那么就可以通过标签来完成
- <%@ page contentType="text/html" pageEncoding="GBK"%>
- <%@ page import="java.util.*"%>
- <%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
- <html>
- <head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
- <body>
- <c:redirect url="param.jsp">
- <c:param name="name" value="LiXingHua"/>
- <c:param name="url" value="www.MLDNJAVA.cn"/>
- </c:redirect>
- </body>
- </html>
可以发现,JSTL和一些基础开发一样,从开发上讲,判断,迭代操作使用较多。
其他的JSTL标签使用较少,C标签最重要,其中if,forEach最重要!
JSP标准标签库(JSTL)--核心标签库 c的更多相关文章
- 小峰servlet/jsp(6)jstl核心标签库
一.引入jstl 需要jstl.jar;standard.jar; 二.jstl核心标签库: c:out 内容输出标签; c:set 用来设置4种属性范围值的标签: c:re ...
- 【JSP】JSTL核心标签库的使用方法和示例
JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...
- jsp之jstl核心标签库
JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...
- Java Servlet(十):JSTL核心标签库
JSTL全名称:JaveServer Pages Standard Tag Library.JSTL是由JCP(Java Community Process)所定制的标准规范,它主要提供给Java W ...
- JSTL核心标签库使用
JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...
- Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库
前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...
- JSTL、JSTL核心标签库——流程处理标签
JSTL环境 JSTL是另一个标准规范,并非在JSP的规范中,所以必须另外下载JSTL实现. 要使用JSTL标签库,必须在JSP网页上使用taglib指示元素定义前置名称与uri参考.例如,引入JST ...
- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- JSTL 核心标签库 使用
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
随机推荐
- Compile Time Assertion..
The most seen assertion are during runtime, but this one is at compile time, to give the error more ...
- do-while、while、for做循环算5的阶乘
#include "stdio.h" void main() { ,r=; do { r*=d; d++; }); printf("5的阶乘5!为:%d",r) ...
- POJ 2536 Gopher II
二分图的最大匹配 地鼠内部和地鼠洞内部都是没有边相连的,那么就可以看成一个二分图.地鼠如果可以跑到那个地鼠洞,就连一条边,然后跑二分图的最大匹配,最后地鼠的数量减去最大匹配数就是答案. #includ ...
- VBS调用windows api函数(postmessage)实现后台发送按键脚本
'=========================================================================='' VBScript Source File - ...
- 用Replace Pioneer 提取正则内容
推荐用软件Replace Pioneer完成,支持正则表达式和文本替换,提取,很灵活容易. 以下举例说明怎样把<a href 和 </a>之间的内容提取出来,其他的全部删除. 1. ...
- ASP.NET弹出提示点击确定之后再跳转页面的方法
//ASP.NET弹出提示点击确定之后再跳转页面的方法 //弹出了提示并且通过location.href转到了DeskTop.aspx页面 Response.Write("<scrip ...
- git分支--branch
分支创建: $ git branch testing 显示分支: $ git branch iss53 * master testing 如果需要查看每一个分支的最后一次提交 $ git branch ...
- python datetime时间差
import datetime import time d1 = datetime.datetime(2005, 2, 16) d2 = datetime.datetime(2004, 12, 31) ...
- form异步无刷新提交,提交后可以显示弹出框,否则弹出框会被刷新不见,使用 preventDefault
出错点:确认按钮上.加onclick事件.每次点击都会追加给form追加on监听方法.累加on方法,重复提交 suppress_exception:true 阻止异常 (百度推送 jdk) 向下按 p ...
- wamp服务器
wamp2.5会出现的问题,是因为WampServer2.5内置的是PHP5.5,而PHP5.5 环境是基于VC11的编译脚本下生成的,所以需要安装Visual Studio 2012 VC 11 v ...