zoukankan      html  css  js  c++  java
  • Ei表达式和标准标签库

    EL表达式(exc..sion language): 语法 ${...}
    jsp中page指令有一个属性叫isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false
    举个栗子:
      常规写法: <%=session.getAttribute("test")%>
      EL表达式写法: ${sessionScope.test}或者${sessionScope["test"]}
        []和. 大多数情况下可以通用, 除了两种情况中
          1, 表达式中含有特殊字符
            错误: ${sessionScope.test_name} vs 正确: ${sessionScope["test_name"]}
          2, 需要动态获取属性
            sessionScope["test"]
            [] 中可以放一个变量名, 但是点的后面不行
      在EL表达式中[]也可以用来表示数组或者集合中的索引值EL变量

      当前面不指定哪个作用域下面的值的时候, 会默认按照下面的顺序去找, 如果都找不到, 就输出一个空字符串
        pageScope --> requestScope --> sessionScope --> applicationScope
      EL自动类型转换
        String num = request.getParameter("num");
        int a = 20;
        int b = Integer.parseInt(num != null ? num : "0");
        out.print(a + b);

        ${param.num + a}
      EL隐式对象
        上面说到的各种Scope和param都是EL表达式中的隐式对象
          paramValues--->所有请求参数作为String类型的数组的Map类
          Header--->按照名称存储请求头主要值的Map类
          HeaderValues--->将请求头的所有值作为String数组存储的Map类
          cookie将名称存储请求附带的cookies的Map类
            获取cookie:
              ${cookie.username.name}
              ${cookie.username.value}
          initParam按名称存储web应用程序上下文初始化参数的Map类
      EL运算符
        算术运算符: + - * /或者div %或者mod
        关系运算符: ==或者eq !=或者ne <或者lt >或者gt <=或者le >=或者ge
        逻辑运算符: &&或者and ||或者or !或者not
        验证运算符: empty( empty 对于 null和"" 的判断都是返回true)
              判断某个变量是否为空
        JSTL(JSP Standard Tag Library)标准标签库:
    1, 核心标签(最常用, 最重要的)
      表达式控制标签
        out
          输出常量
            value---直接赋值
          输出变量
            default---默认值
            escapeXml---控制转义字符(默认为true, 如果需要转义, 设置为false)
        set
          三个属性: var value scope---将一个值存到*scope中(默认是pageContext)
            赋值的时候可以将值放在value后面, 也可以放在两个标签中间
            <c:set var="t" value="山东淄博" />
            <c:set var="t1">安徽黄山</c:set>
          target 对应javaBean的name值
          property 对应定义的类里面的属性
        remove----只能用于页面内的变量移除
          移除某个变量
          var: 指定需要remove的那个变量名
          scope: 两个scope中的变量名有重复的时候, 可以通过这个属性来确定移除的是哪个catch
          相当于try...catch...
          可以在这个标签中放其他标签, 只有一个属性var
      流程控制标签
          if
            <c:if test="EL表达式" var="变量名" scope="" ></c:if>
          choose---以下三个标签通常一起使用, 类似于switch
          when
          otherwise--可以不写
      循环控制标签
        forEach
          var: 设定一个变量值来存储从数组或者集合中遍历出来的值
          items: 指定需要遍历的数组或者集合
          begin, end: 指定需要遍历的起始位置
          step: 每次遍历跳过的个数, 默认值是1
          varStatus: 通过index(在原集合中的索引值), count(当前第几个), first(是否是第一个), last(是否是最后一个)来描述begin和end子集中的状态
            注意first和last, 是判断的是否在输出结果中的第一个或者最后一个, 并不是原来的集合中
        forTokens(回忆一下字符串的split()方法)
          输出的结果中同样也有index, count, first, last这四个属性
      url操作标签
        import
          将另一个页面的内容引入到这个页面上来, 与include指令的区别: 这个标签可以引入其他项目中甚至网络上的资源
          <c:import url="被导入的路径(可以写网络资源, 可以写本地文件)"
            context="相同服务器下的其他项目, 必须以'/'开头"
            var="以String类型存入被包含文件的内容"
            scope="四个作用域"
            charEncoding="被导入文件的编码格式"
            varReader="以Reader类型存储被导入的文件"></c:import>
      url
        一般用来动态生成超链接
        <c:url value="https://www.baidu.com" var="newurl"></c:url>
        <a href="${newurl}">新的url</a>
      redirect
        页面重定向
          <c:redirect url="重定向的页面">
          <c:param name="username">admin</c:param>
          <c:param name="password">123456</c:param>
          </c:redirect>
    2, 格式化标签
    3, sql标签
    4, xml标签
    5, jstl函数
    contains
    startWith
    endWith
    escapeXml

  • 相关阅读:
    Saltstack module acl 详解
    Saltstack python client
    Saltstack简单使用
    P5488 差分与前缀和 NTT Lucas定理 多项式
    CF613D Kingdom and its Cities 虚树 树形dp 贪心
    7.1 NOI模拟赛 凸包套凸包 floyd 计算几何
    luogu P5633 最小度限制生成树 wqs二分
    7.1 NOI模拟赛 dp floyd
    springboot和springcloud
    springboot集成mybatis
  • 原文地址:https://www.cnblogs.com/zhushijun/p/7109480.html
Copyright © 2011-2022 走看看