EL和JSTL

一、EL

    EL是JSP表达式语言,全称是Expression Language,提供了JSP中简化表达式的方法。

    语法结构:${ }(用美元符($)定界,内容在花括号({})中。)

    在使用EL表达式时需要注意一点:

    当要存取的属性名称中包含一些特殊字符,如“.”或“?”等并非字母或数字的符号师就一定要使用“【】”。例如:

    ${user.My-Nane}就应当改成${user["My-Name"]}(“[]”可以访问集合或者数组的元素、Bean属性)

    EL中的有效表达式

    有效表达式可以包含文字、操作符、变量(对象引用)调用。

    变量(对象引用)的调用

     例如${username},它的意思是取出某一范围中名称为username的变量的值,由于没有指定是哪一个范围的username,所以他会依次从page、request、session、application范围查找。如果途中遇到username,就直接回传,没有就继续找下去,如果全部的范围都没有找到,则会返回null。

    EL隐式对象

    与范围有关的隐式对象(pageScope、requestScope、sessionScope、applicationScope)

    与输入有关的隐式对象(param和paramValues)

    cookie(用来取得使用者的cookie值,例如在cookie中设定了username属性值,则可以使用${cookie.userCountry.value}来取得它)

    header和headerValues

    header储存用户浏览器和服务器端用来沟通的数据

    另外在很少情况下,有可能同一标头名称拥有不同的值,此时必须改为headerValues来取得这些值。

    initParam(initParam用来读取设置在web.xml中的参数值。例如${initParam.repeat},等价于:(String)application.getInitParameter(“repeat”);或servletContext.getInitParameter(“repeat”);

    pageContext

    pageContext用于取得其他有关用户要求或页面的详细信息

    ${pageContext.request.queryString} 取得请求的参数字符串

    ${pageContext.request.requestURL} 取得请求的URL,不包括参数字符串

    ${pageContext.request.contextPath}         服务的web application 的名称

    ${pageContext.request.method}           取得HTTP 的方法(GET、POST)

    ${pageContext.request.protocol}         取得使用的协议(HTTP/1.1、HTTP/1.0)

    ${pageContext.request.remoteUser}         取得用户名称

    ${pageContext.request.remoteAddr }         取得用户的IP 地址

    ${pageContext.session.new}             判断session 是否为新的

    ${pageContext.session.id}               取得session 的ID

    ${pageContext.servletContext.serverInfo}   取得主机端的服务信息

    实例:elScope.jsp页面,该页面主要用于演示EL表达式的隐式对象的使用。

JSTL简介

    JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库。

    JSTL由四个定制标签库组成

    core标签提供了定制操作,通过限制了作用域的变量管理操作数据,以及执行页面内容的迭代和条件操作,它还提供了用来生成和操作URL的标签。

    format标签库定义了用来格式化数据(尤其是数字和日期)的操作。

    xml库包含一些可以用来操作通过xml表示的数据。

    sql库定义了用来查询关系数据库的操作。

    如果要使用JSTL,必须将jstl.jar和standard.jsr文件添加到项目中。

    taglib

    使用任何jsp定制标签库都必须在想要使用的这个库标签的任何页面包括taglib指令,如想要使用core库,必须添加如下taglib指令

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

     核心标签库--表达式操作

    <c:out> 用于显示输出结果    

<c:out value="value" [escapeXml="true/false"] {default="defaultValue"}>

    属性介绍:

    value属性,指定表达式进行求值

    escapeXml可选属性。他控制当用<c:out>标记输出在HTML和XML中具有特殊意义的字符时是否进行转义。

    default可选属性,如果指定了default属性,那么在对value属性的表达式求值所得结果为null或空String情况下,<c:out>将打印其值。

    <c:set>标签

<c:set value="value" var="varname" scope="page/request/session/application">

    属性介绍:

    var属性指定了限制了作用域的变量的名称。

    scope属性表明了该变量驻留在那个作用域内(默认为page)

    value属性指定了分配给该变量的值。

    核心标签库--流程控制

    <c:if>标签

<c:if test="testCondition" var="varName" scope="page/request/session/applicatiom">
body content
</c:if>

    属性介绍:

    test属性:表达式的条件,其求出结果为true/false

    var属性:指定了限制了作用域的变量的名称

    scope属性:指定了var变量的作用域(默认值为page)

    <c:choose>标签

    <c:choose>标签用于条件选择,<c:when>标签代表了<c:choose>一个条件分支,<c:otherwise>代表了条件的最后一个选择。

<c:choose>
<c:when test="testCondition">
  body content
</c:when>
...
<c:otherwise>
  body content
</c:otherwise>
</c:choose>

    标签数据库--迭代操作

    支持两种不同样式的迭代:1,整数范围上的迭代 2,集合上迭代

<c:forEach var="varName" varstatus="varStatusName" begin="begin" end="end" step="step">
  body content
</c:forEach>

    属性介绍:

    begin和end属性要么是静态整数值,要么是可以得出整数值的表达式。它们分别指定迭代索引的初始值以及迭代索引的终止值。当在整数范围内进行迭代时,这两个属性是必须的,而其他所有属性都是可选的。

    当出现step时,它也必须是整数值,他指定每次迭代后索引的增量。

    var属性,那么将会创建一个带有指定名称的并限定了作用域的变量,并将每次迭代的当前索引值赋给该变量。

    varstatus属性用于创建限定了作用域的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值