精华内容
下载资源
问答
  • 2019-08-11 04:45:21

    1.EL表达式的语法格式很简单:

    以前编写jsp代码时,如果要获取表单中的用户名,一般使用 <%=request.getParameter("name")%>,这样当然也可以获取到值,但是又把html代码和java代码混到一起,看起来比较乱套。现在使用EL表达式的话就比较简洁了:${param.name}就可以解决了。

    注意:${表达式} 表达式部分不需要加引号,如果写成 ${"param.name"} ,那么页面上显示出来的就不是表单中name的值了,而是 "param.name" 这个字符串。表达式与开始符和终结符之间的空格被忽略不计。如果表达式的值为null,那么页面将显示一个空格而不是null。

    2.EL的两个运算符   "." 和 "[]"

    ${param.name} 和 ${param["name"]} 是等价的,但是当要存取的属性名称中包含有一些特殊字符如 "." 或 "-" 等非字母或数字的符号 或者 在使用动态取值时,就一定要使用 "[]" 运算符。

    3.EL表达式的取值范围

    pageScope、requestScope、sessionScope、applicationScope

    如果没有给定参数名的取值范围,系统默认从page范围中查找,找不到则找request,一次类推,都找不到时传回null。

    例如,存入一个session范围的值:<% session.setAttribute("u", "hello,EL") %>

    那么,传统方式取值:<% session.getAttribute("u") %>。使用EL表达式取值:${sessionScope.u} 或者 ${u}

    4.EL表达式可以自动转换类型

    传统代码:

    1<%
    2Stringage=request.getParameter("age");
    3intagei=Integer.parseInt(age);
    4out.println(age+10);
    5%>

    使用EL表达式:

    1${user.age+10}

    5.EL表达式的内置对象

    (1)与范围有关的内置对象

    pageScope、requestScope、sessionScope、applicationScope

    (2)与输入有关的内置对象

    param 和 paramValues 用来获取表单中提交的信息。前者返回 String 类型数据,后者返回 String[] 类型的数据。如 ${paramValues.name}。

    (3)其他隐含对象

    Cookie

    header  如:${header["UserAgent"]} 获取浏览器的版本信息

    headerValues 

    initParam  如:${initParam.DBDriver} 获取web.xml中配置的相关参数

    pageContext 如:${pageContext.request.remoteAddr} 获取用户的IP地址

    6.特别注意:

    通过获得的参数进行比较判断时,要这样比较:${param.name1 == param.name2}

    empty 运算符用于判断值是否为 null 或 空 。 ${empty null} ${empty ""}

    转载于:https://www.cnblogs.com/BrightMoon/p/3535228.html

    更多相关内容
  • 1、EL表达式解析过程 JSP中,我们经常会写为${obj.name}字样,但你有没有想过,它的取值过程是什么,属性值从哪取得? ${obj}相当于 request.getAttribute(“obj”),这句话严格来说不严谨,依次的请求范围是page、...
  • 下面小编就为大家分享一篇SpringMVC中Model和ModelAndView的EL表达式取值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • js中用el表达式取值

    千次阅读 2019-06-17 16:32:34
    1. 取值字符串 java代码 String hello = "Hello World"; model.addAttribute("hello", hello); js代码 var hello = '${hello}'; console.info(hello); 结果 注意:var hello = ‘${hello}’;一定要有...

    1. 取值字符串

    java代码

            String hello = "Hello World";
            model.addAttribute("hello", hello);
    

    js代码

            var hello = '${hello}';
            console.info(hello);
    

    结果
    在这里插入图片描述
    注意:var hello = ‘${hello}’;一定要有引号,否则会以为取到的值是一个变量,然后报错。
    在这里插入图片描述

    2. 取值后台List

    1)第一种方案,在后台转成JSONArray对象的字符串,前台直接取值(不加引号

    java代码

    		List<String> hellos = Arrays.asList("aaa", "bbb", "ccc");
            String helloStr = JSONArray.fromObject(hellos).toString();
            
            model.addAttribute("helloStr", helloStr);
    

    js代码

            var hello = ${helloStr};
            console.info(hello);
    

    结果
    在这里插入图片描述

    2)第二种方案,在后台转成JSONArray对象,前台取值(加引号),再转成js数据结构

    java代码

      	    List<String> hellos = Arrays.asList("aaa", "bbb", "ccc");
            JSONArray helloArray = JSONArray.fromObject(hellos);
            
            model.addAttribute("helloArray", helloArray);
    

    js代码

            var hello = JSON.parse('${helloArray}');
            console.info(hello);
    

    结果
    在这里插入图片描述

    展开全文
  • jspEl表达式取值

    2019-01-05 13:46:40
    jsp中${}----是EL表达式的常规表示方式 –&gt;目的是为了获取{}中指定的对象(参数、对象等)的值 如: ${user.name}&lt;====&gt;User user = (User)request(搜寻范围).getAttribute(user); String name...

    jsp中${}----是EL表达式的常规表示方式
    –>目的是为了获取{}中指定的对象(参数、对象等)的值
    如:
    ${user.name}<====>User user = (User)request(搜寻范围).getAttribute(user);
    String name = user.getName();
    out.println(name);
    从当前页面起开始搜寻 user对象,然后获取改对象的name属性值
    其搜寻的范围依次是:page、request、session、application
    如果未搜索到,即会返回null值

    它在jsp+servlet的编程中经常使用.

     详解 : EL 是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点。在使用 EL 从 scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。 Web 服务器对于 request 请求参数通常会以 String 类型来发送,在得到时使用的 Java 语言脚本就应该是 request.getParameter(“XXX”) ,这样的话,对于实际应用还必须进行强制类型转换。而 EL 就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接使用 EL 表达式取得的值,而不用关心它是什么类型。 
    

    例 1 :简单 EL 表达式

    <%@ page contentType="text/html; charset=UTF-8"%> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
     
    <html> 
     <body> 
        ${sampleValue + 1} <br> 
     </body> 
    </html> 
    

    这个示例将在 JSP 页面显示为“ 1 ”, EL 表达式必须以“ ${XXX} ”来表示,其中“ XXX ”部分就是具体表达式内容,“ ${} ”将这个表达式内容包含在其中作为 EL 表达式的定义。本示例可以在满足 JSP2.0 规范的任何 Web 应用服务器中使用。

    EL表达式的默认变量
    一个 EL 表达式包含变量和操作符两个内容。任何存在于 JSP 作用范围的 JavaBean 都可以被转化成 EL 表达式来使用,它所包含的默认变量如下:
    1 .默认变量 pageScope 、 requestScope 、 sessionScope 、 applicationScope
    这 4 个默认变量包含 Scope 作用范围的参数集合,相当于被保存在 java.util.Map 中的某个参数。

    例 2 :使用 sessionScope 变量的 EL 表达式

    <%request.getSession().setAttribute("sampleValue", new Integer(10));%> 
     
    ${sessionScope.sampleValue} 
    

    取得保存在 Session 中参数的 sessionScope 变量的 EL 表达式,“ . ”是 property 访问操作符,在这里表示从 Session 中取得“键”为“ sampleValue ”的参数,并显示出来。显示结果为“ 10 ”。

    2 .默认变量 param 、 paramValues
    这两个默认变量包含请求参数的集合, param 表明请求包含的参数为单一控件, paramValues 表明请求包含的参数为控件数组。下面看一个简单示例 3 :

    例 3 :提交请求的页面和接受的页面

    <%@ page contentType="text/html; charset=UTF-8"%> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
     <body> 
          <form action="SampleJsp.jsp"> 
        <input type="text" name="sampleValue" value="10"> 
        <input type="text" name="sampleValue" value="11"> 
        <input type="text" name="sampleValue" value="12"> 
        <input type="text" name="sampleSingleValue" value="SingleValue"> 
        <input type="submit" value="Submit"> 
        </form> 
     </body> 
    </html> 
    

    在这个页面中定义了两组控件,控件名为“ sampleValue ”的是一套控件数组,控件名为“ sampleSingleValue ”的是单一控件,通过递交将请求参数传送到 SampleJsp.jsp 。

    <%@ page contentType="text/html; charset=UTF-8"%> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
     <body> 
        ${paramValues.sampleValue[2]} <br> 
        ${param.sampleSingleValue} <br> 
     </body> 
    </html> 
    

    这是请求转发到的页面,通过 EL 表达式的 paramValues 变量得到控件数组中最后一个控件的递交参数,通过 EL 表达式的 param 变量得到单一控件的递交参数。控件数组参数的 EL 表达式使用“ [] ”来指定数组下标。本示例将显示控件数组中最后一个控件的值“ 12 ”和单一控件的值“ SingleValue ”。

    3 .默认变量 header 、 headerValues
    这两个默认变量包含请求参数头部信息的集合, header 变量表示单一头部信息, headerValues 则表示数组型的头部信息。
    4 .默认变量 cookie
    包含所有请求的 cookie 集合,集合中的每个对象对应 javax.servlet.http.Cookie 。
    5 .默认变量 initParam
    包含所有应用程序初始化参数的集合。
    6 .默认变量 pageContext
    等价于 page 环境类 javax.servlet.jsp.PageContext 的实例,用来提供访问不同的请求参数。

    11 个默认变量几乎包含了 Web 应用的所有基本操作,若一个表达式不使用这些变量而直接使用参数名,那么就采用就近原则。该表达式将使用最近取得的参数值。

    三.EL表达式的操作符
    EL表达式中还有许多操作符可以帮助完成各种所需的操作,之前的示例中“.”、“[]”就是其中的两个,下面将用表9.1来展示所有操作符及它们各自的功能。
    表 9.1 EL 表达式的操作符
    操作符
    功能和作用
    .
    访问一个 bean 属性或者 Map entry
    []
    访问一个数组或者链表元素
    ()
    对子表达式分组,用来改变赋值顺序
    ? :
    条件语句,比如:条件 ?ifTrue:ifFalse
    如果条件为真,表达式值为前者,反之为后者
    +
    数学运算符,加操作

    数学运算符,减操作或者对一个值取反
    *
    数学运算符,乘操作
    / 或 div
    数学运算符,除操作
    % 或 mod
    数学运算符,模操作 ( 取余 )
    == 或 eq
    逻辑运算符,判断符号左右两端是否相等,如果相等返回 true ,否则返回 false
    != 或 ne
    逻辑运算符,判断符号左右两端是否不相等,如果不相等返回 true ,否则返回 false
    < 或 lt
    逻辑运算符,判断符号左边是否小于右边,如果小于返回 true ,否则返回 false

    或 gt
    逻辑运算符,判断符号左边是否大于右边,如果大于返回 true ,否则返回 false
    <= 或 le
    逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回 true ,否则返回 false
    = 或 ge
    逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回 true ,否则返回 false
    && 或 and
    逻辑运算符,与操作赋。如果左右两边同为 true 返回 true ,否则返回 false
    || 或 or
    逻辑运算符,或操作赋。如果左右两边有任何一边为 true 返回 true ,否则返回 false
    ! 或 not
    逻辑运算符,非操作赋。如果对 true 取运算返回 false ,否则返回 true
    empty
    用来对一个空变量值进行判断 : null 、一个空 String 、空数组、 空 Map 、没有条目的 Collection 集合
    func(args)
    调用方法 , func 是方法名, args 是参数,可以没有,或者有一个、多个参数 . 参数间用逗号隔开

    这些操作符都是极其有用的,下面通过几个示例来演示它们的使用方法:

    例 4 :几组操作符的示例

    ${pageScope.sampleValue + 12} <br>           // 显示 12 
    ${(pageScope.sampleValue + 12)/3} <br>     // 显示 4.0 
    ${(pageScope.sampleValue + 12) /3==4} <br>         // 显示 true 
    ${(pageScope.sampleValue + 12) /3>=5} <br>         // 显示 false 
    <input type="text" name="sample1" value="${pageScope.sampleValue + 10}"> // 显示值为 10 的 Text 控件 
    

    可以看到,对于这些示例,程序设计者完全无需管理它们的类型转换,在表达式内部都已经处理了。有了 EL 表达式,在 JSP 页面的编程变得更灵活,也更容易。

    展开全文
  • 今天在写 JavaEE 作业的时候,出了些 bug ,最初以为是 MyBatis 的映射问题,后来发现与 EL 表达式取值原理有关。写篇文章记录一下这个小经验。 背景 用 MyBatis 获取数据库中的书籍信息(books表),然后用 EL ...

    今天在写 JavaEE 作业的时候,出了些 bug ,最初以为是 MyBatis 的映射问题,后来发现与 EL 表达式的取值原理有关。写篇文章记录一下这个小经验。

    背景
    用 MyBatis 获取数据库中的书籍信息(books表),然后用 EL 表达式,将查询结果显示在 jsp 界面上。
    在 books 表中,有一个 book_name 属性,在 Book 类中也有同名属性。在 jsp 中用 EL 表达式 ${book.book_name} 输出 book 对象的属性值。

    问题
    报错显示找不到 Book 中的 book_name 属性。

    刚开始我以为默认开启了 “驼峰映射”,就把 EL 表达式改为 ${book.bookName},再刷新,果然有效。但是后来的测试中,发现类似的问题接二连三的出现。试了无数次后,震惊地发现,Book 类中是否有 get 方法也会影响程序是否报错。

    结果
    查了很多资料后,总结如下:

    如果在 EL 表达式中使用 ${book.book_name} 方法,那么在 Book 中就必须存在 getbook_name 方法( getBook_name 方法也可以,但是不能为 getBook_Name )。否则就会显示,没有 book_name 这个属性。
    如果使用 ${book.bookName},那么就必须有 getbookName 方法或 getBookName 方法。

    也就是说,EL 表达式并不会真的去找类中是否存在某个属性,只是找对应的 get 方法。

    而 MyBatis 将数据库中的数据存入类中时,会比较类中的属性与数据库的列名是否一致。如果数据库中有 book_name 这一列,那么就会把数据存入类中的 book_name 属性。而如果类的属性名为 bookName,那么就无法映射,类的 bookName 属性最终会为 null 。

    展开全文
  • 首先jsp页面如果想使用el表达是需要在jsp页面引入核心库jstl标签,具体引入方法参考如下链接 https://blog.csdn.net/a_newbird/article/details/103690171 1.先来介绍下jsp的四大作用域page,request,session,...
  • EL表达式 一,简介: EL :Expression Language 中文意思:表达式语言,就是在页面上取后台值的方式,,,,说白了就是只读操作。。。 JSP 2.0的一个主要特性 二,语法: ${} 以 " ${ " 开头 以 " } " 结束...
  • EL表达式取值顺序

    千次阅读 2018-07-31 10:04:56
    使用el的时候,默认会以一定顺序搜索四个作用域,将最先找到的变量值显示出来。  如果我们有${username}这样一个正则表达式,它回去依次调用pageContext.getAttribute("username") -&gt; request....
  • 后台传递过来的value属性值中有特殊符号,如双引号,单引号等,如果用EL表达式直接...-- el表达式取值有特殊符号解决方法 用c:out接收 --> <input type="hidden" id="content" name="" class="form-contro...
  • el表达式取值

    2018-02-16 21:20:04
    #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为 El表达式访问4种范围属性 寻找值顺序:page–》request–》session–》application 源码: 效果: 源码: 结果:
  • 在自己练手时遇到了EL表达式被当成字符串处理而没有正确解析的现象。当时工程中使用的Javaee5, web.xml xmlns javaee xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation> EL表达式死活不...
  • 朗读文章4.1.3 EL表达式取值规则document.querySelector(".post-body > ul").style.display="none"朗读文章朗读:重新朗读:function rp(){var e=document.getElementById("m");e.currentTime=0,e.play()}function ps...
  • 现在使用EL表达式的话就比较简洁了:${param.name}就可以解决了。注意:${表达式} 表达式部分不需要加引号,如果写成 ${"param.name"} ,那么页面上显示出来的就不是表单中name的值了,而是"pa...
  • jsp标签里面直接使用el表达式jsp标签里面使用el表达式取值 事情是这样的,标题"jsp标签里面使用el表达式",其实jsp标签里面是不能直接使用el表达式去拿值的 。如下:<% Timestamp oldtime = ${adt.createTime} ...
  • ${category.name}else if ("/updateCategoryA.do".equals(request.getServletPath())) {request.setCharacterEncoding("utf-8");String id = request.getParameter("id");String categoryname = request.getParamete...
  • EL表达式学习总结1. El表达式概念1. El中的表达式算术表达式比较表达式逻辑表达式三元表达式判空表达式EL 从四个作用域中取值作用域类型作用域方法如何选择作用域总结 学习总结 1. El表达式概念 EL表达式简介 1)...
  • EL表达式 取值、判断

    千次阅读 2018-12-18 15:55:43
    EL表达式 是为了简化咱们的jsp代码,具体一点就是为了简化在jsp里面写的那些java代码。 对域中对象做判定 写法格式 ${表达式 } 如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个...
  • EL表达式取值和运算

    2020-12-22 07:40:22
    查找的 在jsp页面中不能通过${list.size}取列表长度,而是 List长度是:${fn:length(list)} 在EL表达式中我们可以使用运算符以达到我们想要的结果,运算符按作用分为以下几种: 1.算术运算符 + 例如:${6+6} 。注意...
  • 习惯用EL表达式来解决,快捷方便,但是EL表达式有时候是有局限性的,例如你传的值,如果接口分多处调用,有的是传值的,而有的直接为空,那么你传递的值也就不存在了,此时在页面用EL表达式取值的时候,就会报出...
  • java EL表达式取值问题

    2020-07-28 18:35:33
    EL 表达式取集合list第几个元素: ${集合[index].属性} 譬如: ${listParDefAll[2].par_val} ...
  • 在JSP页面中,有两种常用的便捷取值方式: <%= %> ${ } 示例: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri=...
  • model和modelMap(spring 封装),Java.util.Map modelMap(视图) ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name", "xxx"); modelAndView.setViewName("/user/index

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,264
精华内容 6,905
关键字:

el表达式取值

友情链接: pb288.zip