是java中的一个定制标记库集

实现了jsp页面中的代码复用,基于标签库原理,重复率较高的代码块支持复用,提高效率

书写jsp页面时可读性更强

http://archive.apache.org/dist/

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

<!—

EL表达式(Expression Language)经常与JSTL配合使用,使得JSP页面更直观,写法更简单

格式:${表达式}

".","[]"运算符:

1.通常情况下是通用的${user.name} 、${user["name"]}

2."[]"还可以用来进行集合元素中的定位${list[0].name、list[1].name}

3.包含特殊字符时必须用"[]",${user["first-name"]}是对的,而${user.first-name}是错误的

4.通过变量动态取值时必须用"[]",${user[param]},"."的写法是${user.name}无法动态取值

JSP内置对象(Page,Request,Session,Application)

EL(PageScope,RequestScope,SessionScope,ApplicationScope)

-->

<!-- EL自动类型转换

如把String转换为int,

String str_num = request.getParameter("num");

int num = Integer.parseInt(str_num);

num+=10;

EL会进行自动类型转换,只需要这样写${param.num + 10}

-->

<!--

EL运算符

算术运算符:+,-,*,/(div),%(mod)

关系运算符:==(eq),!=(ne),<(lt),>(gt),<=(le),>=(ge)

逻辑运算符:&&(and),||(or),!(not)

验证运算符:empty(验证数据是否为空,空返回true,非空返回false)

-->

