在JSP中写Java代码是一件很恶心的事情,代码量少的话还可以,要是多的话,就蛋疼了,整个页面都是<%  %>所以EL表达式和JSTL就应运而生了,这里我们注重讲解一下JSTL标签的使用:

首先来开一下JSTL的语法:

JSTL语法及参数 
JSTL包含以下的标签: 
常用的标签:如<c:out>、<c:remove>、<c:catch>、<c:set>等 
条件标签:如<c:if><c:when>、<c:choose>、<c:otherwise>等 
URL标签:如<c:import>、<c:redirect>和<c:url>等 
XML标签:如<xml:out>等 
国际化输出标签:如<fmt:timeZone>等 
SQL标签:如<sql:query>、<sql:update>、<sql:transaction>等

一般用途的标签:

1.<c:out>

没有Body时的语法 
<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”]/> 
有Body时的语法 
<c:out value=”value” [escapeXml=”{true|false}”]> 
这里是Body部分 
</c:out> 
名字 类型 描述 
value Object 将要输出的表达式 
escapeXml boolean 确定以下字符:<,>,&,’,”在字符串中是否被除数,默认为true 
default Object 如果vaule计算后的结果是null,那么输出这个默认值

2.<c:set>

这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。他类似于<%request.setAttrbute(“name”,”value”);%> 
语法1:使用value属性设定一个特定范围中的属性。 
<c:set value=”value” var=”varName” [scope=”{page|request|session|application}”]/> 
语法2:使用value属性设定一个特定范围中的属性,并带有一个Body。 
<c:set var=”varName” [scope=”{page|request|session|application}”]> 
Body部分 
</c:set> 
语法3:设置某个特定对象的一个属性。 
<c:set value=”value” target=”target” property=”propertyName”/> 
语法4:设置某个特定对象的一个属性,并带有一个Body。 
<c:set target=”target” property=”propertyName”> 
Body部分 
</c:set> 
名字 类型 描述 
value Object 将要计算的表到式。 
var String 用于表示value 值的属性,如果要在其他标签中使用,就是通过这 个var指定的值来进行的。它相当于在标签定义了一个变量,并且这个变量只能在标签中的一个。 
scope String var的有效范围,可以是page|request|session|application中的一个 
target String 将要设置属性的对象,它必须是javabean或则java.util.Map对象 
property Object 待设定的Target对象中的属性名字,比如在javabean中有个name属性,提供了setUserId方法,那么这里填userId。

3.<c:remove>

<c:remove var=”varName” [scope=”{page|request|session|application}”]/>

4.<c:catch>

这个标签相当于捕获在它里边的标签抛出的异常对象 
<c:catch [var=”varName”]> //var是异常的名字 
内容 
</c:catch>

条件标签

1. <c:if>

语法1:无Body情况 
<c:if test=”testCondition” var=”varName” [scope=”page|request|session|application”]/> 
语法2:有Body的情况 
<c:if test=”testCondition” var=”varName” [scope=”page|request|session|application”]> 
Body内容 
</c:if> 
名字 类型 描述 
test Boolean 表达式的条件,相当于if()中的条件判断语句。 
var String 表示这个语句的名字。 
scope String var这个变量的作用范围。

2.<c:choose>

语法:<c:choose> 
Body内容(<c:when>和<c:otherwise>子标签) 
</c:choose> 
注意:它的Body只能由以下元素组成: 
1) 空格 
2) 0或多个<c:when>子标签,<c:when>必须在<c:otherwise>标签之前出现. 
3) 0个或多个<c:otherwise>子标签。

3.<c:when>

代表的是<c:choose>的一个条件分支,只能在<c:choose>中使用 
语法:<c:when test=”testCondition”> //test是boolean类型,用于判断条件真假 
Body语句 
</c:when>

4.<c:otherwise>

代表的是<c:choose>中的最后选择。必须在最后出现 
<c:otherwise> 
内容 
</c:otherwise>

迭代标签

1.<c:forEach> 
语法1:在Collection中迭代 
<c:forEach[var=”varName”] items=”collection” [varStatus=”varStatusName”] 
[begin=”begin”] [end=”end”] [step=”step”] 
Body内容 
</c:foeEach> 
语法2:迭代固定的次数. 
<c:forEach [var=”varName”] [varStatus=”varStatusName”] 
[begin=”begin”] [end=”end”] [step=”step”] 
Body内容 
</c:foeEach> 
名字 类型 描述 
var String 迭代的参数,它是标签参数,在其他标签中通过它来引用这个标签中的内容。 
Items Collection、ArrayList、 要迭代的items集合. 
Iterator、Map、String、 
Eunmeration等 
VarStatus String 表示迭代的状态,可以访问迭代自身的信息 
Begin int 表示开始迭代的位置。 
End int 表示结束迭代的位置。 
Step int 表示迭代移动的步长,默认为1。

URL相关的标签

1.<c:import>

