jstl

JSTL简介

JSP虽然为我们提供了EL表达式用来替代JSP表达式,但是由于EL表达式仅仅具有输出功能,而不替代页面中的JSP脚本片段。

为了方便开发使用Sun公司又定义了一套通用的标签库名为JSTL(JSP Tag Standard Tag Library),里面定义很多我们开发中常用的方法,方便我们使用。

JSTL的标准由Sun公司定制ApacheJakarta小组负责实现

JSTL5不同功能的标签库组成

使用JSTL

使用JSTL必须项目中导入两个jar

taglibs-standard-impl-1.2.1.jar

taglibs-standard-spec-1.2.5.jar

然后还需要在JSP页面中通过taglib标签引入标签库。

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

prefix用来指定前缀,我们通过该名来使用JSTL

uri相当于库的唯一标识,因为JSTL多个不同的库组成,使用该属性指定要导入哪个库。

使用JSTL

<c:out value="hello"></c:out>

这个例子标识,调用前缀为c的标签的out方法,向页面中输出value属性中的字符串。

JSTL的使用非常像html标签。

标签库

JSTL五个不同功能的标签库组成。

功能范围

URI

前缀

核心

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

c

格式化

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

fmt

函数

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

fn

数据库(不常使用)

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

sql

XML(不常使用)

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

x

 

核心标签(Core Tags)

Core标签库,包括了我最常用的标签。

使用Core标签库需要JSP页面加入:

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

<c:out>

<c:out>用于计算一个表达式并将结果输出到当前页面

功能类似于JSP表达式<%= >EL表达式${}

可以设置的属性

value

作用要输出的

参数类型Object

default

作用valuenull显示的默认值。

参数类型:Object

escaXml

作用:是否对特殊字符进行转义。

参数类型:boolean

例:

<c:out value="${user.name}" default="" escapeXml="true"></c:out>

<c:set>

<c:set>用于添加修改域中的属性

可以设置的属性:

value

作用设置的值

参数类型:Object

var

作用:表示域中存放的属性名。

参数类型String

scope

作用:指定域(pageContextrequestsessionapplication若不指定则为pageContext

参数类型:String

target

作用修改的域对象的属性名(必须JavaBean或者Map

参数类型Object

property

作用:指定要修改的对象的属性名

参数类型:String

设置属性

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

修改属性:

<c:set property="name" target="${user}" value="孙悟空"></c:set>

<c:remove>

<c:remove>用于移除域中的属性

可以设置的属性:

var

作用:设置要移除的属性的名字

作用String

scope

作用:设置要移除属性所在的域若不指定则删除所有域中的对应属性

参数类型:String

移除所有域中key属性:<c:remove var="key"/>

移除request中的key属性: <c:remove var="key" scope="request"/>

<c:if>

<c:if>用于实现if语句的判断功能

可设置的属性

test

作用:设置if判断的条件用于判断标签体是否被执行

参数类型:boolean

var

作用:用于指定接收判断结果变量名

参数类型:boolean

scope

作用:指定判断结果保存到哪个

参数类型:String

<c:if test="${empty user }" var="isUserEmpty" scope="request">

用户为空

</c:if>

<c:choose>、<c:when>、<c:otherwise>

<c:choose><c:when><c:otherwise>三个标签配合使用,功能类似于Java中的if/else

<c:choose><c:when><c:otherwise>标签

<c:when>属性

test

作用:用于设置判断条件,若正确则c:when中的代码执行,否则不执行

参数类型:boolean

<c:otherwise>

作用:如果所有的<c:when>没有执行则执行<c:otherwise>标签体

<c:choose>

<c:when test="${param.age>=18 }">

您已经成年

</c:when>

<c:otherwise>

您未成年

</c:otherwise>

</c:choose>

<c:forEach>

<c:forEach>用于对多个对象的集合进行迭代重复执行标签体或者重复迭代固定的次数。

可设置属性:

var

作用设置遍历出对象的名称

参数类型:String

items

作用:指定要遍历的集合对象

参数类型数组、字符串和各种集合

varStatus

作用指定保存迭代状态的对象的名字该变量引用的是一个LoopTagStatus类型的对象,通过该对象可以获得一些遍历的状态:

count

index

first

last

name

参数类型:String

begin

作用:指定遍历的开始位置

参数类型:int

end

作用:指定遍历的结束位置

参数类型:int

step

作用迭代步长

参数类型:int

<c:forEach items="${list}" var="user" begin="0" end="4" step="2" varStatus="vs">

${vs.index} -- ${user.name } -- ${user.age }<br />

</c:forEach>

<c:url>

<c:url>主要用来重写URL地址

可设置属性

value

作用:设置要处理URI地址,注意这里要以/开头

可接受参数:String

var

作用修改后存储到域对象中的uri属性名。

可接受参数:String

scope

作用:设置修改后uri存放的域

可接受参数:String

使用相对路径

<c:url value="index.jsp" var="uri" scope="request">

<c:param name="name" value="张三"></c:param>

</c:url>

会生成如下地址index.jsp?name=%E5%BC%A0%E4%B8%89

使用绝对路径会自动在路径前加上项目名

<c:url value="/index.jsp" var="uri" scope="request">

<c:param name="name" value="张三"></c:param>

</c:url>

会生成如下地址/Test_JSTL/index.jsp?name=%E5%BC%A0%E4%B8%89

<c:redirect>

<c:redirect>主要用于请求重定向到另一个资源地址

设置的属性:

uri

作用:指定要重定向到的目标地址,注意这里指定绝对路径会自动加上项目名

参数类型:String

例:

<c:redirect url="/target.jsp"></c:redirect>

JSTL函数(JSTL Functions)

函数标签库JSTL中定义的标准EL函数集

函数标签库中定义的函数基本上都是对字符串的操作。

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

fn:containsfn:containsIgnoreCase

作用:用于判断字符串中是否包含指定字符串containsIgnoreCase忽略大小写。

语法fn:contains(string,subString) à boolean

参数和返回值:

参数

类型

作用

string

String

源字符串

subString

String

要查找的字符串

返回值

boolean

string中包含subString则返回true,否则返回false

${fn:contains("hello","HE")}  à false

${fn:containsIgnoreCase("hello","HE")} à true

fn:startsWithfn:endsWith

作用:判断一个字符串是否指定字符开头startsWith)或结尾endsWith

语法fn:startsWith(string , prefix) à boolean

  fn:endsWith(string,suffix) à boolean

参数和返回值:

参数

类型

作用

string

String

源字符串

prefix  suffix

String

要查找前缀或后缀字符串

返回值

boolean

符合要求返回true,否则返回false

${fn:startsWith("hello","he") } à true

${fn:endsWith("hello","he") } à false

fn:indexOf

作用一个字符串中查找指定字符串,并返回第一个符合的字符串的第一个字符的索引

语法fn:indexOf(string,subString) à int

参数和返回值:

参数

类型

作用

string

String

源字符串

subString

String

要查找的字符串

返回值

int

若在string找到subString则返回第一个符合的索引,若没有符合的则返回-1

${fn:indexOf("hello",'e') } à 1

fn:replace

作用:将一个字符串替换为另外一个字符串,并返回替换结果

语法fn:replace(str , beforeSubString , afterSubString) à String

参数和返回值:

参数

类型

作用

str

String

源字符串

beforeSubString

String

被替换的字符串

afterSubString

String

要替换字符串

返回值

String

替换后的字符串

${fn:replace("hello","llo",'e') } à hee

fn:substring

作用截取字符串

语法:fn: substring (str , beginIndex , endIndex) à String

参数和返回值:

参数

类型

作用

str

String

源字符串

beginIndex

int

开始位置索引(包含该位置)

endIndex

int

结束位置索引(不包含自身)

返回值

String

返回截取的字符串

${fn:substring("hello",1,3) } à el

fn:substringBeforefn:substringAfter

作用:返回一个字符串指定串之前(substringBefore)之后substringAfter)的字符串

