Servlet和JSP之JSTL学习

Posted nyfor2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet和JSP之JSTL学习相关的知识,希望对你有一定的参考价值。

  JSTL

  JSTL就是JSP标准标签库(JavaServer Pages Standard Tag Library, JSTL)是一个定制标签库的集合,用来解决像遍历Map或集合、条件测试、XML处理,甚至数据库访问和数据操作等常见的问题。

  (JSTL的使用需要有配置好两个jar包,分别是jstl.jar和standard.jar)

  JSTL库

  JSTL是标准标签库,但它是通过多个标签库来暴露其行为的。

区域

子函数

URI

前缀

 

核心

变量支持

 

http://java.sun.com/jsp/jstl/core

 

c

流控制

URL管理

其他

 

XML

核心

 

http://java.sun.com/jsp/jstl/xml

 

x

 

流控制

转换

 

国际化

语言区域

 

http://java.sun.com/jsp/jstl/fmt

 

fmt

消息格式化

数字和日期格式化

数据库

SQL

http://java.sun.com/jsp/jstl/sql

sql

 

函数

 

集合长度

 

http://java.sun.com/jsp/jstl/functions

 

fn

   在JSP页面中使用JSTL库,必须通过以下格式在JSP页面的开头作出声明:

  <%@ taglib uri="以上表格中对应的uri" prefix="以上表格中对应的前缀"%>

  (在开始进行学习JSTL之前需要掌握EL表达式的用法,可以参考Servlet和JSP之有关Servlet和JSP的梳理(二),但基本格式是"%{....}")

  常用核心标签介绍  ----->   <%@taglib uri=”http://java.sun.com/jsp/jstl/core  prefix=”c”%>

  JSTL的核心标签库标签共13个,从功能上可以分为4类:

                       

表达式控制标签

out、set、remove、catch

流程控制标签

if、choose、when、otherwise

循环标签

forEach、for、Tokens

URL操作标签

import、url、redirect

 

  表达式控制标签详解之out

       ① 输出常量

  可在value属性中直接赋值。

<c:out value="this is our first JSTL demo"></c:out><br>

 

  ② 输出变量

   变量不存在时可配合default属性输出默认值,还可以通过escapeXml控制转义字符的输出方式。

<%String username = "zhangsan";request.setAttribute("username", username); %>
<c:out value="${username }"></c:out>
<c:out value="${name }" default="error"></c:out><br>
<c:out value="&gtout标签lt" escapeXml="false"></c:out><br>

   

   表达式控制标签详解之set

  ① 存值到scope中

         可将值以变量形式存放在指定的范围中(2种方式)。

        

<c:set value="today" var="day" scope="session"></c:set>

<c:out value="${day }"></c:out>

<c:set var="age" scope="application">eleven</c:set>

<c:out value="${age }"></c:out>

 

  ② 存值到JavaBean的属性中

         需要配合target属性指定对象并且通过property属性指定要赋值给对象中的哪个属性。

 <jsp:useBean id="person" class="com.imooc.test.Person"></jsp:useBean>

<c:set target="${person }" property="address" > Guangzhou</c:set> <c:out value="${person.address }"></c:out>

  

  表达式控制标签详解之remove

  remove掉某个变量,var属性是必选,scope属性是可选。

<c:remove var="job" scope="session"></c:remove>

  

  

   表达式控制标签详解之catch

   catch标签中可以包含那些容易出错的JSTL标签(逻辑)。

  <c:catch var="error">
           <c:set target="aa" property="vv">dw</c:set>
</c:catch>
<c:out value="${error }"></c:out>

 

  

  流程控制标签详解之if

  同程序中的if作用相同,用来实现分支条件控制。

        <c:if test=”” var=”” scope=””></c:if>

         test属性用于存放判断的条件,一般使用EL表达式来编写,var指定名称用来存放判断的结果类型为true或false,scope用来存放var属性存放的范围。

<c:if test="${param.score>=90 }" var="result" scope="application">
<c:out value="恭喜,您的成绩是优秀"></c:out>
</c:if>

 

  流程控制标签详解之choose、when、otherwise

  通常这三个标签被放在一起配合使用,<c:choose>标签嵌套在<c:when>和<c:otherwise>标签的外面作为他们的父标签来使用,其中choose和when标签也可以一起组合使用。

       通常有以下两种语法结构:

  用法一:3个标签同时使用。

<c:choose>
  <c:when test="${param.score>=90 && param.score<=100 }">
    <c:out value="优秀"></c:out>
  </c:when>   <c:otherwise>   <c:out value="输入的数据不符合"></c:out>
  </c:otherwise>
</c:choose>

  用法二:只使用choose标签和when标签。

<c:choose>
  <c:when test="${param.score==100 }">
    <c:out value="太棒了,你是第一名"></c:out>
  </c:when>
</c:choose>

 

  循环控制标签详解之forEach

    根据循环条件遍历集合(Collection)中的元素,var设定变量名用于存储从集合中取出元素(必须无默认值),items指定要遍历的集合(必须无默认值),begin、end用于指定遍历的起始位置和终止位置(有默认值), step指定循环的步长(有默认),varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态。

  常用用法1------全部遍历。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合”>
   操作var变量表示的元素<br>
</c:forEach>

 

  常用用法2------部分遍历。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合”
   begin=”开始遍历元素的index值” end=”结束遍历的元素的index值”>
  操作var变量表示的元素<br>
</c:forEach>

 

  常用用法3------部分遍历中指定步长。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合”
    begin=”开始遍历元素的index值” end=”结束遍历的元素的index值” step=”部分遍历中每次遍历的间隔元素个数”>
  操作var变量表示的元素<br>
