JSTL学习(一)
来源:互联网 发布:微博粉丝数据分析 编辑:程序博客网 时间:2024/06/07 12:39
首先了解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" %>
注意:需要将jstl.jar包和standard.jar包拷贝到lib目录
下面对各个标签进行说明:
1、<c:out>
它用来显示数据对象(字符串、表达式)的内容和结果
java脚本为:<% out.print("test") %>或者<%="test" %>
JSTL标签:<c:out value="test">
举例:
<body><c:out value=" hello, i am JSTL." escapeXml="true" default="default"></c:out><br /><c:out value=" hello, i am JSTL." escapeXml="false" default="default"></c:out><br /><c:out value="${null}" escapeXml="true" default="default"></c:out><br /><c:out value="${null}" escapeXml="false">when the value is null, it will out the default.</c:out><br /></body>
页面显示:
hello, i am JSTL.
hello, i am JSTL.
default
when the value is null, it will out the default.
注意:
<c:out value="${null}" escapeXml="false" default="default">when the value is null, it will out the default.</c:out><br />这样写会报错:org.apache.jasper.JasperException:
escapeXml表示是否过滤为xml文档,true表示不解析,输出原字符串,false表示解析出内容。
2、<c:set>
它用来将变量存取于jsp范围中或javabean的属性中。
举例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page import="java.util.*;" %><<jsp:useBean id="person" class="com.javabean.Person"></jsp:useBean><!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>JSTL</title></head><body><c:set value="Jack" var="name1" scope="session" ></c:set><c:set var="name2" scope="session">Tom</c:set><c:set value="Jerry" target="${person}" property="name"></c:set><c:set target="${person}" property="age">22</c:set><li>session中取值:${seesionScope.name1}</li><li>session中取值:${seesionScope.name2}</li><li>bean中取值name:<c:out value="${person.name }"></c:out></li><li>bean中取值age:<c:out value="${person.age }"></c:out></li></body></html>
页面输出:
3、<c:remove>
它表示一出指定范围内的变量,使用语法:
<c:remove var="变量名" [scope="page|request|session|application"]></c:remove>
4、<c:catch>
它用于处理jsp页面中出现的异常,并储藏异常信息。语法:
<c:catch var="name">
容易产生异常的代码
</c:catch>
若出现异常,则异常信息会储藏在变量name里面。
5、<c:if>
它表示条件控制标签,语法:
<c:if test="条件" var="name" [scope="page|request|session|application"]></c:if>
举例:
<c:if test="${person.name == 'Jerry' }" var="ifName"></c:if><c:out value="ifName的值:${ifName }" escapeXml="false"></c:out><br/><c:if test="${person.name == 'Jerry' }"><c:out value=" name is Jerry..." escapeXml="false"></c:out><br/></c:if>
页面输出:
ifName的值:true
name is Jerry...
6、<c:choose>、<c:when>、<c:otherwise>这三个标签嵌套使用,第一个标签在最外层,最后一个标签在嵌套中只能使用一次。
举例:
<c:set var="score">44</c:set><c:choose><c:when test="${score >= 90 && score <= 100 }"><c:out value="成绩优异" escapeXml="false"></c:out></c:when><c:when test="${score >= 70 && score < 90 }"><c:out value="成绩良好" escapeXml="false"></c:out></c:when><c:when test="${score >= 60 && score < 70 }"><c:out value="成绩及格" escapeXml="false"></c:out></c:when><c:when test="${score >= 0 && score < 60 }"><c:out value="成绩不及格" escapeXml="false"></c:out></c:when><c:otherwise><c:out value="成绩有误" escapeXml="false"></c:out></c:otherwise></c:choose>
页面输出:
成绩不及格
7、<c:forEach>
它表示遍历集合Collection中的元素,语法:
<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>
其中,var用于存储从集合中取出元素,items指定要遍历的集合,varStatus用于存放集合中元素的信息,一共有四种状态属性,begin、end、step分别表示遍历集合从begin开始,到end结束,步长是step,下标从0开始。
举例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page import="java.util.*;" %><!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>JSTL2</title></head><body><%List list = new ArrayList();list.add("张三");list.add("李四");list.add("王五");list.add("刘六");list.add("赵七");request.setAttribute("list", list);%><b>不指定begin和end遍历</b><br /><c:forEach var="item" items="${list }"><c:out value="${item }"></c:out><br /></c:forEach><b>指定begin和end遍历</b><br /><c:forEach var="item" items="${list }" begin="0" end="4" step="2"><c:out value="${item }"></c:out><br /></c:forEach><b>输出迭代信息</b><br /><c:forEach var="item" items="${list }" begin="2" end="4" step="1" varStatus="s"><c:out value="${item }"></c:out>的四种属性:<br />所在位置(索引):<c:out value="${s.index }"></c:out><br />总共迭代次数:<c:out value="${s.count }"></c:out><br />是否为第一个位置:<c:out value="${s.first }"></c:out><br />是否为最后一个位置:<c:out value="${s.last }"></c:out><br /></c:forEach></body></html>
页面输出:
不指定begin和end遍历
张三
李四
王五
刘六
赵七
指定begin和end遍历
张三
王五
赵七
输出迭代信息
王五的四种属性:
所在位置(索引):2
总共迭代次数:1
是否为第一个位置:true
是否为最后一个位置:false
刘六的四种属性:
所在位置(索引):3
总共迭代次数:2
是否为第一个位置:false
是否为最后一个位置:false
赵七的四种属性:
所在位置(索引):4
总共迭代次数:3
是否为第一个位置:false
是否为最后一个位置:true
8、<c:forTokens>
用来浏览字符串,并根据指定的字符串截取字符串。语法:
<c:forTokens items="stringOfTokens" delims="delimiters" [var="name" begin="begin" end="end" step="len" varStatus="statusName"]></c:forTokens>
items表示需要截取的字符串,delims表示截取字符串中的哪些字符,多个字符可用逗号隔开。
<c:forTokens items="我*是*一*个*程*序*员" delims="*" var="test1"><c:out value="${test1 }"></c:out></c:forTokens><br /><c:forTokens items="123-334-544-344-234" delims="-" var="test2"><c:out value="${test2 }"></c:out></c:forTokens><br /><c:forTokens items="我*是*一*个*程*序*员" delims="*" var="test1" begin="1" end="3" step="2" varStatus="s"><c:out value="${test1 }"></c:out>的四种属性:<br />所在位置(索引):<c:out value="${s.index }"></c:out><br />总共迭代次数:<c:out value="${s.count }"></c:out><br />是否为第一个位置:<c:out value="${s.first }"></c:out><br />是否为最后一个位置:<c:out value="${s.last }"></c:out><br /></c:forTokens>
页面输出:
我 是 一 个 程 序 员
123 334 544 344 234
是的四种属性:
所在位置(索引):1
总共迭代次数:1
是否为第一个位置:true
是否为最后一个位置:false
个的四种属性:
所在位置(索引):3
总共迭代次数:2
是否为第一个位置:false
是否为最后一个位置:true
9、URL操作标签
(1)、<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 language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@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>JSTL2</title></head><body><c:out value="引入百度网络页面"></c:out><br /><c:catch var="error1"><c:import url="http://www.baidu.com"></c:import></c:catch><c:out value="${error1 }"></c:out><c:out value="相对路径的文件"></c:out><br /><c:catch var="error2"><c:import url="test.txt" charEncoding="UTF-8"></c:import></c:catch><br /><c:out value="${error2 }"></c:out><c:out value="以字符串输出相对路径文件内容,并保存在session中"></c:out><br /><c:catch var="error2"><c:import url="test.txt" scope="session" var="my_test" charEncoding="UTF-8"></c:import>文件中的内容:<c:out value="${my_test }"></c:out><br /></c:catch><c:out value="${error2 }"></c:out><br /><c:out value="从session中获取my_test..."></c:out><br /><c:out value="${sessionScope.my_test }"></c:out></body></html>
页面输出:
URL路径有个绝对路径和相对路径:相对路径:<c:import url="test.txt"/>那么,test.txt必须与当前文件放在同一个文件目录下。如果以"/"开头,表示存放在应用程序的根目录下,如Tomcat应用程序的根目录文件夹为 webapps。导入该文件夹下的 aaa.txt 的编写方式: <c:import url="/aaa.txt">。如果要访问webapps管理文件夹中的其他Web应用,就要用context属性。例如访问demoProj下的index.jsp,则:<c:import url="/index.jsp" context="/demoProj"/>.
(2)、<c:redirect>
用来实现请求的重定向,语法:
<c:redirect url="url" [context="context"]/>
或者
<c:redirect url="url" [context="context"]>
<c:param name="name1" value="value1">
</c:redirect>
举例:<!--<c:redirect url="http://www.baidu.com" />-->
<c:redirect url="http://localhost:8080/JSTL/JSTL3.jsp">
<c:param name="uName">aaa</c:param>
<c:param name="uPass">123456</c:param>
</c:redirect>
JSTL3.jsp页面里面可以获得uName和uPass的值。
(3)、<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"]/>
举例:
<c:url value="http://www.baidu.com" var="url" scope="session"></c:url><a href="${sessionScope.url }">百度首页1</a><a href="${url }">百度首页2</a>
页面输出:
百度首页1 百度首页2
- JSTL学习(一)
- JSTL核心标签库学习(一)
- 【jstl学习】一
- javaee学习随笔(一)之jsp/el/jstl
- Java Web学习(23): JSTL学习(一)
- JSTL学习(一)简介及常用标签
- JSTL标签库学习笔记 一、概述
- JSTL标签库学习笔记 一、概述
- JSTL标签库(一)
- JSTL标签库(一)
- JSTL(一)
- JSTL学习(很基础)
- JSTL学习笔记(1)
- jstl学习3(choose)
- Java for Web学习笔记(三一):JSTL(7)SQL Tag
- JSTL 学习
- JSTL学习
- 学习JSTL
- 在junit中利用jmock进行测试出现的问题
- 为什么在中断上下文中不能休眠?
- 编写MFC自动升级程序
- Java Web部署:web.xml各参数介绍
- JAVA线程dump的分析 --- jstack pid
- JSTL学习(一)
- eclipse debug 调试
- Master Note For Automatic Storage Management (ASM) For Operating System (OS) Administrators [ID 1345
- java多线程
- Mysql存储过程(procedure)实例
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- Android解屏幕锁与点亮屏幕(来电时效果)
- 今天直接发火了
- [WINFORM]PictureBox顯示圖片的方式