JavaWeb——JSTL

一、JSTL简介
 JSTL(JSP Standard Tag Library)是JSP的标准标签库,JSTL为我们提供了一些常用的标签(if 、 if…else 、遍历 、 日期格式化等),供我们开发使用。JSTL这个标准由sun公司定义,是由Apache来实现的,使用JSTL需要导入两个jar包:

taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar

二、JSTL中的标签库
 1、core:核心标签库,核心标签库是JSTL最常用的标签库,里边定义一些最常用的标签。核心标签库的名字叫core,一般使用c作为前缀,所以核心标签库我们也习惯称为c标签
 2、fn:函数标签库,函数标签库需要结合EL表达式来使用,里面定义了一些字符串的操作方法。
 3、fmt:格式化标签库,格式化标签库定义了一组日期、时间、数字、国际化相关的标签
在这里插入图片描述
 4、sql:数据库标签库,定义在JSP中操作数据库的标签,已淘汰
 5、xml:xml标签库,定义在JSP中解析XML文档,已淘汰

三、标签库的使用:
 1、常用核心库标签
  在页面中导入核心标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

  a、out:向页面中输出一个对象
   属性:
    value:要输出到页面中的对象,可以是一个EL表达式
    default:指定默认值,如果value属性为空,则显示默认值
    escapeXml:是否自动转义特殊字符,默认值为true,自动转义,如果是js代码,转义后js代码将不会被执行,避免恶意代码入侵,若想让js代码执行,将该值设置为false即可
   例子:

<c:out value="${code}" escapeXml="true"></c:out>
<c:out value="${username}" default="菩提老祖"></c:out>

  b、set:向域中设置一个属性
   属性:
    var:向域中设置的属性的名字
    value:向域中设置的属性的值
    scope:指定要放入属性的域,可选值page、request、session、application,默认值page
   例子:

<c:set var="hello" value="world" scope="request"></c:set>

  c、remove:从指定域中移除一个指定属性
   属性:
    var:要移除的属性的名字
    scope:要移除的属性所在的域,可选值 page、request、session、application,如果不指定,则会移除所有域中的该名称的属性
   例子:

<c:remove var="hello" scope="request"/>

  d、if:作用和Java中的if类似
   属性:
    test:接收一个boolean值,如果该值为true,则标签体执行,否则不执行
   例子:

<c:if test="${empty param.username}">
	<h3>你怎么不输入用户名!请输入username属性!</h3>
</c:if>

  e、choose when otherwise:和java中 if … else类似
   choose标签作为when和otherwise的父标签出现,when和otherwise不能单独使用
   when
    属性:
     test:接收一个boolean值,如果该值为true,则标签体执行,否则不执行
   otherwise:如果choose标签中的所有when标签都没有执行,则会执行otherwise中的标签体
   choose标签中可以有多个when标签,但是只能有一个otherwise,多个标签(when和otherwise)中只会有一个标签执行
   例子:

<c:choose>
	<c:when test="${param.score==100 }">
		<h3>恭喜您!考了100分!</h3>
	</c:when>
	<c:when test="${param.score>=90 }">
		<h3>您的成绩为A级!</h3>
	</c:when>
	<c:otherwise>
		<h3>你不及格!</h3>
	</c:otherwise>
</c:choose>

  f、forEach:和Java中的for循环类似,可以遍历一个组数,也可以遍历一个集合
   属性:
    begin :指定遍历开始的位置,begin值不能小于0
    end :指定遍历结束的位置
    step : 指定遍历的步长
    var :指定属性名
   例子1:遍历数字
在这里插入图片描述
   注意:forEach中定义的变量默认在pageContext域中,无论放在哪个域中只要出了该标签就无效
   例子2:遍历集合
    属性:
     items:指定要遍历的集合
     var : 指定属性名
     varStatus :指定遍历状态的属性名???
     current 返回一个Object代表当前遍历的对象
     index 获取当前的索引
     count 用来记录当前遍历的数量
     first和last用来判断当前对象是否为第一个或最后一个
    遍历List:

<c:forEach items="${list}" var="hero">
	${hero } <br />
</c:forEach>

    遍历Map:

<c:forEach items="${map}" var="user">
	${user.key } -- ${user.value } <br />
</c:forEach>

  g、url:创建一个完整的路径,可以自动为绝对路径加上项目名
   属性:
    value:要设置的路径
    var:将路径保存到域中的属性名,如果不设置该属性,则地址会直接输出
在这里插入图片描述
   例子: 获取标签中的url:${pageScope.url}

<c:url value="/index.jsp" var="url"  scope="page">
	<c:param name="username" value="sunwukong"></c:param>
</c:url>

  h、redirect:发起请求的重定向
   属性:
    url :指定重定向的目标地址,标签会自动加上项目名
   例子:

<c:redirect url="/index.jsp" var="url">
	<c:param name="username" value="孙悟空"></c:param>
	<c:param name="age" value="18"></c:param>
</c:redirect>

  i、param:在url和redirect标签中为路径设置请求参数
   属性:
    name :请求参数的名字
    value :请求参数的值
   例子:

<c:param name="age" value="18"></c:param>

 2、函数标签库
  在页面中导入函数标签库

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

  函数标签库需要结合EL表达式来使用,里面定义了一些字符串的操作方法:${fn:方法}
  例子:

<!-- 判断前一个字符串是否包含后一个 -->
fn:contains : ${fn:contains('hello','He') } <br />
<!-- 判断前一个字符串是否包含后一个忽略大小写 -->
fn:containsIgnoreCase : ${fn:containsIgnoreCase('hello','He') }<br />
<!-- 判断前一个字符串是否以后一个结尾 -->
fn:endsWith : ${fn:endsWith("hello","lo") }<br />
<!-- 自动转义特殊字符 -->
fn:escapeXml : ${fn:escapeXml("<script>") }<br />
<!-- 将数组中的元素以指定的字符串连接 -->
fn:join : ${fn:join(strs,"-") }<br />
<!-- 以指定字符串将一个字符串拆分为一个String数组 -->
fn:split : ${fn:split("a-b-c-e-f","-")[2]}<br />//将字符串以-拆开,并取其中的第三个字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值