zoukankan      html  css  js  c++  java
  • 【转载】JSTL和EL的使用

    使用JSTL前的准备

    想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar).

    JSTL标签库

    在JSTL中分为以下五个标签

    1. 核心标签
    2. 格式化标签
    3. SQL标签
    4. XML标签
    5. JSTL函数

    使用不同的标签的时候需要在JSP中引入不同的库

    核心标签(Core):

    引入标签库

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

    <c:set>

    <c:set> 等同于JSP中的 session的setAttribute() 方法

    使用方法:

    1.<c:set var=”名字” value=”值”/>

    2.<c:set var=”名字”>值</c:set>

    <c:out>

    <c:out> 等同于 JSP中的 <%= %>

    使用方法:

    <c:out value=”需要输出的值”>

    在这里可以用EL表达式来进行输出session中的Attrbute

    例:

    <c:set var=”test” value=”这是一个测试”>
    
    <c:out value=”${test}”>

    输出结果: 这是一个测试

    <c:remove>

    <c:remove> 和c:set标签正好相反,c:set标签是设置setAttrbute 这个标签则是 删除 Attrbute中设置的值 等同于 session中的removeAttrbute()方法

    使用方法:

    <c:remove var=”名字”/>

    <c:if>

    <c:if> 等同于 java 中的 if 语句

    使用方法:

    <c:if test=”条件”>满足条件执行的JSP代码</c:if>

    <c:catch>

    <c:catch> 类似于 java 中的 try

    使用方法:

    <c:catch var=”名字”>JSP代码</c:catch>

    如果在执行过程中,JSP代码发生了错误,那么将会复制给名字,因此我们可以通过判断名字是否为NULL 来进行判断是否有异常发生

    例:

    复制代码
    <c:catch var=”testException”>
    
    <% int i = 5/0; %>
    
    </c:catch>
    
    <c:if test=”${testException != null}”>

        上面的代码有错误发生

     </c:if>

    复制代码

    输出结果: 上面的代码有错误发生

    如果将 上面的 0 改为 3 则没有任何输出结果

    <c:choose> 和 <c:when>

    <c:choose> 和 <c:when> 类似于 java 中的 switch 和 case

    使用方法:(c:choose中可以有多个c:when标签)

    复制代码
    <c:choose>
    
    <c:when test=”条件”>处理</c:when>
    
    <c:when test=”条件”>处理</c:when>
    
    </c:choose>
    复制代码

    例:

    复制代码
    <c:set var=”test” value=”10”/>
    
    <c:choose>
    
    <c:when test=”${test > 5}”>test 大于5</c:when>
    
    <c:when test=”${test < 5}”>test小于5</c:when>
    
    </c:choose>
    复制代码

    输出结果: test大于5

    <c:otherwise>

    <c:otherwise> 等同于 java switch 中的 default

    使用方法

    <c:choose>
    
    <c:otherwise>处理</c:otherwise>
    
    </c:choose>

    当choose 中的 when 没有满足条件的时候 会执行 otherwise 中的内容

    注意: choose 和 when 和 otherwise 是一组 when 和 otherwise 必须写在choose中

    <c:import>

    使用方法:

    <c:import var=”date” url=”http://www.baidu.com” />

    通过上面的写法会将 百度 的源代码返回到 date 变量中,使用

    <c:out value=”${date}”>

    输出

    <c:forEach> 和 <c:forTokens>

    类似于JAVA中的 FOR循环 和 FOREACH循环

    使用方法:

    <c:forEach var=”名字(i)” begin=”开始数字(1)” end=”结束数字(5)”>
    
    ${i}
    
    </c:forEach>

    输出结果是1 2 3 4 5

    使用方法:

    <c:forTokens items=”a,b,c,d,e” delims=”,” var=”name”>
    
    ${name}
    
    </c:forTokens>

    输出结果 a b c d e

    forEach类似于JAVA中 for 循环 设置一个开始数字 begin 设置一个结束数字 end 然后每次循环都会将值赋值给 var   另外还有个 setp参数 里面可以设置值 意思是每次增加几个数

    forTokens类似于JAVA中的foreach 在items中放一个组 然后 delims设置以什么分割 然后 将分割后循环的值赋值给 var  如果 items中存放的是一个集合 那么可以不用写delims 这样每循环一次 就会取出集合中的一个放在 var中

    <c:redirect>

    类似于service中的重定向

    使用方法:

    <c:redirect url=”http://www.baidu.com”/>

    重定向到百度去

    另外还有<c:url> 和 <c:param>两个标签

    EL表达式介绍:

    EL表达式定义规则:以 $ 开头 内容写在 {} 中 例: ${test}

    当然,因为EL表达式所有的代码都是写在{}中的,所以我们也可以在里面写运算

    比如:

    ${test+100}

    最终输出的结果就是test这个变量加上数字100后的值了

    再比如

    ${test != null} 

    最终输出的结果就是一个true  通过这种方式  我们可以很好的和JSTL结合起来一起使用.

    EL中的运算符分为  .  和  []  两种

    如果要动态取值 可以使用[]  比如:

    ${session.user[date]}

     其中的date是一个变量

    上面代码的意思是 取出 session.user这个数组里面的第 date 个元素

    需要注意的是,EL表达式限制了我们调用JAVA方法,如果想要调用,可以自定义一个TAG

    EL表达式查找顺序(都是针对Attrbute()):

    如果使用类似于 ${username} 的时候没有在哪一个范围查找username 那么它会以:

    1. Page
    2. Request
    3. Session
    4. Application

    为顺序来进行查找,加入中途找到了 username 那么就会返回值  如果一路没找到 返回 null

    EL表达式的隐性变量:

    从这里开始就是介绍EL表达式的隐性变量,通过这些隐性变量可以让我们简便完成很多复杂的操作:

    pageContext  用来访问JSP的隐性对象
    pageScope page对象的MAP
    requestScope  request对象的MAP
    requestScope  request对象的MAP
    sessionScope  session对象的MAP
    applicationScope  application对象的MAP
    param  包含请求参数字符串的MAP
    paramValues  包含请求参数字符串数组的MAP
    header  包含请求头字符串的MAP
    headerValues  包含请求头字符串数组的MAP
    cookie  按名称存储请求附带的cookie的MAP

    例:假设我们是想要session中的name值 那么我们可以使用:

    ${sessionScope.name}

    再例:我们想要获得GET或则POST传递过来的name参数,在以前我们只能使用:

    request.getParameter(name);

    使用EL表达式可代替为:

    ${param.name}

    同样,如果我们想要得到一个参数的数组,可以使用:

    ${paramValues.name}

    当然,返回的是一个数组对象.

    I love you
  • 相关阅读:
    libevent
    STL中mem_fun和mem_fun_ref的用法
    java的awt和swing的区别于联系
    数据库流程控制的使用IF CASE LOOP LEAVE ITERETA REPEAT WHILE
    mysql的常用函数
    数据库的基本知识点
    使用myeclipse 打包并运行普通java项目
    getClass()与getName()方法
    Java中的final关键字
    基本类型包装类的常量池技术
  • 原文地址:https://www.cnblogs.com/appium/p/10340489.html
Copyright © 2011-2022 走看看