zoukankan      html  css  js  c++  java
  • JSP中EL表达式的使用

    感谢原文作者:Mr_J316
    原文链接:https://www.jianshu.com/p/52764edd1713

    EL(Expression Language)表达式并不是通用的程序设计语言,仅是一种数据访问语言,可以在JSP中方便地访问Java数据。

    示例:${expression}
    

    EL隐式对象列表

    类别 标识符 描述
    JSP pageContext 当前页面
    作用域 pageScope 页面作用域
    - requestScope 请求作用域
    - sessionScope 会话作用域
    - applicationScope 应用程序作用域
    请求参数 param 存储请求参数
    - paramValues 将请求参数的所有值作为 String 数组存储
    请求头 header 按名称存储请求头
    - headerValues 将请求头的所有值作为 String 数组存储
    Cookie cookie 按名称存储请求附带的 cookie
    初始化参数 initParam 按名称存储 Web 应用程序上下文初始化参数

    EL数据访问

    作用域对象

    applicationScope:用来取得application范围属性值。

    sessionScope:用来取得session范围属性值。

    requestScope:用来取得request范围属性值。

    pageScope:用来取得page范围属性值。

    这些隐式对象对应于JSP中的pageContext,request,session,application,只用来读取属性值。

    //创建对象,分别放进不同作用域
    User myUser = new User("0001", "张三", 20);
    pageContext.setAttribute("currentUser", myUser);
    request.setAttribute("currentUser", myUser);
    session.setAttribute("currentUser", myUser);
    application.setAttribute("currentUser", myUser);
    
    //读取不同范围的值
    page范围:${pageScope.currentUser.name}<br />
    request范围:${requestScope.currentUser.name}<br />
    session范围:${sessionScope.currentUser.name}<br />
    application范围:${applicationScope.currentUser.name}<br />
    
    不指定范围:${currentUser.name}
    如果不指定范围,默认会从page范围内找,如果找不到,再依次到request、session、application范围中找。如果没有找到就返回null。
    

    读取集合或map

    //存入集合
    ArrayList<User> lists = new ArrayList<User>();
    lists.add(new User("0001", "张三", 20));
    lists.add(new User("0002","李四",30));
    session.setAttribute("userList", lists);   
    
    //存入map
    Map<String,User> map = new HashMap<String,User>();
    map.put("user1", new User("0001","张三",20));
    session.setAttribute("currentUser", map);
    
    // 读取集合
    ${userList[0].name}<br />
    ${userList[1].name}<br />
        
    // 读取map
    ${currentUser.user1.name}<br />  
    

    请求参数对象

    //在EL之前使用如下代码取得请求参数
    request.getParameter(name);
    request.getParameterValues(name);
    
    //在EL中使用如下隐式对象取得请求参数
    param:接收的参数只有一个值。
    paramValues:接受的参数有多个值。
    

    示例:

    <form method="post" action="buyMessage.jsp">    
          <p>
             请选择您要购买的商品:
          </p> 
          <p>
             <input type="checkbox" name="goods" value="手机"/>手机
          </p>   
          <p>
             <input type="checkbox" name="goods" value="电脑"/>电脑
          </p>
          <p>
             <input type="checkbox" name="goods" value="空调"/>空调
          </p>
          <p>
             请输入收货地址:<input type="text" name="address" />
          </p>
          <input type="submit" value="确定" />
    </form>
    
    <!--获取前一页面请求中的值 -->
    <body>
      <%
         request.setCharacterEncoding("utf-8");
      %>
        您选择的商品是:
      <p></p>
      ${paramValues.goods[0]}<p></p>
      ${paramValues.goods[1]}<p></p>
      ${paramValues.goods[2]}<p></p>
       您的收货地址是:
      <p></p>
      ${param.address}
      <p></p>
      <input type="button" value="下一步" />
      <input type="button" value="返回上一步" />
    </body>
    
    

    Cookie对象

    // 颁发Cookie
    Cookie c = new Cookie("username", "admin");
    response.addCookie(c);
    
    // 获取cookie
    ${cookie.username.value }
    

    EL运算符

    算术运算符

    算术运算符 说明 示例 结果
    + ${1 + 1} 2
    - ${1 - 1} 0
    * ${1 * 2} 2
    /或div ${3 / 2} 1.5
    %或mod 取余 ${3 % 2} 1

    关系运算符

    关系运算符 说明 示例 结果
    = = 或 eq 等于 在这里插入图片描述 {1 eq 1} true
    != 或ne 不等于 在这里插入图片描述 {1 ne 1} false
    < 或 lt 小于 在这里插入图片描述{1 lt 1} true
    > 或 gt 大于 在这里插入图片描述 {1 gt 1} false
    <= 或 le 小于或者等于 在这里插入图片描述{1 le 1} true
    >= 或 ge 大于或者等于 在这里插入图片描述 {1 ge 1} false

    逻辑运算符

    逻辑运算符 说明 示例 结果
    && 或 and 交集 在这里插入图片描述{A and B} 当A和B都为true时为true,其他情况为false
    || 或 or 并集 在这里插入图片描述 {A or B} 当A和B都为false时为false,其他情况为true
    ! 或 not 在这里插入图片描述{not A} 当A为true时,为false 当A为false时,为true

    条件运算符

    ${表达式1 ? 表达式2 : 表达式3} // 与java用法相同
    ${currentUser.name=="admin"?"管理员":"普通用户"}
    

    验证运算符

    ${empty 表达式}
    

    返回布尔值判断表达式是否为"空"值,null值、无元素的集合或数组、长度为零的String被认为是空值。

    在JS中使用EL

    在本页面中使用EL

    <%
       session.setAttribute("username", "admin");
    %>
    
    <script>
        alert("${username}");
    </script>
    

    在外链JS文件中引用EL

    必须在当前页面的JS脚本中定义变量存放EL表达式,然后在外部JS文件中引用该变量。

    <%
       session.setAttribute("username", "admin");
    %>
    
    <script src="js/function.js"></script>
    <script>
       var username="${username}";
       myFun();
    </script>
    
    //外联js文件
    function myFun(){
        alert(username);
    }
    

    补充
    https://www.runoob.com/jsp/jsp-expression-language.html
    https://www.jb51.net/article/107468.htm
    https://www.jb51.net/article/105314.htm
    https://www.jb51.net/article/111703.htm

  • 相关阅读:
    洛谷3384树链剖分模板
    洛谷2672(前缀和技巧)
    普通平衡树与文艺平衡树的splay代码
    面向对象的几大原则
    面向对象的几大原则
    Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作
    Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作
    关于使用struts2跳转后css和js失效的解决方式
    关于使用struts2跳转后css和js失效的解决方式
    Hibernate——脏检查和缓存清理机制
  • 原文地址:https://www.cnblogs.com/tfxz/p/12662425.html
Copyright © 2011-2022 走看看