<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!-- JSTL -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<jsp:useBean id="person" class="com.wzy.bean.Person"></jsp:useBean>
<!-- JSTL --> <!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>first</title>
</head>
<body> <c:out value="输出的值(常量)"></c:out>
<c:out value="${username}" default="默认值"></c:out><!-- 输出变量,如果为空,则什么都不输出 --><br />
<c:out value="1+2=${1+2}"></c:out>
<%
String name1 = "xiaoming";
request.setAttribute("username", name1);
%>
<br />
<c:out value="${empty username }"></c:out><!-- false --> <br />
<%
session.setAttribute("value1", "计算结果:");
session.setAttribute("value2", 100);
%> <c:out value="&lt${value1}" default="默认" escapeXml="false"></c:out>
<c:out value="${value2}*5="></c:out>
<c:out value="${value2*5}&gt" escapeXml=""></c:out>
<!--escapeXml=""或escapeXml="false"都可以进行转义字符操作
escapeXml="true"转义字符失效-->
<br>
<!--
set标签
1.存值到scope中,可将值以变量形式存放在指定的范围中
-->
<br>
<c:set var="today" value="12.16" scope="session"></c:set>
<c:out value="${today}"></c:out>
<br>
<c:set var="age" scope="application">20</c:set>
<c:out value="${age}"></c:out>
<!--
2.存值到javabean的属性中,需要配合target属性指定对象并且通过property属性指定要赋值给对象中的哪个属性
-->
<br>
<c:set target="${person}" property="pid" value="01"></c:set>
<c:set target="${person}" property="pname">小明</c:set>
<c:set target="${person}" property="page" value="21"></c:set>
<c:out value="${person.pid}"></c:out>
<c:out value="${person.pname}"></c:out>
<c:out value="${person.page}"></c:out> <!-- remove标签 , 移除掉某个数据-->
<c:set var="removevalue" value="hahahha"></c:set>
<c:remove var="removevalue"/>
<c:out value="${removevalue}"></c:out><br> <!-- catch标签 ,包含那些容易出错的JSTL标签,相当于javaz中的异常处理try{}catch(){}-->
<c:catch var="error">
<c:set target="aa" property="aa"></c:set>
</c:catch>
<c:out value="${error}"></c:out>
<br>
<!--if标签
同程序中的if作用相同
test属性用于存放判断的条件,一般使用EL表达式编写
var指定名称用来存放判断的结果类型为true或false
scope用来存放var属性存放的范围,不指定为默认的范围
-->
<form action="firstDemo.jsp" method="post">
<input type="text" name="score" value="${param.score001}">
<input type="submit" value="提交">
</form>
<c:if test="${param.score>=80}" var="result">
<c:out value="您的分数很好"></c:out>
</c:if>
<c:out value="${result}"></c:out> <br>
<!-- choose,when,otherwise
通常这三个标签放在一起配合使用
c:choose嵌套在c:when和c:otherwise外面作为他们的父标签来使用
其中choose和when也可以一起使用
--> <form action="firstDemo.jsp" method="post">
<input type="text" name="score02" value="输入分数">
<input type="submit" value="提交">
</form> <!-- 相当于switch语法 -->
<c:choose>
<c:when test="${param.score02>=90 && param.score02<=100}">
<c:out value="优秀"></c:out>
</c:when>
<c:when test="${param.score02>=80 && param.score02<=90}">
<c:out value="良好"></c:out>
</c:when>
<c:when test="${param.score02>=60 && param.score02<=80}">
<c:out value="及格"></c:out>
</c:when>
<c:when test="${param.score02>=0 && param.score02<=60}">
<c:out value="不及格"></c:out>
</c:when>
<c:otherwise>
<c:out value="不符合所有的要求"></c:out>
</c:otherwise>
</c:choose> <br>
<!-- forEach
根据循环条件遍历集合(Collection)中的元素
var设定变量名用于存储从集合中取出的元素(必须无默认值)
items指定要遍历的集合(必须无默认值)
begin、end用于指定遍历的起始位置和终止位置(有默认)
step指定循环的步长(有默认)
varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态
--> <%
List<String> fruits = new ArrayList<String>();
fruits.add("apple00");
fruits.add("pear01");
fruits.add("orange02");
fruits.add("banana03");
fruits.add("apple04");
fruits.add("pear05");
fruits.add("orange06");
fruits.add("banana07");
request.setAttribute("fruits", fruits);
// for (Object f : fruits) {
// System.out.print(f);
// } %>
<!-- 1.全部遍历 -->
<c:forEach var="f" items="${fruits }">
<c:out value="${f}"></c:out>
</c:forEach>
<br>
<!-- 2.部分遍历 ,取出第2个到第6个-->
<c:forEach var="f" items="${fruits}" begin="1" end="5">
<c:out value="${f}"></c:out>
</c:forEach>
<br>
<!-- 3.部分遍历 ,取出第2个到第6个,指定步长,隔一个输出一个-->
<c:forEach var="f" items="${fruits}" begin="1" end="5" step="2">
<c:out value="${f}"></c:out>
</c:forEach>
<br>
<!-- 4.部分遍历 ,取出第3个到第6个,输出元素状态-->
<c:forEach var="f" items="${fruits}" begin="2" end="5" varStatus="fru">
<c:out value="${f}的4个属性:"></c:out>
<c:out value="index属性(在列表的位置)${fru.index}"></c:out>
<c:out value="count属性(输出的位置)${fru.count}"></c:out>
<c:out value="first属性(输出的如果的第一个,为true,否则false)${fru.first}"></c:out>
<c:out value="last属性(输出的如果的最后一个,为true,否则false)${fru.last}"></c:out>
<br>
</c:forEach>
<br>
<!-- forTokens标签,截取字符串
用于浏览字符串,并根据指定的字符串将字符串截取
items指定被迭代的字符串
delims指定使用的分隔符
var指定用来存放遍历到的成员
begin指定变量的开始位置(int型,从取值0开始)
end指定遍历结束的位置(int型,默认集合中最后一个元素)
step遍历的步长(大于0的整型)
varStatus通过index,count,first,last几个状态值,描述begin和end子集中的元素的状态
-->
<c:forTokens items="1534-4564-48" delims="-" var="num" >
<c:out value="${num}"></c:out><br>
</c:forTokens> <br>
<!-- import标签
可以把其他静态或动态文件包含到本jsp页面
同jsp:include的区别为:只能包含同一个web应用中的文件。
而c:import可以包含其他web应用的文件,甚至的网络上的资源 url被导入资源的url路径
context相同服务器下其他的web工程,必须以“/”开头
var以String类型存入被包含文件的内容
Scope var变量的jsp范围
charEncoding 被导入文件的编码格式
varReader以Reader类型存储被包含文件内容
-->
<!--导入绝对路径-->
<c:catch var="err09">
<c:import url="http://www.baidu.co"></c:import>
</c:catch>
<c:out value="${err09}"></c:out> <!-- 导入相对路径文件 -->
<c:catch var="err08">
<c:import url="a.txt" charEncoding="utf-8"></c:import>
</c:catch>
<c:out value="${err08}"></c:out>
<br>
<!-- var ,Scope属性 -->
<c:catch var="err07">
<c:import url="a.txt" var="a" scope="session" charEncoding="utf-8"></c:import>
</c:catch>
<c:out value="import标签存储的a字符串变量值为:${sessionScope.a}"></c:out>
<c:out value="${err07}"></c:out>
<br>
<!-- context属性 ,把另一个web下的文件导入到本页面-->
<c:catch var="err06">
<c:import url="/err.jsp" context="/StrutsTest" charEncoding="utf-8"></c:import>
</c:catch>
<c:out value="${err06}"></c:out> <!-- redirect标签,用来实现请求的重定向
同时可以在url中加入指定的参数
url指定重定向页面的地址,可以是一个String类型的绝对地址或相对地址
context用于导入其他web应用中的页面
-->
<c:catch var="redirtErr">
<c:redirect url="second.jsp" >
<c:param name="username">name</c:param>
<c:param name="usepasswd">passwd</c:param>
</c:redirect>
</c:catch>
<c:out value="${redirtErr}"></c:out>
<br> <!-- url标签
用于动态生成一个String类型的url,可以同c:param标签共同使用
也可以使用html的a标签实现超链接
value表示url路径值
var将url路径存储在的变量中
scope var变量的范围
-->
<c:if test="${1<3 }">
<c:set var="parturl">aa</c:set>
</c:if>
<c:url value="http://127.0.0.1:8080/${parturl}" var="newurl" scope="session"></c:url>
<a href="${ newurl}">动态生成url.....</a> </body>
</html>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
this is ..... <c:out value="${param.username}"></c:out>
<c:out value="${param.usepasswd}"></c:out> <c:if test="${1<3}">
<c:set var="parturl">aa</c:set>
</c:if>
<c:url value="http://127.0.0.1:8080/${parturl}" var="newurl" scope="session"></c:url>
<a href="${newurl}">url..</a> <br>
<c:out value="你好。hello world字符串
是否包含hello:${fn:contains('你好。hello world','hello') }"></c:out><br>
<c:out value="你好。hello world字符串
是否包含aa:${fn:contains('你好。hello world','aa') }"></c:out><br> <c:out value="你好。HELLO world字符串
是否包含hello:${fn:containsIgnoreCase('你好。hello world','hello') }"></c:out><br> <c:out value="你好。HELLO world字符串ld是否在字符串结尾:
${fn:endsWith('你好。hello world','ld') }"></c:out><br>
<c:out value="你好。HELLO world字符串你是否在字符串开头:
${fn:startsWith('你好。hello world','你') }"></c:out> <book>escapeXML</book><br>
<c:out value="${fn:escapeXml('<book>escapeXML</book>')}"></c:out><br>
<c:out value="<book>escapeXML</book>"></c:out><br> <c:out value="hello world中,rl出现的index值:
${fn:indexOf('hello world中','rl')}"></c:out> </body>
</html>

  

