一.开始前的准备
1.导包
导入包的地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
2.新建项目后,在WEB-INF的lib中赋值jstl.jar和standard.jar,然后选择右击,add path
3.新建jsp文件,在开头添加下行,自定义标签,其中 的prefix表示下面使用的标签名
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
如果要使用函数,则再添加如下
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
二.核心标签的使用
这里要强调一下,寻找变量是先从page中寻找,然后是request,session,application
1.out
如下使用,其中default的作用就是如果user值为空或者是空字符串,就输出default中的字符串,
然后我又试着将user去掉,结果仍然和之前的结果一样
<%String user="";
%>
<c:out value="${user}" default="error"></c:out>
转义输出,设置escapeXml为false
<c:out value="<out标签>" escapeXml="false"></c:out>
2.set标签
将一个变量存储在哪一个scope中
如将取一个变量day,设其值为today,存的范围是session,下面是两种写法
<c:set value="today" var="day" scope="session"></c:set>
<c:set var="day" scope="session">today</c:set>
使用JavaBean进行设置
<jsp:useBean id="person" class="po.Student"></jsp:useBean>
<c:set target="${person}" property="usename" value="zhangsan"></c:set>
<c:out value="${person.usename}"></c:out>
3.remove标签:remove的是一个对象
4.choose -when-otherwise标签:相当于switch
5.forEach标签
下面是一个简单的应用
<%
List<String> fruits=new ArrayList<String>();
fruits.add("dsds");
fruits.add("dsooik");
%>
<c:forEach var="fruit" items="${fruits}">
<c:out value="${fruit }"></c:out>
</c:forEach>
注意观察上面的代码和下面的代码的区别
<%
List<String> fruits=new ArrayList<String>();
fruits.add("dsds");
fruits.add("dsooik");
session.setAttribute("fruits", fruits);
%>
<br/>
<c:forEach var="fruit" items="${fruits}">
<c:out value="${fruit }"></c:out>
</c:forEach>
<br/>
是的,它们的区别在于,后面的代码将list添加到了session的属性中,而上面的没有,因此在输出的时候上面的输出是没有结果的。
有人就会想说是因为上面的是局部变量,但当我们将其中的list声明成全局变量时,结果仍然没有改变。
可以说EL是从属性中去寻找的,但是一个页面中的全局变量难道不是page的属性吗?
6.forTokens
类似于forEach,其中的items指定的是字符串,delims是分隔符,var是遍历的成员
<c:forTokens items="010-809-3389" delims="-" var="num">
<c:out value="${num}"></c:out>
</c:forTokens>
import标签与include的区别在于import可以包含其他web应用程序
主要讲解一下它的context属性
第一新建一个JSTLDemo2项目,然后在其中新建NewFile.jsp界面。
在其它项目的JSP文件中引用如下
<c:import url="/NewFile.jsp" context="/JSTLDemo2"></c:import>
然后修改tomcat的路径,并在config的contex.xml中找到context,在其中添加crossContext=true,便完成了
8.redirect标签:效果和重定向一样
9.URL标签
在URL后面添加一个变量,为变量赋值,就可以访问其下面不同的子目录
<c:url value="http://localhost:8080/${partUrl }" var="newUrl" scope="session"></c:url>
<a href="${newUrl }">URL</a>
最后关于param
$(param.user)相当于<%=request.getParameter("user")%>
paramValues相当于request.getParameters("xxx")
例如:
$(paramValues.favorites[0])相当于<%=request.getParameters("favorites")[0]%>