</c:forEach>

  常用用法4------部分遍历时输出元素的状态。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合” begin=”开始遍历元素的index值” end=”结束遍历的元素的index值” 
    step=”部分遍历中每次遍历的间隔元素个数” varStatus=”指定一个变量用来存储当前元素的状态值”>   操作var变量表示的元素<br> </c:forEach>

  以上的用法的例子如下:

 <c:forEach var="fruits" items="${fruits }" begin="1" end="3" step="2" varStatus="fru">
           <c:out value="${fruits }的四个属性值"></c:out><br>
           <c:out value="index属性:${fru.index }"></c:out><br>
           <c:out value="count属性:${fru.count }"></c:out><br>
           <c:out value="first属性:${fru.first }"></c:out><br>
           <c:out value="last属性:${fru.last}"></c:out><br>
</c:forEach>

 

  循环控制标签详解之forTokens

  用于浏览字符串,并根据指定的字符将字符串截取, items指定被迭代的字符串,delims指定使用的分隔符,var指定用来存放遍历到的成员,begin、end用于指定遍历的起始位置和终止位置(有默认值),step指定循环的步长(有默认),  varStatus通过index、count、first、last几个状态值,描述begin和end。

<c:forTokens items="010-2342413-123" delims="-" var="num">
           <c:out value="${num }"></c:out>
</c:forTokens>

 

  URL操作标签详解之import

  作用:

  1. 可以把其他静态或动态文件包含到本JSP页面。
  2. 同<jsp:include>的区别为:只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。
  3. 格式如下,其中,url:被导入资源的URL路径, context:相同服务器下其他的web工程,必须以”/”开头(因为context引入的内容是webapps下的其他Web project,所以需要修改tomcat的发布路径和修改%TOMCAT_HOME%conf/context.xml的Context标签中的属性crossContext=”true”), var:以String类型存入别包含文件的内容,Scope:var变量的JSP范围, charEncoding:被导入文件的编码格式,varReader:以Reader类型存储被包含文件内容。
    <c:import url=”” context=“” var=”” scope=””charEncoding=”” varReader=””></c:import>  

 

  URL操作标签详解之redirect

 

  该标签用来实现请求的重定向,同时可以在url中加入指定的参数,url指定重定向的地址,可以是一个string类型的绝对地址或相对地址。,context用于导入其他web应用中的页面。

 

<c:redirect url="firstDemo.jsp">
    <c:param name="username">Lily</c:param>
    <c:param name="password">a</c:param>
</c:redirect>

 

  URL操作标签详解之url

  该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接,value 表示url路径值,var 将url路径存储在变量中,scope var变量的范围。

 

  常用函数标签介绍 -------> <%@taglib uri=”http://java.sun.com/jsp/jstl/ffunctions prefix=”fn”%>

  基本的格式是:

 

${fn:functionName}

 

 

 

函数名

说明

语法

 contains函数

contains函数用于测试一个字符串中是否包含指定的子字符串。如果字符串中包含该子字符串,则返回值True,否则返回False。

 

contains(String, substring)

containsIgnoreCase函数

containsIgnoreCase函数与contains函数相似,但测试是区分大小写的。

containsIgnoreCase(String,substring)

 endsWith函数   

endsWith函数用于测试一个字符串是否以指定的后缀结尾,其返回值是一个Boolean。 

endsWith(String, suffix) 

 escapeXml函数

escapeXml函数用于给String编码。这种转化与out标签将其escapeXml属性设为True一样。 

 escapeXml(String)

 indexOf函数

indexOf函数返回指定子字符串在某个字符串中第一次出现时的索引。如果没有找到指定的子字符串,则返回-1、 

 indexOf(String, substring)

 join函数

join函数将一个String数组中的所有元素都合并成一个字符串,并用指定的分隔符分开。 

 join(array, separator)

 length函数  

length函数用于返回集合中的项目数,或者字符串中的字符数。   

length(input) 

replace函数 

replace函数将字符串中出现的所有beforeString用afterString替换,并返回结果。 

replace(String, beforeSubstring, afterSubstring) 

 split函数

split函数用于将一个字符串分离成一个子字符串数组,他的作用与join函数相反。 

split(String, separator) 

 startsWith函数

startsWith函数用于测试一个字符串是否以指定的前缀开头。 

startsWith(String, prefix) 

 substring函数

substring函数用于返回一个从指定基于0的起始索引(含)到指定基于0的终止索引的子字符串。

substring(String, beginIndex, endIndex) 

substringAfter函数  

substringAfter函数用于返回指定子字符串第一次出现后的字符串部分。 

 substringAfter(String, substring)

 substringBefore函数

substringBefore函数用于返回指定子字符串第一次出现前的字符串部分。 

substringBefore(String, substring)

toLowerCase函数   

toLowerCase函数将一个字符串转换成它的小写版本。 

 toLowerCase(String)

toUpperCase函数 

toUpperCase函数将一个字符串转换陈给它的大写版本。 

 toUpperCase(String)

 trim函数

trim函数用于删除一个字符串开头和结尾的空白。

 trim(String)

 











以上是关于Servlet和JSP之JSTL学习的主要内容,如果未能解决你的问题,请参考以下文章

Java学习标准标签库JSTL

EL JSTL和简单MVC 还有三层架构(这次我先鸽了)的学习

使用 JSP、Servlet、JSTL 和命令模式显示数据库中的数据

JavaWeb开发之JSP&EL&JSTL

JAVAWEB 一一 userweb2(升级,servlet版,jstl和el)

day11_jsp/EL/JSTL学习笔记