JSP 标准标签库JSTL与EL表达式
2017-02-04 10:45
627 查看
JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。
EL(Expression Language)表达式语言:用于计算和输出存储在标志位置(page、request、session、application)的java对象的值,然后对它们执行简单操作;EL是JSP2.0规范的一部分,只要容器支持Servlet2.4/JSP2.0,就可以在JSP2.0网页中直接使用EL。通常与
JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。
EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;
例如:
点号记法:${BeanName.beanProperty}
数组记法:${BeanName[“beanProperty”]
动态属性值:${loginInfoBean.spwd}
EL表达式的作用域:
使用EL的时候,默认会以一定顺序(pageContext、request、session、application)搜索四个作用域,将最先找到的变量值显示出来。
开启和关闭EL表达式
(1)开启方法
在servlet2.4之后默认方法为false,即可以不写或写成
<%@ page isELIgnored="false" %>
(2)关闭方法
<%@ page isELIgnored="true" %>
还有一种批量禁用EL的方法,可以在WEB-INF/web.xml中使用jsp-property-group标签批量禁用el,web.xml中进行如下配置。
核心标签库(c:)
.<c:out>标签用于输出一段文本到浏览器中
属性:
value 支持EL Object 指定要输出的内容
escapeXml 支持EL Boolean指定是否将>,<,&,',"等特殊字符进行HTML编码转换后再进行输出。默认为true
default 支持EL Object 指定如果value属性的值为null/""时所输出的默认值
.<c:set>标签用于把某个对象存在指定的域范围内,或者设置web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性
value 支持EL Object 用于指定属性值
var 不支持EL String 用于指定要设置的Web域属性的名称
scope 不支持EL String 用于指定属性所在的web域
target 支持EL Object 用于指定要设置属性的对象,这个对象必须是javaBean对象或java.util.Map对象
property 支持EL String 用于指定当前要为对象设置的属性名称
.<c:if test="">标签可以构造简单的if-then结构的条件表达式
test 支持EL boolean 决定是否处理标签体中的内容的条件表达式
var 不支持EL String 用于指定将test属性的执行结果保存到某个web域中的某个属性的名称
scope 不支持EL String 指定将test属性的执行结果保存到那个web域中
.<c:choose>标签用于指定多个条件选择的组合,和下面两个标签可以构造类似"if-elseif-else"的复杂条件判断结构
<c:when><c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html;charset=gb2312" %>
<c:set value="${param.count}" var="count“ />
<c:choose>
<c:when test="${count == 0}">
对不起,没有符合您要求的记录。
</c:when>
<c:otherwise>
符合您要求的记录共有${count}条.
</c:otherwise>
</c:choose>
.<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容
var 不支持EL String 指定将当前迭代到的元素保存到page这个web域中的属性名称
items 支持EL 任何支持的类型 将要迭代的集合对象
varStatus 不支持EL String 指定将代表当前迭代状态信息的对象保存到page这个wen域中的属性名称
begin 支持EL int 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
end 支持EL int 参看begin属性的描述
step 支持EL int 指定迭代的步长,既迭代因子的迭代增量
.<c:forTokens>标签对带有相同符合格式内容进行分割输出,例如varstr="1,2,3,4,5,6"
items 支持EL 任何类型 将要迭代的集合对象
delims 不支持EL String 字符串的分割符,可以同时有分割符
varStatus 不支持EL String 指定将代表当前迭代状态信息的对象保存到page这个web域中的属性名称
begin 支持EL int 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
end 支持EL int 参看begin属性的描述
step 支持EL int 指定迭代的步长
var 不支持EL String 指定将当前迭代到的元素保存到page这个web域中的属性名称
.&
4000
lt;c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现url重写。url重写就是将会话标识号以参数形式附加在URL地址后面
value 支持EL String 指定要构造的URL
var 不支持EL String 指定将要构造出的URL结果保存到Web域中的属性名称
scope 不支持EL String 指定将要构造出的URL结果保存到哪个Web域中
.<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:
<c:catch [var="varName"]>nested actions</c:catch>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html;charset=gb2312" %>
<c:catch var="myex“ >
<%
10/0;
%>
</c:catch>
异常:<c:out value="${myex}" /><br />
异常 myex.getMessage:<c:out value="${myex.message}" /><br/>
异常 myex.getCause:<c:out value="${myex.cause}" /><br />
异常 myex.getStackTrace:<c:out value="${myex.stackTrace}"/>
.<c:redirect>标签用于将当前的访问请求转发或重定向到其他资源,它可以根据url属性所指定的地址,执行类似这个JSP标准标签的功能,将访问请求转发到其他资源;或执行response.sendRedirect()方法的功能,将访问请求重定向到其他资源。
url 支持EL String 指定要转发或重定向到的目标资源的URL地址
.<c:remove>用于删除数据
.<c:import>
检索一个绝对或相对 URL,然后将其内容暴露给页面
.<c:param>标签在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“�й�”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。
http://localhost:808/servlet/MyServlet?name=“中国”
示例:
EL(Expression Language)表达式语言:用于计算和输出存储在标志位置(page、request、session、application)的java对象的值,然后对它们执行简单操作;EL是JSP2.0规范的一部分,只要容器支持Servlet2.4/JSP2.0,就可以在JSP2.0网页中直接使用EL。通常与
JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。
EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;
例如:
点号记法:${BeanName.beanProperty}
数组记法:${BeanName[“beanProperty”]
动态属性值:${loginInfoBean.spwd}
EL表达式的作用域:
使用EL的时候,默认会以一定顺序(pageContext、request、session、application)搜索四个作用域,将最先找到的变量值显示出来。
开启和关闭EL表达式
(1)开启方法
在servlet2.4之后默认方法为false,即可以不写或写成
<%@ page isELIgnored="false" %>
(2)关闭方法
<%@ page isELIgnored="true" %>
还有一种批量禁用EL的方法,可以在WEB-INF/web.xml中使用jsp-property-group标签批量禁用el,web.xml中进行如下配置。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config> </web-app>
核心标签库(c:)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
.<c:out>标签用于输出一段文本到浏览器中
属性:
value 支持EL Object 指定要输出的内容
escapeXml 支持EL Boolean指定是否将>,<,&,',"等特殊字符进行HTML编码转换后再进行输出。默认为true
default 支持EL Object 指定如果value属性的值为null/""时所输出的默认值
.<c:set>标签用于把某个对象存在指定的域范围内,或者设置web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性
value 支持EL Object 用于指定属性值
var 不支持EL String 用于指定要设置的Web域属性的名称
scope 不支持EL String 用于指定属性所在的web域
target 支持EL Object 用于指定要设置属性的对象,这个对象必须是javaBean对象或java.util.Map对象
property 支持EL String 用于指定当前要为对象设置的属性名称
.<c:if test="">标签可以构造简单的if-then结构的条件表达式
test 支持EL boolean 决定是否处理标签体中的内容的条件表达式
var 不支持EL String 用于指定将test属性的执行结果保存到某个web域中的某个属性的名称
scope 不支持EL String 指定将test属性的执行结果保存到那个web域中
.<c:choose>标签用于指定多个条件选择的组合,和下面两个标签可以构造类似"if-elseif-else"的复杂条件判断结构
<c:when><c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html;charset=gb2312" %>
<c:set value="${param.count}" var="count“ />
<c:choose>
<c:when test="${count == 0}">
对不起,没有符合您要求的记录。
</c:when>
<c:otherwise>
符合您要求的记录共有${count}条.
</c:otherwise>
</c:choose>
.<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容
var 不支持EL String 指定将当前迭代到的元素保存到page这个web域中的属性名称
items 支持EL 任何支持的类型 将要迭代的集合对象
varStatus 不支持EL String 指定将代表当前迭代状态信息的对象保存到page这个wen域中的属性名称
begin 支持EL int 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
end 支持EL int 参看begin属性的描述
step 支持EL int 指定迭代的步长,既迭代因子的迭代增量
.<c:forTokens>标签对带有相同符合格式内容进行分割输出,例如varstr="1,2,3,4,5,6"
items 支持EL 任何类型 将要迭代的集合对象
delims 不支持EL String 字符串的分割符,可以同时有分割符
varStatus 不支持EL String 指定将代表当前迭代状态信息的对象保存到page这个web域中的属性名称
begin 支持EL int 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
end 支持EL int 参看begin属性的描述
step 支持EL int 指定迭代的步长
var 不支持EL String 指定将当前迭代到的元素保存到page这个web域中的属性名称
.&
4000
lt;c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现url重写。url重写就是将会话标识号以参数形式附加在URL地址后面
value 支持EL String 指定要构造的URL
var 不支持EL String 指定将要构造出的URL结果保存到Web域中的属性名称
scope 不支持EL String 指定将要构造出的URL结果保存到哪个Web域中
.<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:
<c:catch [var="varName"]>nested actions</c:catch>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html;charset=gb2312" %>
<c:catch var="myex“ >
<%
10/0;
%>
</c:catch>
异常:<c:out value="${myex}" /><br />
异常 myex.getMessage:<c:out value="${myex.message}" /><br/>
异常 myex.getCause:<c:out value="${myex.cause}" /><br />
异常 myex.getStackTrace:<c:out value="${myex.stackTrace}"/>
.<c:redirect>标签用于将当前的访问请求转发或重定向到其他资源,它可以根据url属性所指定的地址,执行类似这个JSP标准标签的功能,将访问请求转发到其他资源;或执行response.sendRedirect()方法的功能,将访问请求重定向到其他资源。
url 支持EL String 指定要转发或重定向到的目标资源的URL地址
.<c:remove>用于删除数据
.<c:import>
检索一个绝对或相对 URL,然后将其内容暴露给页面
.<c:param>标签在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“�й�”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。
http://localhost:808/servlet/MyServlet?name=“中国”
示例:
<c:param name=“name” value=“中国" /> <%--使用标签 --%> <%--set标签:保存数据(保存到域中)默认保存到page域 --%> <c:set var="name"value="rose" scope="request"></c:set> <% String msg = null; pageContext.setAttribute("msg",msg); %> ${requestScope.name} ${msg } <br/> <%--out标签:获取数据(从域中) default:当value值为null时,使用默认值 escapeXml:是否对value值进行转义,false,不转义,true,转义(默认) --%> <c:out value="${msg}"default="<h3>标题3</h3>" escapeXml="false"></c:out> <hr/> <%--if标签:单条件判断--%> <c:if test="${emptymsg}"> 条件成立 </c:if> <hr/> <%--choose标签+when标签+otherwirse标签: 多条件判断 --%> <c:set var="score"value="86"></c:set> <c:choose> <c:whentest="${score>=90 && score<=100}"> 优秀 </c:when> <c:whentest="${score>=80 && score<90}"> 良好 </c:when> <c:whentest="${score>=70 && score<80}"> 一般 </c:when> <c:whentest="${score>=60 && score<70}"> 及格 </c:when> <c:otherwise> 不及格 </c:otherwise> </c:choose> <%-- forEach标签:循环--%> <% //List List<Student> list = newArrayList<Student>(); list.add(new Student("rose",18)); list.add(new Student("jack",28)); list.add(new Student("lucy",38)); //放入域中 pageContext.setAttribute("list",list); //Map Map<String,Student> map = new HashMap<String,Student>(); map.put("100",new Student("mark",20)); map.put("101",new Student("maxwell",30)); map.put("102",new Student("narci",40)); //放入域中 pageContext.setAttribute("map",map); %> <hr/> <%-- begin="" : 从哪个元素开始遍历,从0开始.默认从0开始 end="": 到哪个元素结束。默认到最后一个元素 step="" : 步长 (每次加几) ,默认1 items="": 需要遍历的数据(集合) var="": 每个元素的名称 varStatus="": 当前正在遍历元素的状态对象。(count属性:当前位置,从1开始) --%> <c:forEachitems="${list}" var="student" varStatus="varSta"> 序号:${varSta.count} -姓名:${student.name } - 年龄:${student.age}<br/> </c:forEach> <hr/> <c:forEachitems="${map}" var="entry"> ${entry.key } - 姓名:${entry.value.name } - 年龄:${entry.value.age }<br/> </c:forEach> <hr/> <%-- forToken标签: 循环特殊字符串--%> <% String str ="java-php-net-平面"; pageContext.setAttribute("str",str); %> <c:forTokensitems="${str}" delims="-" var="s"> ${s }<br/> </c:forTokens> <%--redrict:重定向 --%> <c:redirecturl="http://www.baidu.com"></c:redirect>
相关文章推荐
- jsp脚本、jsp标准动作、EL表达式、JSTL标签
- jsp,el表达式,jstl标准标签库
- web笔记九:jsp脚本、jsp标准动作、EL表达式、JSTL标签
- jsp EL表达式结合JSTL标准标签实现分页
- JSP 标准标签库(JSTL)
- Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码
- java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法
- JavaEE实战——jsp入门、El表达式、JSTL标签库
- 【jsp总结】jsp成servlet、错误页面、pageContext九大隐式、静态包含、jsp标签、EL表达式、JSTL、CSS中的路径写法
- JSP和El表达式和JSTL标签库使用
- JSP 标准标签库(JSTL)
- eclipse下taglib标准标签库问题Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
- JSP标准动作、EL表达式和JSTL
- JSP 标准标签库(JSTL)
- 【郭林专刊】JSP中JSTL提供的函数标签EL表达式操作字符串的方法
- JSP 标准标签库(JSTL)
- 【郭林专刊】JSP中JSTL提供的函数标签EL表达式操作字符串的方法
- JSP基础:六、EL表达式、JSTL标签和乱码解决
- JSP 标准标签库(JSTL)一个报错
- Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL