JSTL(JavaServer Page Standard Tag  Library):JSP标准标签库。它封装了JSP应用的通用核心功能。

1.准备工作

使用JSTL前需要下载所需文件,下载地址及安装教材可参阅:http://www.runoob.com/jsp/jsp-jstl.html

测试类 Person.java

  1. public class Person {
  2. private String name;
  3. private String sex;
  4. private int age;
  5.  
  6. public String getName() {
  7. return name;
  8. }
  9.  
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public String getSex() {
  14. return sex;
  15. }
  16. public void setSex(String sex) {
  17. this.sex = sex;
  18. }
  19. public int getAge() {
  20. return age;
  21. }
  22. public void setAge(int age) {
  23. this.age = age;
  24. }
  25. }

2、c:out标签:类似out.printf(xxx)

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3.  
  4. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>Insert title here</title>
  10. </head>
  11. <body>
  12.  
  13. <%
  14. request.setAttribute("requestAttribute", "requestValue");
  15. %>
  16.  
  17. <jsp:useBean id = "per" class = "com.myclass.Person" scope = "request" /> <!-- Person per = new Person()-->
  18.  
  19. <jsp:setProperty name = "per" property = "name" value = "zhansan"/>
  20.  
  21. <c:out value = "zhansan"/><br> <!-- out标签直接输出字符串 -->
  22. <c:out value = "${requestAttribute}"></c:out><br> <!-- out标签输出属性-->
  23. <c:out value = "${per.name}"></c:out><br> <!-- out标签输出对象中属性 -->
  24.  
  25. <!-- 当输出为空时,输出默认值-->
  26. <c:out value = "${requestAttri}" default = "该属性不存在!"/><br> <!-- default设置默认值 -->
  27. <c:out value = "${requestAttri}">该属性不存在</c:out><br> <!-- 标签体设置默认值 -->
  28. <c:out value = "<%=null %>" default = "该属性不存在!"/>
  29.  
  30. </body>
  31. </html>

3、c:set标签:主要用于设置属性、对象中属性的值。类似setXXX,setAttribute(var,value);

  1. <head>
  2. <meta charset="UTF-8">
  3. <title>Insert title here</title>
  4. </head>
  5. <body>
  6.  
  7. <%
  8. request.setAttribute("requestAttri", "requestValue");
  9. %>
  10.  
  11. <jsp:useBean id = "per" class = "com.myclass.Person" scope = "request" /> <!-- Person per = new Person()-->
  12.  
  13. <c:set var = "test" value = "test"/> <!-- 没有指定属性范围,默认是pageScope -->
  14. ${pageScope.test}
  15.  
  16. <!-- <c:set var = "属性名称" value = "属性值" scope = "属性作用域" /> -->
  17. <c:set var = "sessionName" value = "sessionValue" scope = "session"/> <!-- 在指定范围中设置属性 (value属性设置值) -->
  18. <!-- 相当于session.setAttribute("sessionName","sessionValue") -->
  19. <c:out value = "${sessionName}" />

  20.   <!-- <c:set var = "属性名称" scope = "属性作用域"> 属性值 </c:set> -->
  21. <c:set var = "requestName" scope = "request">requestValue</c:set>   <!--在指定范围中设置属性 (标签体设置值)-->
  22. <!-- 相当于request.setAttribute("requestName","requestValue") -->
  23. <c:out value = "${requestName}" />

  24.   <!-- <c:set target = "对象名称" property = "属性名" value = "属性值"> -->
  25. <c:set target = "${per}" property = "name" value = "zhangsan"/>   <!--通过标签 设置对象属性 类似 per.name = "zhangsan"-->
  26. <c:out value="${per.name}"></c:out>
  27. <c:out value="${per}"></c:out> <!-- 此处的${per} 类似 System.out.print(per)-->
  28.  
  29. </body>
  30. </html>

4、c:remove标签:移除属性,类似(xxx.remove(name))

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import = "java.util.*,com.myclass.*" %>
  4. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>Insert title here</title>
  10. </head>
  11. <body>
  12. <c:set var = "testRemove" value = "value" scope = "session"/>
  13. <!-- <c:remove var = "属性名" scoep = "[page|request|session|application]" /> 删除指定作用域中的var属性-->
  14. <c:remove var="testRemove" scope="session"/> <!-- 类似 session.removeAttribute("testRemove") -->
  15. <c:out value = "${tempRemove }" default="该属性不存在"/>
  16. </body>
  17. </html>