语法fn: substringBefore(string,subString) à String

fn: substringAfter (string,subString) à String

参数和返回值:

参数

类型

作用

str

String

源字符串

subString

int

指定str中的一个串,该串之前或之后的字符串被返回。

返回值

String

返回截取的字符串

${fn:substringBefore("hello","l") } à he

${fn:substringAfter("hello","l") } à lo

fn:split

作用:将一个字符串拆分成字符串数组。

语法fn:split(string,delimiters) à String

参数和返回值:

参数

类型

作用

str

String

被拆分的字符串

delimiters

String

指定根据什么内容拆分字符串

返回值

String[]

返回拆分后的字符串数组

${fn:split("a-b-c-d-e-f-g","-")} à 返回一个数组对象[a,b,c,d,e,f,g]

fn:join

作用:将数组中所有元素连接成一个字符串

语法:fn:join(array,sparator) à String

参数和返回值:

参数

类型

作用

str

String

被拆分的字符串

sparator

String

结果中每个元素之间的分隔符

返回值

String[]

拼接之后的结果

<%

String[] strs = new String[]{"a","b","c","d","e","f"};

pageContext.setAttribute("strs", strs);

%>

${fn:join(strs,'-') }

返回a-b-c-d-e-f

fn:toLowerCasefn:toUpperCase

作用字符串都转换成大写(toUpperCase)或小写(toLowerCase字符

语法

fn: toLowerCase (str) à String

fn: toUpperCase(str) à String

参数和返回值:

参数

类型

作用

str

String

字符串

返回值

String

转换为大写或小写的字符串

 

${fn:toLowerCase("ABCDEFG") } à abcdefg

${fn:toUpperCase("abcdefg") } à ABCDEFG

fn:trim

作用去掉字符串的前后空格

用法fn:trim(str) à String

参数和返回值:

参数

类型

作用

str

String

字符串

返回值

String

去掉前后空格的结果

${fn:trim("     hello  ") } à hello

fn:length

作用:返回集合或者字符串的长度

用法fn:trim(input) à int

参数和返回值:

参数

类型

作用

input

String、集合、数组

要计算长度的目标

返回值

int

集合或字符串的长度

${fn:length("hello") }à 5

 

原文地址:https://www.cnblogs.com/kangxingyue-210/p/7640719.html