发布网友 发布时间:2022-04-09 01:21
共2个回答
懂视网 时间:2022-04-09 05:42
Pass by xkk ,and author is not clear
1. JSTL简介
JSTL全名JspServer Pages Standdard Tag Library(Jsp标准标签库),它是sun公司发布的一个针对JSP开发的新组件,它允许使用标签开发Jsp页面.
JSTL是一个标准的已制定好的标签库,它可以应用到很多领域. 如:基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。
JSTL所提供的标签库主要分为五大类:
JSTL |
前置名称 |
URI |
范例 |
核心标签库 |
c |
http://java.sun.com/jsp/jstl/core |
<c:out> |
I18N格式标签库 |
fmt |
http://java.sun.com/jsp/jstl/fmt |
<fmt:formatDate> |
SQL标签库 |
sql |
http://java.sun.com/jsp/jstl/sql |
<sql:query> |
XML标签库 |
Xml |
http://java.sun.com/jsp/jstl/xml |
<x:forEach> |
函数标签库 |
fn |
http://java.sun.com/jsp/jstl/functions |
<fn:split> |
2.核心标签库
功能分类 |
标签名称 |
表达式操作 |
out、set、remove、catch |
流程控制 |
if、choose、when、otherwise |
迭代操作 |
forEach、forTokens |
URL操作 |
import、param、url、redirect |
2.1<c:out>
功能: <c:out>主要用来显示数据的内容
属性列表:
名称 |
说明 |
必须 |
默认值 |
value |
需要显示出来的值 |
是 |
无 |
default |
如果value的值为null,则显示default的值 |
否 |
无 |
escapeXml |
是否转换特殊字符,如:<转换成< |
否 |
true |
实例:使用核心标签库,并输出数据
步骤一:将标签库中所有的.jar包(内部是所有的标签处理器)放到/WEB_INF/lib下,将所有的.tld(内部是所有的标签库描述)放到/WEB-INF/tlds下
步骤二:在Jsp页面中引用核心标签(c_out.jsp)
<%@ page contentType="text/html;charset=gbk" language="java"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%--default的两种使用方式--%>
<%--如果在uri中输入参数name=jgl,则显示输入的value中的值,否则显示默认信息(default)--%>
<c:out value="${param.name}" default="welecome jgl to my website!"/>
<c:out value="${param.name}">welecome jgl to my website!</c:out>
<%--value属性是必添的,escapeXml属性是true时,不解析特殊字符,false时,解析特殊字符--%>
<c:out value="${param.name}" ecapeXml="false"><c:out></c:out>
2.2<c:set>
功能: <c:set>主要用来将变量存储至JSP范围中 或是JavaBean的属性或Map对象中。
属性列表:
名称 |
说明 |
必须 |
默认值 |
value |
要被存储的值 |
否 |
无 |
var |
欲存入的变量名称 |
否 |
无 |
scope |
var变量的JSP范围 |
否 |
page |
target |
JavaBean或Map对象 |
否 |
无 |
property |
指定target对象的属性 |
否 |
无 |
实例1:将变量设置到Jsp范围内,并输出
<%--将变量定义在Jsp范围内--%>
<%--value属性的两钟使用方式--%>
<c:set var="username" value="jack" scope="session"/>
<c:set var="pwd" scope="session">000</c:set>
<%--通过el表达式语言输出--%>
${sessionScope.username}
${sessionScope.pwd}
<%--通过jstl中<c:out>标签输出--%>
<c:out value="${sessionScope.username}"/>
实例2:将变量设置到javaBean对象内,并输出
<jsp:useBean id="stu" class="net.pcedu.student"/>
<%--通过<c:set>标签给javaBean对象的age属性设值--%>
<c:set value="16" target="${stu}" property="age"/>
<%--输出javaBean对象的属性值--%>
年龄:<c:out value="${stu.age}"/>
2.3<c:remove>
功能:主要负责移除变量
属性列表:
名称 |
说明 |
必须 |
默认值 |
var |
欲移出的变量名称 |
是 |
无 |
scope |
Var变量的JSP范围 |
否 |
page |
如:
<c:remove var="username" scope="session"/>
${sessionScope.username}—输不出结果
2.4<c:catch>
功能:主要用于捕获异常
属性列表:
名称 |
说明 |
必须 |
默认值 |
var |
用来储存错误信息的变量 |
否 |
无 |
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%--捕获异常,并将异常信息存储在var变量中--%>
<c:catch var="myexp">
<%
int i=0;
int j=3/0;
%>
</c:catch>
<h1>异常</h1>
<hr>
<c:out value="${myexp}"></c:out><%--输出异常--%>
<hr>
<h1>异常信息</h1>
<c:out value="${myexp.message}"/><%--获取异常信息--%>
<hr>
<h1>引起原因</h1>
<c:out value="${myexp.cause}"/><%--获取引起异常的原因--%>
2.5<c:if>
功能:主要用于进行if判断,如果为true,则输出标签体中的内容
名称 |
说明 |
必须 |
默认值 |
test |
如果表达式的结果为true,则执行体内容,false则相反 |
是 |
无 |
var |
用来存储test运算的结果(true或false) |
否 |
无 |
scope |
Var变量的JSP范围 |
否 |
page |
实例:利用<c:set>标签设置javaBean的属性age,在jsp页面中获取age,如果age<18,输出相应信息
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%--jsp页面默认是true,EL表达式被忽略--%>
<%@ page isELIgnored="false"%>
<%--定义一个javaBean对象--%>
<jsp:useBean id="stu" class="net.pcedu.student"/>
<%--通过<c:set>标签给javaBean对象的age属性设值--%>
<c:set value="16" target="${stu}" property="age"/>
<%--输出javaBean对象的属性值--%>
年龄:<c:out value="${stu.age}"/>
<%--当if判断为true时,输出标签体的内容--%>
<c:if test="${stu.age<18}" var="young" scope="session">对不起,未成年,不能访问这个网站...</c:if>
<%--输出if语句的判断结果--%>
判断结果:<c:out value="${sessionScope.young}"/>
2.6<c:choose>,<c:when>,<c:otherwise>
<c:when>中属性列表:
名称 |
说明 |
必须 |
默认值 |
test |
如果表达式的结果为true,则执行本体内容,false则相反 |
是 |
无 |
实例:从javaBean中获取color属性,并根据不同的属性值显示不同的颜色
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@ page isELIgnored="false"%>
<%--定义一个Color对象--%>
<jsp:useBean id="c" class="net.pcedu.Color"/>
<%--为Color对象设置属性--%>
<c:set value="blue" target="${c}" property="color"/>
<%--获取Color对象的属性值,并根据不同的属性值显示不同的颜色--%>
<c:out value="${c.color}"></c:out>
<c:choose>
<c:when test="${c.color eq ‘red‘}">
<font color=red face="华文行楷">你选择的颜色是:<c:out value="${c.color}"/></font>
</c:when>
<c:when test="${c.color eq ‘blue‘}">
<font color=blue face="华文行楷">你选择的颜色是:<c:out value="${c.color}"/></font>
</c:when>
<c:otherwise>
<font color=green face="华文行楷">你选择的颜色是:<c:out value="${c.color}"/>
</c:otherwise>
</c:choose>
2.7<c:forEach>
功能: <c:forEach>为循环控制,它可以将数组,集合(Collection)中的成员循序浏览一遍。
属性列表:
名称 |
说明 |
必须 |
默认值 |
var |
用来存放现在指定的成员 |
否 |
无 |
items |
被迭代的集合对象 |
否 |
无 |
varStatus |
用来存放现在指的相关成员信息 |
否 |
无 |
begin |
开始的位置 |
否 |
0 |
end |
结束的位置 |
否 |
最后一个成员 |
step |
每次迭代的间隔数 |
否 |
1 |
实例:
<%@ page contentType="text/html;charset=gbk"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ page import="java.util.*,net.pcedu.core.UserInfo" %>
<%--将javabean对象存放到集合中--%>
<%
List users=new ArrayList();
for(int i=0;i<5;i++)
{
UserInfo u=new UserInfo();
u.setName("jack-"+i);
u.setPwd("00"+i);
users.add(u);
session.setAttribute("users",users);
}
%>
<%--注意:EL中只可通过11个隐含对象来输出表达式中的内容(因此直接将List对象添加到EL表达式中不可用)--%>
<%--通过<c:forEach>迭代出集合中的信息>--%>
<h1>用户信息</h1>
<table>
<tr>
<th>用户名</th>
<th>密码</th>
<th>当前行的索引</th>
<th>已遍历的行数</th>
<th>是否第一行</th>
<th>是否最后一行</th>
</tr>
<c:forEach var="user" items="${users}" varStatus="status"><%--加上begin="1" end="3" step="1"属性,将只显示前三条记录--%>
<tr>
<td><c:out value="${user.name}"/></td>
<td><c:out value="${user.pwd}"/></td>
<td><c:out value="${status.index}"/></td><%--输出当前行的索引号--%>
<td><c:out value="${status.count}"/></td><%--输出已遍历的行数--%>
<td><c:out value="${status.first}"/></td><%--输出当前行是否是第一行--%>
<td><c:out value="${status.last}"/></td><%--输出当前行是否是最后一行--%>
</tr>
</c:forEach>
</table>
<%--通过<c:forEach>输出从1到10的数据--%>
<c:forEach var="num" begin="1" end="10" step="2">
<c:out value="->${num}"></c:out>
</c:forEach>
<%--通过<c:forEach>遍历数组,枚举,集合等--%>
<%
int[]intarr=new int[]{10,20,30,40,50};
String[]strarr=new String[]{"I","am","a","handsome","boy"};
Vector v=new Vector();
v.add("This");
v.add("is");
v.add("a");
v.add("Enumeration");
v.add("example");
Enumeration e=v.elements();
HashMap h=new HashMap();
h.put("hello","0");
h.put("hello1","1");
h.put("hello2","2");
h.put("hello3","3");
h.put("hello4","4");
request.setAttribute("intarr",intarr);
request.setAttribute("strarr",strarr);
request.setAttribute("e",e);
request.setAttribute("h",h);
%>
<br>
<h1>--遍历整形数组--</h1>
<%--遍历整形数组--%>
<c:forEach var="i" items="${intarr}">
<c:out value="${i}"></c:out>
</c:forEach>
<br>
<h1>--遍历字符串数组--</h1>
<%--遍历字符串数组--%>
<c:forEach var="s" items="${strarr}">
<c:out value="${s}"></c:out>
</c:forEach>
<br>
<h1>--遍历枚举--</h1>
<%--遍历枚举--%>
<c:forEach var="ee" items="${e}">
<c:out value="${ee}"></c:out>
</c:forEach>
<br>
<h1>--遍历HashMap--</h1>
<%--遍历HashMap--%>
<c:forEach var="hh" items="${h}">
<c:out value="${hh.key}"/>=<c:out value="${hh.value}"/>
</c:forEach>
2.8<c:forTokens>
功能:将字符串以指定的一个或多个字符分割开来
属性列表
名称 |
说明 |
必须 |
默认值 |
var |
用来存放现在的成员 |
否 |
无 |
items |
被迭代的字符串 |
是 |
无 |
delims |
定义用来分割字符串的字符 |
是 |
无 |
varStatus |
用来存放现在指定的相关成员信息 |
否 |
无 |
begin |
开始位置 |
否 |
0 |
end |
结束位置 |
否 |
最后一个成员 |
step |
每次迭代的间隔数 |
否 |
1 |
实例:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%--通过一个分割符将字符串划分为数组,并遍历出来--%>
<c:forTokens var="ele" items="blue,red,green|yellow|pink,black|white" delims="|">
<c:out value="${ele}"/>||
</c:forTokens>
<br>
<%--通过多个分割符将字符串划分问数组,并遍历出来--%>
<c:forTokens var="ele" items="blue,red!green|yellow;pink;black|white" delims="|;,!">
<c:out value="${ele}"/>||
</c:forTokens>
2.9<c:import>
功能: <c:import>可以把其他静态或动态文件包含至本身JSP网页。
属性列表:
名称 |
说明 |
必须 |
默认值 |
url< 热心网友 时间:2022-04-09 02:50 JSP标准标签库(JSPStandard Tag Library)是Java EE网络应用程序开发平台的组成部分。它在JSP规范的基础上,扩充了一个JSP的标签库来完成一些通用任务,比如XML数据处理、条件执行、数据库访问、循环和国际化。 jstl标记的类型是核心标记库。 声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
懂视 51dongshi.com 版权所有
Copyright © 2019-2024 |