一、JSTL简介

  JSTL的全称:JSP Standard Tag Libary,JSP的标准标签库

  JSTL的作用:

    提供给Java web开发人员一个标准通用的标签函数库。

    和EL来取来传统直接在页面上嵌入Java程序的做法,以提供程序可读性、维护性和方便性。

  JSTL的版本:

    JSTTL的主要版本是1.0、1.1和1.2。

    1.0版本EL表达式还没有纳入官方规范。

    1.0和1.2版本EL表达式已经纳入官方规范。


二、标签

  输出常量和域范围中的变量(value属性,使用EL表达式)。

  输出默认值(default属性)。

  默认HTML标签不转义(escapeXML)。

属性名 是否支持EL 属性类型 属性描述
value Object 指定要输出的内容
escapeXML Boolean 指定是否将>、<等特殊字符进行HTML编码转换后再进行输出,默认值是true。
default Object 指定如果value属性的值为null时所输出的默认值


示例:输出常量

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
    
  


示例:输出域中的变量

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
    
    <%
    	request.setAttribute("name", "你好,世界");
     %>
     
  


示例:输出默认值

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
    
     
  


示例:输出HTML标签

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
   
   	超链接">
   
  

默认情况下,输出的是字符串,所以要加上escapeXml="false"属性。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
   
   	超链接" escapeXml="false">
   
  


三、标签

  向4个域中存入值(var value scope属性)。

  设置web域中java.util.Map类型的属性对象或Javabean类型的属性对象的属性(target prperty value属性)。

属性名 是否支持EL 属性类型 属性描述
value Object 用于指定属性值
var × String 用于指定要设置的web域属性的名称
scope × String 用于指定属性所在的web域
target Object 用于指定要设置属性的对象,这个对象必须是Javabean对象或java.utl.Map对象
property String 用于指定当前要为对象设置的属性名称


示例:向4个web域对象存入值

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
   
   	
   
  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
  
  	<%
  	request.setAttribute("name", "呵呵");
   %>
   
  
  
   
  	
   
  


示例:修改Javabean对象存入值

<%@page import="cn.vo.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
 
 <%
 	request.setAttribute("user", new User("你好","世界"));
  %>
 
 
 ${user.username }
 
  


四、标签

  标签用于删除各种web域中的值。

  其语法格式如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
  
	
	${i}
	
	
	${i}
  


五、标签

  标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:

  

  var属性用于标识标签捕获的异常对象,它将保存在page这个web域中。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
		<%
			int i = 10 / 0;
		 %>
	  
  ${e.message }
  
  


六、标签

  标签可以构造简单的"if-then"结构的条件表达式。

属性名 是否支持EL  属性类型 属性描述
test boolean 决定是否处理标签体中的内容的条件表达式
var × String 用于指定将test属性的之后定结果保存到某个web域中的某个属性的名称
scope × String 指定将test属性的执行结果保存到那个web域中
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
  	
  		正确
  	
  
  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
	
  	
  		正确
  	
  	${x }
  
  


六、标签

  标签用于指定多个条件选择的组合边界,它必须和标签一起使用。使用标签、这三个标签,可以构造类似“if-else”的复杂条件判断结构

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
	
	
		
			i的值是10
		
		
			i的值不等于10
		
	
  
  

  

七、标签

  标签用于对一个集合对象中的元素进行循环迭代操作,或者按照指定的次数重复迭代标签体中的内容。

属性名 是否支持EL 属性类型 属性描述
var × String 指定将当前迭代到的元素保存到page这个web域中的属性名称
varstatus × String 记住用于保存迭代信息的对象
items 任何支持的类型 将要迭代的集合对象
begin int 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编码;如果没有指定items属性,就从begin指定的值开始迭代,直到end值结束迭代
end int 参看begin属性的描述
step int 指定迭代的步长


示例:遍历数组

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
	<%
		String[] str = {"哈哈","呵呵"};
		request.setAttribute("str", str);
	 %>
	
		${s}
	
	
		
	  
  

示例:遍历List集合

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
	<%
		List list = new ArrayList();
		list.add("哈哈");
		list.add("呵呵");
		list.add("嘻嘻");
		request.setAttribute("list",list);
	 %>
	
		${i}
	
	
		
	  
  


示例:遍历Map集合

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
	<%
		Map map = new HashMap();
		map.put("a", "aa");
		map.put("b", "bb");
		request.setAttribute("map",map);
	 %>
	
		${entry.key }
		${entry.value}
	
	
		
	  
  


示例:从1到10遍历

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
		${i}
	
		
  


示例:计算从1加到100的和

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
	
		
	
	${sum }	
  


varStatus属性

  记录迭代相关的信息

属性 类型 意义
index number 现在指到成员的索引
count number 总共指到成员的总数
first boolean 现在指到的成员是否为第一个成员
last boolean 现在指到的成员是否为最后一个成员

示例:遍历10到100的偶数,每到第三个数,显示为红色

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
		
			
				${i }
			
			
				${i }
			
		
	
	
  


八、标签

  在jsp页面进行URL的相关操作时,经常需要在URL地址后面附加一些参数。标签可以嵌套在以及标签内,为这些标签所使用的URL地址附加参数。

  标签在为一个URL地址附加参数的时候,会自动对参数值进行URL编码。


九、标签

名称 说明 EL 类型 必须 默认值
url 一文件被包含的地址 String 
context 虚拟路径 String
var 存储被包含文件的内容(以String类型存入) × String
scope var变量的jsp范围 × String page
charEncoding 被包含文件之内容的编码格式 String
varReader 存储被包含文件的内容(以Reader类型存入) × String

haha.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    My JSP 'haha.jsp' starting page
    
	
	
	    
	
	
	

  
  
  
    哈哈
    
    
  

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
  


将页面包含在变量之中

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
	
	${i }
	
	
  


传递参数

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    My JSP 'haha.jsp' starting page
    
	
	
	    
	
	
	

  
  
  
  ${param.haha}
    哈哈
    
    
  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	
		
	
	
	${i }
	
	
  


十、标签

  标签用于在jsp页面中构造一个URL地址,其主要目的在于实现URL重写。URL重写就是将会话标识号以参数形式附加到URL地址的后面。


  其实,就是进行session的追踪。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    JSTL标签库
  
  
  
	
	haha.jsp
  


十一、标签

  用于实现请求重定向。

属性名 是否支持EL 属性类型 属性描述
url String 指定要转发或重定向到的目标资源的URL地址
context String 当要使用相对路径重定向到哦同一个服务器下的其他web应用程序中的资源的时候,context属性指定其他web应用程序的名称