02-JavaWeb-JSTL标签
来源:互联网 发布:dnf升级券cdk淘宝 编辑:程序博客网 时间:2024/05/23 15:39
JSTL标签库简介
JST是Java的一个定制标记库集
为什么要使用JSTL?
- JSTL实现了页面中的代码复用(基于标签库原理,重复率较高的代码块支持复用,提高了效率)
- 书写JSP页面是可读性更强(长得很像XML,方便前端查看和参与开发)
JSTL由核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库组成。在使用这些标签库之前,需要在JSP页面顶部使用<%@ taglib%>
指令定义引用的标签库和访问前缀。
核心标签库的taglib指令
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
格式标签库的taglib指令
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
SQL标签库的taglib指令
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
XML标签库的taglib指令
<%@taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml" %>
函数标签库的taglib指令
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
核心标签库
核心标签库主要用于完成JSP页面常用的功能,包括JSTL的表达式标签( ),URL标签( ),流程控制标签( ),循环标签( )
表达式标签
输出标签
用于将值输出到JSP页面中。该标签类似于JSP的表达式<%=表达式%>
或者EL表达式${expression}
可以有标签体,也可以没有标签体
<c:out value="expression" [escapeXml="true|false"] [default="defaultValue"]>
或
<c:out value="expression" [escapeXml="true|false"] [default="defaultValue"]> </c:out>
escapeXml:可选属性,用于指定是否转换特殊字符,<(<),>(>),’($#039),”("),&(&)。
<body><c:out value="hello<hr>" escapeXml="true" /> //输出hello<hr><c:out value="hello<hr>" escapeXml="false" /> //输出hello下面一条分割线</body>
当escapeXml为true时,输出字符串中的
被以字符串形式输出了,当为false时,字符串中的
将会被当做HTML标记输出。这是因为当为true时,<和>符号转换为对应的实体代码,所以在输出的时候,就不会当做HTML标记输出了
变量设置标签
标签用于在指定范围(page,request,session或application)中定义保存某个值的变量,或为指定的对象设置属性值。
四种形式:
<c:set var="name" value="vlaue" [scope="范围"]/><c:set var="name" [scope="page|request|session|application"]> 标签体</c:set><c:set value="value" target="object" property="propName"/><c:set target="object" property="propName"> 标签体</c:set>
var:变量名
value:用于指定变量值,可以使用EL
scope:指定变量的作用域,默认是page,可选page,request,session,application
target:用于指定存储变量值或者标签体的目标对象,可以是JavaBean或Map集合对象
target属性不能是直接指定的JavaBean或Map,而应该是使用EL或一个脚本表达式指定的真正对象。例如,这个对象可以通过为JavaBean “CartForm”的id属性赋值,那么target属性值应该是 target=”${cart}”,而不是target=”cart”。其中cart为CartForm的对象。
property:用于指定目标对象存储数据的属性名
package com.shushu.entity; public class UserInfo { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }} <body> <c:set var="username" value="shushu1234" scope="request" /> <c:out value="request中的username:${username}" /> <jsp:useBean id="userInfo" class="com.shushu.entity.UserInfo"></jsp:useBean> <c:set target="${userInfo}" property="name">数数1234</c:set> <c:out value="${userInfo.name}"></c:out></body>
变量移除标签
<c:remove var="name" [scope="范围"]/>
var:要移除的变量名
scope:用于指定变量的有效范围,可选为request,application,session,page,默认为page,如果在该标签中没有指定范围,将在它们四个之间查找并将变量移除,如果两个范围内都存要移除的变量名,那么两个范围内的变量都将被移除。当指定要移除的变量不存在的时候,将抛出异常。
用于捕获程序中出现的异常,如果需要她还可以将异常信息保存在指定的变量中。该标签与Java语言中的try……catch语句相似
<c:catch [var="expression"]> 可能存在异常的代码</c:catch>
var:可选属性,用于指定存储异常信息的变量。如果不需要保存,忽略。var属性值只有在标签后面才有效,也就是说,在标签体中无法使用有关异常的任何信息。
<body><c:catch var="error"> <jsp:useBean id="userInfo" class="com.shushu.entity.UserInfo"> <c:set target="${userInfo }" property="pwd"> 111 </c:set> </jsp:useBean></c:catch><c:out value="${error }"></c:out></body>
URL相关标签
导入标签
=”“
语法1
<c:import url="url" [context="context"][var="name"][scope="范围"][charEncoding="encoding"]> [标签体]</c:import>
语法2
<c:import url="url" varReader="name" [context="context"][charEncoding="encoding"]> [标签体]</c:import>
url:用于指定被导入的文件资源的URL地址。(如果被指定的url属性为null、空或者无效,将抛出javax.servlet.ServletException异常)
context:上下文路径,用于访问同一个服务器的其他Web应用,其值必须以”/”开头,如果指定了该属性,那么url属性值也必须以”/”开头
var:用于指定变量名称,该变量用于以String类型存储获取的资源
page:用于指定变量的存在范围,默认值是page
varReader:用于指定一个变量名,该变量用于以Reader类型存储被包含文件内容。(导出的Reader对象只能在标记的开始标签和结束标签之间使用)
标签体:可选,如需要为导入的文件传递参数,则可以在标签体的位置通过标签设置参数。
<!--cimport.jsp --><body> <c:set var="typeName" value="流行金曲|经典老歌" /> <c:import url="navigation.jsp" charEncoding="utf-8"> <c:param name="typeList" value="${typeName}"></c:param> </c:import> </body><!--navigation.jsp--><body><div>${param.typeList}</div></body>
动态生成URL
用于生成一个URL路径的字符串,这个生成的字符串可以赋予HTML的
重定向标签
该标签可以将客户端发出的request请求重定向到其他的URL服务端,由其他程序处理客户端的请求。而在这期间可以对request请求中的属性进行修改或添加,然后把所有属性传递到目标路径。
语法一:
<c:redirect url="url" [context="/context"] />
语法二:
<c:redirect url="url" [context="/context"] > <c:param/> ……</c:redirect>
url:必选属性,用于指定带定向资源的URL,可以使用EL
context:用于在使用相对路径访问外部资源时,指定资源的名字
//例一<c:redirect url="login.jsp" />//例二<c:redirect url="UserLsitServlet"> <c:param name="action" value="query"></c:redirect>
传递参数标签
该标签只用于为其他标签提供参数信息,它与组合实现动态定制参数。从而使标签可以完成更加复杂的程序应用。
<body> <c:redirect url="credirect2.jsp"> <c:param name="user" value="shushu"></c:param> </c:redirect></body><body> [${param.user}]欢迎你</body>
流程控制标签
条件判断标签
类似于Java的if语句,虽然标签没有对应的else标签,但是JSTL提供了可以实现if-else功能
语法一:
<c:if test="condition" var="name" [scope="page|……"]>
该语法会判断条件表达式,并将结果保存在var属性指定的变量中,而这个变量存在于Scope属性所指定的范围中
语法二:
条件选择标签 条件测试标签 其他条件标签
该标签可以根据不同的条件完成指定的业务逻辑,如果没有符合的条件就执行默认条件的业务逻辑。标签只能作为和标签的父标签,如果要实现条件选择逻辑,可以在标签中嵌套和标签来完成。
语法如下:
<c:choose> 标签体 <!--由<c:when>标签和<c:otherwise>标签组成--></c:choose>
标签没有相关属性,它只是作为和标签的父标签来使用,并且在标签中,除了空白字符外,只能使用这两个标签。
在一个标签中,可以有多个标签来处理不同条件的业务逻辑,必须要有一个标签,但只能有一个标签来处理默认的业务逻辑,也可以没有标签,有的话必须存在于标签的最后一个,当所有条件都不满足的时候,将不会处理标签的标签体
<body> <c:if var="result" test="${empty param.luck}"> <form action="" name="form1" method="post"> 数字: <input name="luck" type="text" id="luck"> <input type="submit" name="Submit" value="提交"> </form> </c:if> <c:if test="${!result}"> <c:choose> <c:when test="${param.luck>10 }">恭喜你,一等奖</c:when> <c:when test="${param.luck>6 }">恭喜你,二等奖</c:when> <c:when test="${param.luck>4 }">恭喜你,三等奖</c:when> <c:otherwise>谢谢参与</c:otherwise> </c:choose> </c:if> </body>
循环标签
循环标签
该标签可以根据循环条件,遍历数组和集合类中的所有或部分数据。
语法一:集合成员迭代
<c:forEach items="data" [var="name"] [begin="start"] [end="finish"] [step="step"] [varStatus="statusName"]> 标签体</c:forEach>
语法二:数字索引迭代
<c:forEach begin="start" end="finish" [var="name"] [varStatus="statusName"] [step="step"]> 标签体</c:forEach>
items:用于指定被循环遍历的对象,多用于数组与集合类。该属性值可以是数组,集合类,字符串和枚举类型,并且可以通过EL指定。
var:用于指定循环体的变量名,该变量用于存储items指定的对象的成员。
varStatus:用于指定循环的状态变量,该属性还有四个状态属性
如果要在循环的过程中得到循环计数,可以应用varStatus属性的状态属性count获得
<body> <% List<String> list=new ArrayList<String>(); list.add("Java"); list.add("C++"); list.add("Python"); list.add("C"); request.setAttribute("list", list); %> <h2>遍历集合中全部的元素</h2> <c:forEach items="${requestScope.list}" var="keyword" varStatus="id"> ${id.index} ${keyword}<br> </c:forEach> <h2>遍历集合中特定的元素</h2> <c:forEach items="${requestScope.list}" var="keyword" varStatus="id" begin="1" end="3"> ${id.index} ${keyword}<br> </c:forEach> </body>
可以不指定items
<body> <h2>10以内奇数</h2> <c:forEach var="keyword" begin="1" end="10" step="2"> ${keyword}<br> </c:forEach> </body>
迭代标签
该标签可以用指定的分隔符将一个字符串分割开,根据分割的数量确定循环的次数
语法:
<c:forTokens item="String" delims="char" [var="name"] [begin="start"] [end="end"] [step="len"] [varStatus="statusName"]> 标签体</c:forTokens>
items:String对象,该字符串通常由指定的分割符隔开
delims:用于指定分割字符串的分割符,可以同时有多个字符
var:指定变量名,该变量保存了分割后的字符串
<body> <c:set var="lang" value="JavaWeb:aaa,bbb,Java:ccc,ddd"></c:set> <h2>c:forTokens分割字符串</h2> <c:forTokens items="${lang}" delims=":," var="keyword"> ${keyword}<br> </c:forTokens></body>
- 02-JavaWeb-JSTL标签
- JavaWeb---JSTL数据库标签
- javaweb中的jstl标签
- javaweb之jstl标签库
- 重新学javaweb---JSTL标签
- 十一.javaweb之JSTL标签
- JavaWeb之JSTL标签库
- JavaWeb---JSTL标签库(core标签库)
- 【JavaWeb】EL表达式与JSTL标签
- javaWEB-动态网页之jstl标签
- JavaWeb---JSP标准标签库(JSTL)
- JavaWeb笔记——JSTL标签
- JavaWeb---JSTL(fmt格式化标签库)
- JavaWeb——自定义标签与JSTL
- JavaWeb学习十一(JSTL标签库)
- Javaweb--- EL表达式 JSTL标准标签库
- JavaWeb(JSTL标签库学习笔记)
- JavaWeb学习心得之JSTL标签库
- 【JavaScript】找出数组中两数之和为指定值的所有整数对
- Uboot启动过程中的相关动作
- 数据结构--图 的JAVA实现(上)
- ZOJ2334 Monkey King 【左偏树模板题】
- Uva.489 Hangman Judge
- 02-JavaWeb-JSTL标签
- [微信支付] 服务端PHP开发纪要
- Robot Framework自动化测试-元素定位之xpath
- 仙落凡尘精品全套源码[网页端+手机端+客户端源码+服务端源码+数据文档]
- Android 实现FlowLayout流式布局(类似热门标签)
- 1.简单工厂—我的大话设计模式
- 后台接收前端JSON数组转换成List
- 使用SwipeBackLayout实现滑动退出页面的效果
- thinkphp如何判断数据为空