5、c:if 标签:用于判断,类似if(test == [true | false]){语句}

  1. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Insert title here</title>
  7. </head>
  8. <body>
  9. <c:set var = "age" value = "19" scope = "session"/>
  10. <%-- <c:if test = "判断条件" var = "属性名" scope = "设置保存范围" /> --%>
  11. <!-- 判断的结果(true|false)会存储在var中 -->
  12. <c:if test = "${age >= 18 }" var="isAdult" scope = "session" >
  13. <h2> 成年</h2> <!-- 满足条件执行的语句 -->
  14. </c:if>
  15. <c:if test = "${!isAdult}" > <!-- !isAdult 和isAdult互反所以只会执行一个 -->
  16. 未成年
  17. </c:if>
  18. 是否成年:${isAdult}
  19.  
  20. </body>
  21. </html>

6、c:choose标签:分支选择,类似switch。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import = "java.util.*,com.myclass.*" %>
  4. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>Insert title here</title>
  10. </head>
  11. <body>
  12. <c:set var = "score" value = "60" scope = "session"/>
  13. <c:choose >
  14. <c:when test="${score >= 90}"> 优秀</c:when> <!-- test为true则执行对应语句并跳出choose -->
  15. <c:when test="${score >= 80}"> 良好</c:when>
  16. <c:when test="${score >= 70}"> 一般</c:when>
  17. <c:when test="${score >= 60}"> 及格</c:when>
  18. <c:otherwise>不及格</c:otherwise> <!-- 所有选项都不满足则执行otherwise中的语句 -->
  19. </c:choose>
  20.  
  21. </body>
  22. </html>

7、c: forEach标签:主要用于输出可迭代对象和控制迭代次数(for)

实现了Collection接口的对象,都可以使用forEach输出。

  1. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Insert title here</title>
  7. </head>
  8. <body>
  9. <!-- forEach输出list -->
  10. <%
  11. List<String> list = new LinkedList<String>();
  12. for(int i = 0; i < 5; i++){
  13. list.add("赵" + i);
  14. }
  15. request.setAttribute("list", list);
  16. %>
  17.  
  18. <c:forEach items = "${list}" var = "li">
  19. <c:out value = "${li}"/><!-- li就代表链表中一个对象(String) -->
  20. </c:forEach><br>
  21.  
  22. <!-- forEach输出map -->
  23. <%
  24. Map<String,Person> map = new HashMap<String,Person>();
  25. for(int i = 0; i < 5; i++){
  26. map.put("" + i,new Person("钱" + i, i % 2 == 0 ? "man" : "woman", i));
  27. }
  28. request.setAttribute("map",map);
  29. %>
  30. <c:forEach items = "${map}" var = "m" ><!-- m代表map中一个对象,可通过m.key获取键,m.value获取值(person对象) -->
  31. ${m.key } ${m.value.name} ${m.value.sex} ${m.value.age}<br>
  32. </c:forEach><br>
  33.  
  34. <!-- 控制迭代次数 并输出状态-->
  35. <table>
  36. <td></td><td> 是否是第一个</td><td>是否是最后一个</td><td>计数(当前是第几个)</td>
  37. <c:forEach var = "i" begin="1" end = "11" step = "2" varStatus="st"> <!-- 步长(step)为2 for(i = 1; i <= 11 ; i += 2 ) -->
  38. <tr><!-- 迭代的属性 当前属性是否是第一个 当前属性是否是最后一个 计数是第几个属性,从1开始-->
  39. <td>${i }</td><td> ${st.first}</td><td>${st.last }</td><td>${st.count}</td>
  40. </tr>
  41. </c:forEach>
  42. </table>
  43.  
  44. </body>
  45. </html>

8、forTokens标签: 将字符串分割成子串然后迭代。类“www.google.com”.split(".")

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import = "java.util.*,com.myclass.*" %>
  4. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>Insert title here</title>
  10. </head>
  11. <body> <!-- 0 1 2 --> <!--类似 l[3] = {"www","google","com"}; for(i = 0; i <=2 ; i+=2) printf(l[i]) -->
  12. <c:forTokens items="www.google.com" delims="." var = "l" begin = "0" end = "2" step = "2">
  13. ${l}<br>
  14. </c:forTokens>
  15. <!-- items为被切割的字符串,delims 为切割的依据 -->
  16. </body>
  17. </html>