语法1:资源的内容使用String对象向外暴露 
<c:import url=”url” [context=”context”] 
[var=”varName”] [scope=”{page|request|session|application}”] [charEncoding=”charEncoding”]> 
内容 
</c:import> 
语法2:资源的内容使用Reader对象向外暴露。 
<c:import url=”url” [context=”context”] 
varReader=”varReaderName” [charEncoding=”charEncoding”]> 
内容 
</c:import> 
名字 类型 描述 
url String 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源 
context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字。 
var String 参数的名字。 
scope String var参数的作用范围。 
cahrEncoding String 输入资源的字符编码。 
varReader String 这个参数的类型是Reader,用于读取资源。

2.<c:redirct>

语法1:没有Body的情况. 
<c:redirect url=”value” [context=”context”]/> 
语法2:有Body情况下,在Body中指定查询的参数 
<c:redirect url=”value” [context=”context”]> 
<c:param name=”name” value=”value”/> 
</c:redirect>

3.<c:url>

语法1:没有Body 
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page|request|session+application}”]/> 
语法2:有Body 
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page|request|session+application}”]> 
<c:param name=”name” value=”value”/> 
</c:url> 
名字 类型 描述 
value String URL值 
context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字 
var String 标识这个URL标量。 
Scope String 变量作用范围。

下面来看一下JSTL的具体用法:

首先定义一个Servlet中进行封装数据,然后转发到index.jsp页面中:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

/*************一个实体bean****************/
UserBean userBean = new UserBean();
userBean.setId("1001");
userBean.setName("jiangwei");
userBean.setAge(22);
userBean.setSex("男");
userBean.setBirth("1990-08-01");
request.setAttribute("userBean", userBean);
//request.getRequestDispatcher("/index.jsp").forward(request,response);

/************多个实体bean****************/
ArrayList<UserBean> userBeanList = new ArrayList<UserBean>();
for(int i=0;i<5;i++){
userBean.setId("1001");
userBean.setName("jiangwei");
userBean.setAge(22);
userBean.setBirth("1990-08-01");
userBeanList.add(userBean);
}
request.setAttribute("userBeanList", userBeanList);
request.getRequestDispatcher("/index.jsp").forward(request,response);
}

(红色部分是放到request域中的属性名称,在index.jsp页面中需要用这个属性来操作数据的)

index.jsp页面中使用JSTL:

(1)首先要使用JSTL标签的话,需要引导额外的jar包:jstl.jar和standard.jar

(2)然后在index.jsp页面中引入标签库:

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

(3)下面就可以使用JSTL标签库了:

<body>
    <!-- c:out标签的使用:输出 -->
     用户id:<c:out value="${userBean.id}" default="0"></c:out>
     用户姓名:<c:out value="${userBean.name}"></c:out>
     用户年龄:<c:out value="${userBean.age}"></c:out>
     用户性别<c:out value="${userBean.sex}"></c:out>
     用户的出生日期:<c:out value="${userBean.birth}"></c:out>
     <br><br>
     
     <!-- c:forEach标签的使用:迭代 -->
     <c:forEach var="userBean" items="${userBeanList}">
    用户id:<c:out value="${userBean.id}"></c:out>
    用户姓名:<c:out value="${userBean.name}"></c:out>
    用户年龄:<c:out value="${userBean.age}"></c:out>
    用户性别<c:out value="${userBean.sex}"></c:out>
    用户的出生日期:<c:out value="${userBean.birth}"></c:out>
    <br><br>
     </c:forEach>
     
     <!-- c:set标签的使用:设置变量 -->
     <c:set value="10元" var="r" scope="page"/>
         价格:<c:out value="${r}"/>
     <br><br>
     
     <!-- c:remove标签的使用:移除属性 -->
     <c:remove var="r" scope="page"/>
         价格:<c:out value="${r}"/>
         
     <!-- c:choose标签的使用:多分枝判断 -->
     <c:set var="luck" value="${userBean.id}"></c:set>
     <c:choose>
        <c:when test="${luck==8}">恭喜你中了一等奖!</c:when>
        <c:when test="${luck==6}">恭喜你中了二等奖!</c:when>
        <c:when test="${luck==9}">恭喜你中了三等奖!</c:when>
        <c:otherwise>谢谢参与,欢迎下次再来!</c:otherwise>
     </c:choose>
    <br><br>    
    
    <!-- c:if标签的使用:if判断 -->
    判断:<c:if test="${userBean.id==0}">是真的</c:if>
    <br><br>
    
    <!-- c:forTokens标签的使用:字符串的分割 -->
    <c:forTokens items="A,B,C,D,E,F,G" delims="," var="item">
          ${item}
    </c:forTokens>
    <br><br>
    
    <!-- c:import标签的使用:包含include.jsp页面 -->
    <c:import url="/include.jsp"></c:import>
    <br><br>
    
    <!-- c:redirect标签的使用:重定向打开include.jsp页面 -->
    <c:redirect url="/include.jsp"></c:redirect>
    <br><br>
    
    <!-- c:url标签的使用:将url地址转换成字符串 -->
    <c:url var="urlVar" value="/include.jsp"></c:url>
    url地址:<c:out value="${urlVar}"/>
    <br><br>
    
  </body>

