JSTL笔记

原创 2018年04月16日 22:40:14

jsp常用标签

1.jstl简介

JSTLJSP Standard Tag LibraryJSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apachejakarta小组来维护的。JSTL只能运行在支持JSP1.2Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。

要使用JSTL,则必须将jstl.jar standard.jar文件放到classpath中,如果你还需要使用XML processingDatabase access (SQL)标签,还要将相关JAR文件放到classpath中,这些JAR文件全部存在于下载回来的zip文件中。

2.EL表达式

(1) el表达式的格式:${},如${user.name}

(2)el表达式中  []的区别。

如:${user.name}等价于${user["name"]}

 []还可以用来集合元素中的定位如:${booklist[0].price}

有特殊字符的时候要用[]${booklist[first-name]},不能用${booklist.first-name}

通过变量动态取值要用[]如:${user[param]}

(3)el变量

 

${username}如果不指定el变量,则先去Page,后Request,后Session,后Application去找先关变量。

4.el类型转换

 


5.el运算符

 

如:${empty username}user如果为空则返回true

6.jstl标签

首先要引入c标签库

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

1<c:out></c:out>

前提:request.setAttribute("name","xiaoming");

<c:out value="${name}" default="error" escapeXml="false"></c:out>

输出:xiaoming,如果没有name值默认输出error,如果escapeXmlfalse,&gt将会输出为>(转义字符)

2<c:set value="" scope="" var="">放入你的值</c:set>

注:var:存入到那个作用域的变量,value:值,scope:作用域

存值到java bean

首先要创建java bean,然后在jsp中引入java bean,idjava bean的实例。

<jsp:useBean id="person" class="com.wjn.**"></jsp:useBean>

<c:set target="person" property="name" value="xioaming" ></c:set>property:java bean的属性

3<c:remove var="username"></c:remove>

var:必选,需要删除的属性值

4<c:catch></c:catch>catch标签还可以包含其它标签

<c:catch var="error">

<c:set target="aa" property="name"></c:set>假设target值不存在

</c:catch>

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

输出:javax.servlet.jsp.JspTagException

(5)<c:if test="" var="" scope=""></c:if>

test:存放判断的条件

var:指定名称用来存放判断的结果类型是true还是false

scope:用来指定var属性指定的范围

<c:if test="${param.scop>=90}" var="result" scope="session"></c:if>

<c:out value="${result}"></c:out>如果param.scop>=90则输出true

(6)choose,when,otherwise

<c:choose>

<c:when test="${param.scop>=90}"></c:when>

<c:when test="${param.scop<90}"></c:when>

<c:otherwise></c:otherwise>

</c:choose>

(7)<c:forEach var="" items="" begin="" end=""></c:forEach>

var:设定变量名用于存储从集合中取出元素

items:需要遍历的集合

begin:遍历的起始位置

end:遍历的结束位置

step:指定循环的步长,如过step=2,只输出以1,3为下标的元素

varStatus:通过index(在子集中的序号),count(输出的第几个元素),first(是否是遍历的第一个元素,是返回true),last(遍历的最后一个元素)几个状态值描述begin和end子集中的元素

(8)<c:forToken></c:forToken>

用于浏览字符串

items:指定被迭代的字符串

delims:指定使用的分隔符

var:指定用于存放遍历到的成员

例如:

<c:forToken items="sdf-f-ggd0" delims="-" var="s">

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

</c:forToken>

(9)<c:import></c:import>

url:被导入资源的url路径

context:相同服务器下的其它web工程,必须以"/"开头,值为另一个工程名,

引入的是webapps下的其它web project,如果不在webapps下有如下设置,见下图

var:以String类型存入被包含文件的内容

scope:var变量的jsp范围,存入的作用域

charEncoding;编码

varReader:以Teader类型存储被包含的文件内容

如将tt.text中的内容存入session中,然后再取出来。

<c:import url="tt.text" var="aa" scope="session" charEncoding="gbk"></c:import>

<c:out value="${sessionScope.aa}"></c:out>

  

(10)<c:redirect></c:redirect>

url:重定向到哪个页面

context:用于导入其它web中的页面

例子如下:

<c:redirect url="test.jsp">

<c:param name="username">xiaoming</c:param>

</c:redirect>

在test.jsp中用取值

<c:out value="${param.username}"></c:out>将会输出小明。

(11)<c:url></c:url>


-该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接

.value表示url路径值

var 将url路径存储在变量中

.scope var变量的范围

例子如下:


 <c:if test="${1<2}">

<c:set var="partUrl">temp.jsp</c:set>

</c:if>

<c:url value="http://localhost:8080/Test/${partUrl}" var="newUrl" scope="session"></c:url>

(12)jstl函数的使用


JSTL函数

使用JSTL函数需要导入:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<c:out value="“Hello World”字符串中是否包含“Hello”?${fn:contains('Hello World','Hello')}"></c:out>

注:如果前一个字符串包含后一个字符串则返回true.此处返回true

  <hr>

  <c:out value="“Hello World”字符串中是否包含“ABCD”?${fn:contains('Hello World','ABCD')}"></c:out>


注:如果前一个字符串包含后一个字符串则返回true.此处返回false

<hr> <c:out value="“Hello World”字符串中是否包含“hello”(忽略大小写)?${fn:containsIgnoreCase('Hello World','hello')}"></c:out> <hr> <c:out value="“Hello”是否在“Hello World”字符串开头?${fn:startsWith('Hello World','Hello')}"></c:out> <hr> <c:out value="“world”是否在“Hello World”字符串尾部?${fn:endsWith('Hello World','world')}"></c:out>


<book>书</book>

  <hr>

  <!-- 可输出标签但会出现转义问题 -->

  <c:out value="${fn:escapeXml('<book>书</book>')}"></c:out>


&lt;book&gt;abc&lt;/book&gt;

<hr> <!-- 可输出标签且不会出现转义问题 --> <c:out value="<book>书</book>"></c:out> <hr> <!-- indexOf函数用法 --> <c:out value="“Hello World”字符串“llo”出现的index值:${fn:indexOf('Hello World','llo')}"></c:out>


收藏助手
不良信息举报
您举报文章:JSTL笔记
举报原因:
原因补充:

(最多只允许输入30个字)