9.c:redirect:重定向将重定向到指定URL。

  1. <%@ page language="java" import = "java.util.*,com.myclass.*" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>Insert title here</title>
  9. </head>
  10. <body>
  11. <c:redirect url="http://www.baidu.com"></c:redirect> <!-- 重定向到百度 -->
  12. </body>
  13. </html>

自定义标签及自定义实现out、if、forEach标签。

参考资料:

https://blog.csdn.net/qq_42246139/article/details/80623607

http://www.runoob.com/jsp/jsp-jstl.html

1.5 JSP标准标签库(JSTL)(核心标签 out、set、remove、if、choose、forEach、forTokens、redirect)的更多相关文章

  1. JSP标准标签库(JSTL)--核心标签库 c

    核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作 功能分类: 1. 基本标签: <c:out>:输出属性内容 <c:set>:设置属性内容 <c:rem ...

  2. 小峰servlet/jsp(6)jstl核心标签库

    一.引入jstl 需要jstl.jar;standard.jar; 二.jstl核心标签库: c:out         内容输出标签; c:set      用来设置4种属性范围值的标签: c:re ...

  3. Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

    前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...

  4. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  5. javaweb学习总结(二十八)——JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  6. javaWeb学习总结(9)- JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  7. JSP标准标签库(JSTL)--XML标签库 x

    ³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理.  XML标 ...

  8. JSP标准标签库(JSTL)--SQL标签库 sql

    了解即可.SQL标签库 No. 功能分类 标签名称 描述 1 数据源标签 <sql:setDataSource> 设置要使用的数据源名称 2 数据库操作标签 <sql:query&g ...

  9. JSP标准标签库(JSTL)--国际化标签库 fmt

    JSTL中使用fmt.tld作为格式化标签库的定义文件 No. 功能分类 标签名称 描述 1 国际化标签 <fmt:setLocale> 设置一个全局的地区代码 2 <fmt:req ...

  10. JSP标准标签库(JSTL)--函数标签库 fn

    和String的方法类似,就是对String的一种封装. No. 函数标签名称 描述 1 ${fn:contains()} 查询某字符串是否存在,区分大小写 2 ${fn:containsIgnore ...

随机推荐

  1. HDU 4417 划分树写法

    Problem Description Mario is world-famous plumber. His “burly” figure and amazing jumping ability re ...

  2. PHP正则匹配与替换的简单例子

    PHP正则匹配与替换的简单例子,含一个匹配获取加租字体例子和一个匹配替换超链接的例子. 1.查找匹配 <b> 与 </b> 标签的内容: <?php $str = &qu ...

  3. Java之戳中痛点 - (2)取余用偶判断,不要用奇判断

    取余判断原则:取余用偶判断,不要用奇判断 先看一个 程序: package com.test; import java.util.Scanner; public class t1 { public s ...

  4. apply()和call()

    每个函数都包含俩个非继承而来的方法:apply() 和 call(),这俩个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值,以扩充函数赖以运行的作用域.一般来讲,thi ...

  5. Rem与em的简单理解

    Rem与em的简单理解 Em单位与像素px的转换 所得的像素值 = 当前元素的font-size * em的值 比如:div的font-size:12px 10em等同于120px 12*10 =12 ...

  6. jsp中的一些细节和注意要点。。。。。简记

    一: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en&quo ...

  7. 联系人数据存储Demo源代码

    源码下载地址:07-联系人数据存储.zip35.8 KB // MJPerson.h // //  MJPerson.h //  07-联系人数据存储 // //  Created by apple ...

  8. 类的 propert,classmethod,ataticmethod 方法 与 多态

    一 .property 将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数 然后计算出来的,这种特性的使用方式遵循了统一访问的原则 egon. ...

  9. Python用户登陆

    #!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__:Dahlhin import sys userinfo = r'userinfo.txt ...

  10. git web 服务器的搭建【转】

    转自:http://blog.csdn.net/transformer_han/article/details/6450200 目录(?)[-] git服务器搭建过程 需求 硬件需求一台Ubuntu或 ...