转载于:https://www.cnblogs.com/roccheung/p/5797428.html

JSTL标签的用法详解相关推荐

  1. html中iframe标签的用法详解

    <iframe>是什么?html中iframe标签的用法详解 原创  2018-10-26 10:24:35 03690 经常进行页面布局的人对于HTML中的iframe标签一定不 ...

  2. php fieldset,html fieldset标签的用法详解

    标签将表单内容的一部分打包,生成一组相关表单的字段.从中提取两层意思: 1.fieldset存在于form里(这样说不准确): 2.分组打包的功能. field:[fiːld]领域:牧场:旷野:战场: ...

  3. php中的ol标签,html5中ol标签的用法详解

    这篇文章主要介绍了详解HTML5中ol标签的用法,是HTML5入门学习中的基础知识,需要的朋友可以参考下 定义和用法 标签定义有序列表. HTML 4.01 与 HTML 5 之间的差异 在 HTML ...

  4. iframe是什么?html中iframe标签的用法详解

    经常进行页面布局的人对于HTML中的iframe标签一定不陌生,iframe标签是一个内联框架,说白了就是用来在当前 HTML 页面中嵌入另一个文档的.刚刚接触前端的小伙伴可能不知道html中ifra ...

  5. html5才有的标签是什么意思,html5header标签是什么意思?html5header标签的用法详解(附实例)-...

    本篇文章主要的向大家介绍了关于html5 header标签的元素的基本介绍,和header标签的用法实例解析.下面就让我们一起来看看这篇关于html5 header标签的文章吧 一.首先我们来说说ht ...

  6. jstl标签: c:Foreach详解

    2019独角兽企业重金招聘Python工程师标准>>> 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍.运作方式为当条件符合时,就会持续重复执行的本体内容.为循 ...

  7. java标签用法详解_介绍一个javaWeb自定义标签的用法详解

    这篇文章主要介绍了javaWeb自定义标签用法,结合实例形式分析了javaweb自定义标签的功能.定义方法及执行原理,需要的朋友可以参考下 本文实例讲述了javaWeb自定义标签用法.分享给大家供大家 ...

  8. php include 加载html页面,html include标签的用法详解(附使用实例)

    本篇文章主要的讲述了html文件引入html文件的方法之一的include标签的方式,这是include标签的最早期的用法,虽然现在用的比较少,但还是希望大家能多了解一些关于include标签方面的知 ...

  9. html语言中注释标记,html注释代码<!--......--> 标签的用法详解

    别小看了简单的html注释代码标签,它的作用还是挺大的,对于复杂而庞大的代码量,有必要在需要说明,备注,解释的地方插入一些注释内容,方便以后编辑.修改.查询代码,还可以对某些不需要显示或执行的代码进行 ...

最新文章

  1. C++11 的新特性
  2. Oracle 左外连接的一些測试
  3. lower_bound和 upper_bound 用法(STL)
  4. Android什么是函数,什么是函数响应式编程(JavaAndroid版本)
  5. Mysql-高可用集群[MyCat中间件使用](三)
  6. 微信小程序view动态长度_微信小程序实现动态获取元素宽高的方法分析
  7. 洛谷 P2384 最短路题解
  8. Ubuntu 16.04安装录屏软件SimpleScreenRecorder
  9. 数据结构 2-0 线性表总结
  10. Openresty 与 Tengine
  11. BAT54C不断电源保护电路
  12. [360优化]让360安全卫士比火绒还好用 #调教360
  13. Android基本UI控件(一)
  14. 《谁动了我的奶酪》感悟
  15. IDEA从零到精通(21)之使用Maven clean发生错误Process terminated
  16. SpringSocial 开发 QQ 登录
  17. C语言对文本进行断句,用TextView实现富文本展示,点击断句和语音播报
  18. 怎么将html转换为mfc,MFC 创建HTML格式数据并显示
  19. OPPOr7s有android5.0,oppor7s历史版本
  20. linux挂载u盘出错_linux挂载U盘、移动硬盘后无法更改权限

热门文章

  1. python【洛谷算法题单-搜索】P1605 迷宫
  2. python 添加新元素时如果有重复的不进行添加_清华毕业大佬整理的Python基础22大知识点,自备热水,这货有点干...
  3. ai如何旋转画布_Ai绘制科技感晶格球体!
  4. 浅析阻碍网站内容被蜘蛛抓取的原因有哪些?
  5. 网站不同优化时段的优化方法介绍
  6. feachall php_timthumb.php详解
  7. 慕课python第四周测试卷_中国大学慕课用Python玩转数据期末考试查题公众号答案...
  8. matlab中非0即1函数,matlab 中统计一个数组中非零元素个素的函数名称是什么?
  9. java中sum=a+aa+aaa_Java面向对象基础IO系统
  10. Python读excel——xlrd