JSTL基础的更多相关文章

  1. 成为JAVA软件开发工程师要学哪些东西

    2010-04-22 15:34 提问者采纳 Java EE(旧称j2ee)   第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架: *第二阶段:java界面编程,包括AW ...

  2. Java从入门到精通——基础篇之JSTL标签

    一.语言基础 EL(Expression Language)表达式,目的:为了使JSP写起来更加简单.提供了在 JSP 中简化表达式的方法. 二.分类 核心标签库:提供条件判断.属性访问.URL处理及 ...

  3. jsp基础之 jstl

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  4. maven初始搭建一个基础项目(spring mvc+spring+jdbc mysql+jstl)

    技术选型: 一.项目搭建: 1)创建maven项目 (我博客里面有介绍) 选择aptach的maven-archetype-webapp 填入groupIDhe artifactId等 确认项目名称 ...

  5. 一、jsp和Servlet基础理论及jstl和EL表达式用法

    1.题外话:使用JSP有近一年半的时间了,但是开发量不大.昨天部门突然让做个读取EXCLE文件,然后在前台页面进行展示.并通过点击查看按钮可以对每条明细记录进行跳转后进行详情查看,并按照页面原型进行页 ...

  6. jsp基础、el技术、jstl标签、javaEE的开发模式

    一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...

  7. jstl标签库基础教程及其使用代码(一)。

    概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现.鉴于此,出现了 JSTL ( JSP Sta ...

  8. jstl标签库基础教程及其使用代码

    概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现.鉴于此,出现了 JSTL ( JSP Sta ...

  9. JSP 基础之 JSTL <c:forEach>用法

    在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...

随机推荐

  1. about this

    var name="window name"; var obj={ name:"obj name", getNameFunc:function(){ //thi ...

  2. Day Tip:SharePoint 2013 *.ascx.g.cs文件

    在开发SharePoint2013的WebPart时,会产生一个*.ascx.g.cs文件.如果用TFS管理源代码经常遇到这个文件丢失.这让人很困扰,如果丢失了请在如下图中添加如下代码:       ...

  3. elipse + maven + tomcat + springMVC环境搭建

    1. java JDK安装 http://jingyan.baidu.com/article/b24f6c82c989da86bfe5dab2.html 2.eclipse安装 http://jing ...

  4. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q88-Q91)

    Question 88  You are designing a SharePoint 2010 application that stores data in a list named Base L ...

  5. CocoaPods常用终端命令及Profile文件简单介绍

    Pod常用终端命令 pod init 创建pod文件 pod install 开始安装第三方框架,如果网上有更新,会安装最新的 pod install --verbose--no-repo-updat ...

  6. Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow

    这是一张QQ空间说说详情的截图. 分析: .点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 .当该区域出现的时候,详情界面便灰了,也说成透明度变化了 .当任意选了一个 ...

  7. 从零开始一个iOS项目(一)——基本准备以及cocopods的安装

    项目开发分为:独立开发和迭代开发,我主要讲独立开发,若读者是迭代开发,希望公司的代码一定要规范,便能省去许多麻烦,也能从中获益,闲时也可接些外包,赚一些外快,也是美差,然而独立开发最能锻炼人的能力. ...

  8. CSS3 background-size属性

    请复制粘贴,图片请自带 <!DOCTYPE html > <html > <head> <meta charset="utf-8"> ...

  9. java 某字符串在另一字符串中是否存在

    boolean a = 字符串a.contains("字符串b");

  10. [gist]在浏览器里免查看源代码格式化var_dump输出

    Gist Link /** * 格式化var_dump输出... * 我勒个去..早怎么没想到..就加了个pre啊,, */ function var_dump_html($var){ echo &q ...