• 1. JAVA WEB开发实战经典第9章:JSP标签Java Web程序设计
  • 2. 本章目标了解JSTL的主要作用; 在项目中安装并配置JSTL。 掌握核心标签库提供的主要标签; 可以完成输出、判断、迭代等常见操作;
  • 3. JSTL简介JSTL(JSP Standard Tag Library,JSP标准标签库)是一个开放源代码的标签组件,由Apache的Jakarta小组开发 为实现Web应用程序常用功能而开发的标签库,使用JSTL可以提高JSP页面的开发效率。 JavaEE5的标准技术
  • 4. JSTL简介JSTL可以直接从http://tomcat.apache.org/taglibs/standard/下载 下载的JSTL.是以jar包的形式存在的,将此Jar包下lib目录中的两个文件standard.jar和jstl.jar保存在Web应用的WEB-INF/lib目录之中。 或者可以直接在Tomcat安装目录的\webapps\examples\WEB-INF\lib目录中找到这两个包并复制到Web应用的WEB-INF/lib目录之中
  • 5. JSTL简介myEclipse中内置了JSTL,如右图,可以直接使用内置的JSTL
  • 6. JSTL简介在JSP页面中使用JSTL,必须使用taglib指令来引入标签库,例如: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 这样就可以使用前缀c引用标签库中的JSTL标签了。 JSTL提供了5个库,每个库提供一组实现特定功能的标签
  • 7. JSTL主要的标签分类 功能领域URI前缀标签配置文件描述核心标签库http://java.sun.com/jsp/jstl/corecc.tld定义了属性管理、迭代、判断、输出I18N格式标签库http://java.sun.com/jsp/jstl/fmtfmtfmt.tld格式化数据SQL标签库http://java.sun.com/jsp/jstl/sqlsqlsql.tld定义了查询数据库操作XML标签库http://java.sun.com/jsp/jstl/xmlxmlx.tld用于操作XML数据函数标签库http://java.sun.com/jsp/jstl/functionsfnfn.tld提供了一些常用的操作函数,例如:字符串函数
  • 8. 简单的JSTL程序<%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL

  • 9. 核心标签库 核心标签库是JSTL中最重要的部分,也是在开发中最常使用到的部分,在核心标签库里主要完成的就是流程控制、迭代输出等操作 No.功能分类标签名称描述1基本标签输出属性内容2设置属性内容3删除指定属性4异常处理5流程控制标签条件判断6多条件判断,可以设置标签7迭代标签输出数组、集合8字符串拆分及输出操作9URL相关标签传递参数,配合其他三种使用10将一个指定的路径包含到当前页进行显示11根据路径和参数生成一个新的URL12客户端跳转
  • 10. 标签 标签主要用于输出内容,这一点与表达式语言EL或表达式输出的scriptlet是一样的,此标签的语法如下: 默认值
  • 11. 标签的属性 No.属性名称EL支持描述1value√设置要显示的内容,可以是普通字符串,也可是EL2default√如果要显示的value内容为null,则显示default定义的内容3escapeXml√是否转换字符串,例如将“>”转换成>,默认设置为true
  • 12. 使用 —— out_demo.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% pageContext.setAttribute("info","") ; %>

    属性存在:

    属性不存在:

    属性不存在:没有此内容!

  • 13. 标签 标签主要用来将属性保存在四种属性范围之中,语法如下: 设置作用域变量的值 属性内容 设置对象的属性值 属性值
  • 14. 标签的属性 No.属性名称EL支持描述1value√设置属性的内容,如果为null则表示删除属性2var×设置属性名称3scope×设置属性的保存范围,默认保存在page范围之中4target√存储的目标对象5property√指定的target对象的属性
  • 15. 通过设置属性 —— set_demo.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL

    属性内容:${info}

  • 16. 定义JavaBean —— SimpleInfo.java package edu.imut.jstldemo.vo; public class SimpleInfo { private String content ; public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
  • 17. 设置属性 —— set_bean.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ page import=“edu.imut.jstl.vo.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% // 定义一个JavaBean SimpleInfo sim = new SimpleInfo() ; // 实例化SimpleInfo对象 request.setAttribute("simple",sim) ; // 设置属性 %>

    属性内容:${simple.content}

  • 18. 标签 标签在程序中的主要作用是用来删除指定范围中的属性,功能与removeAttribute()方法类似,语法如下:
  • 19. 标签的属性 No.属性名称EL支持描述1var×要删除属性的名称,必须指定此名称2scope×删除属性的保存范围,默认保存在page范围之中
  • 20. 删除属性 —— remove.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL

    属性内容:${info}

  • 21. 标签 标签主要用来处理程序中产生的异常,并进行相关的异常处理,语法如下: 有可能发生异常的语句
  • 22. 标签的属性 No.属性名称EL支持描述1var×用来保存异常信息的属性名称
  • 23. 使用JSTL进行异常处理 —— catch.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% // 在此处产生异常 int result = 10 / 0 ; // 被除数为0产生异常 %>

    异常信息:${errmsg}

  • 24. 标签 标签主要是进行判断语句的使用,功能与在程序中使用的if语法是一样的,语法如下: 满足条件时执行的语句
  • 25. 标签的属性 No.属性名称EL支持描述1test√用于判断条件,如果条件为true,则执行标签体的内容2var×保存判断的结果3scope×指定判断结果的保存范围,默认是page范围
  • 26. 判断操作 —— if_demo.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL

    欢迎${param.ref}光临!

    10比30小!

  • 27. 标签 标签可以提供的功能只是针对于一个条件的判断,如果现在要同时判断多个条件,可以使用:,但是标签只能作为的父标签出现。 条件选择 标签体内容( 条件判断 满足条件时执行的语句 当所有不满足时,执行本标签体内容
  • 28. 多条件判断 —— choose.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% pageContext.setAttribute("num",10) ; %>

    num1属性的内容是10!

    num1属性的内容是20!

    没有一个条件满足!

  • 29. 标签 标签的主要功能为循环控制,可以遍历变量也可以遍历集合中的元素,语法如下: 具体的操作代码 varStatus:有四种状态 index:当前循环的索引值;count:已经循环的次数 first:是否为第一个位置;last:是否为最后一个位置
  • 30. 标签 标签的主要功能为循环控制,可以将集合中的成员进行迭代输出,功能与Iterator接口类似,语法如下: 具体的操作代码
  • 31. 标签的属性 No.属性名称EL支持描述1var×用来存放集合中的每一个对象2items√保存要遍历的集合,可以是数组、Collection(List、Set)及Map3varStatus×状态4begin√集合的开始位置,默认从0开始5end√集合的结束位置,默认为集合的最后一个元素6step√每次迭代的间隔数,默认是1
  • 32. 输出数组 —— print_arrays.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% // 定义数组 String info[] = {"MLDN","LiXingHua","www.MLDNJAVA.cn"} ; pageContext.setAttribute("ref",info) ; // 将数组保存在page范围之中 %>

    输出全部: ${mem}、

    输出全部(间隔为2): ${mem}、

    输出前两个: ${mem}、

  • 33. 输出集合 —— print_list.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ page import="java.util.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% // 定义集合 List all = new ArrayList() ; // 实例化集合对象 all.add("MLDN") ; // 向集合中加入内容 all.add("LiXingHua") ; // 向集合中加入内容 all.add("www.MLDNJAVA.cn") ; // 向集合中加入内容 pageContext.setAttribute("ref",all) ; // 将数组保存在page范围之中 %>

    输出全部: ${mem}、

  • 34. 输出Map集合 —— print_map.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ page import="java.util.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% // 定义集合 Map map = new HashMap() ; // 实例化集合对象 map.put("mldn","www.MLDNJAVA.cn") ; // 向集合中加入内容 map.put("lxh","LiXingHua") ; // 向集合中加入内容 pageContext.setAttribute("ref",map) ; // 将数组保存在page范围之中 %>

    ${mem.key} --> ${mem.value}

  • 35. 标签 标签也是用于输出操作的,它更像是String类中的split()方法和循环输出的一种集合,标签的语法如下: 标签体内容
  • 36. 标签的属性 No.属性名称EL支持描述1var×用来存放集合中的每一个对象2items√要输出的字符串3delims×定义分隔字符串的内容4varStatus×存放当前对象的相关信息5begin√开始的输出位置,默认从0开始6end√结束的输出位置,默认为最后一个成员7step√迭代输出的间隔
  • 37. 使用进行输出 —— print_tokens.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL <% String info = "www.MLDNJAVA.cn" ; // 定义字符串,按照“.”拆分 pageContext.setAttribute("ref",info) ; // 保存在page范围之中 %>

    拆分的结果是: ${con}、

    拆分的结果是: ${con}、

  • 38. 标签标签用于将参数传递给所包含的文件,主要用在标签中指定请求参数。它有两种语法格式: param value 其中name属性指定参数名,value属性指定参数值。
  • 39. 标签 标签可以将其他页面的内容包含进来一起显示,这一点与标签的功能类似,但是与标签不同的是,可以包含外部的页面,本标签语法如下: 标签体内容 []
  • 40. 标签的属性 No.属性名称EL支持描述1url√指定要包含的文件路径2context√如果要访问在同一个WEB容器下的其他资源时设置,必须以“/”开头3var×储存导入的文件内容4scope×定义var的保存范围,默认是page范围5charEncoding√定义的字符编码6varReader×储存导入的文件内容,以Reader类型存入
  • 41. 导入http://www.mldn.cn站点 —— import_url.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL
  • 42. 接收参数<%@ page contentType="text/html" pageEncoding=" UTF-8 "%>

    name参数:${param.name}

    url参数:${param.url}

    <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL
  • 43. 标签 标签可以直接在产生一个URL地址,语法如下:
  • 44. 标签的属性 No.属性名称EL支持描述1value√要执行的URL2context√如果要访问在同一个WEB容器下的其他资源时设置,必须以“/”开头3var×储存导入的文件内容4scope×定义var的保存范围,默认是page范围
  • 45. 产生URL地址 —— create_url.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL 新的地址
  • 46. 标签 在学习JSP内置对象的时候讲解过可以通过response.sendRedirect()操作进行客户端跳转,在JSTL中提供了一个与之类似的标签,语法如下:
  • 47. 标签的属性 No.属性名称EL支持描述1url√跳转的地址2context√如果要访问在同一个WEB容器下的其他资源时设置,必须以“/”开头
  • 48. 客户端跳转到param.jsp文件之中 —— redirect.jsp <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> JSTL
  • 49. 小结JSTL是一个第三方的开源标签库; JSTL操作时需要自己手工配置,如果通过MyEclipse开发,则可以直接使用。 核心标签库完成了一些基本的操作功能,可以定义属性、输出、判断、迭代操作 从开发上来讲,判断、迭代操作使用较多。