JSP 标准标签库JSTL与EL表达式

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中进行如下配置。
<?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域中的属性名称


.<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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值