el表达式

来源:互联网 发布:windows引导修复工具 编辑:程序博客网 时间:2024/06/04 19:19

注意:1、单独js文件不能用EL表达式
             首先,JSP是由服务端执行的,EL表达式自然也由服务端解析执行,因此,如果EL所在的脚本在JSP页面内,它是可以获取到值的,这个值在服务器端返回到浏览器端时已经解析完毕,浏览器端只是呈现而已,但是如果在单独的JS文件中写EL,会怎么样呢?这个时候是无法获取的,因为javascript是客户端执行,单独的JS文件不在服务器的解析执行之中,EL是不起任何作用的,这个时候它就等同于普通的字符串,那么如何解决这种情况呢?
             一:可以通过window.onload()来得到EL的值再传送给JS文件里的全局变量、方法进行变量初始化 。
             二:可以在JSP页面中添加一个隐藏域,给它赋值,在单独的js文件中,通过获取隐藏域的值就间接的获取到了EL表达式的值。

            2、jsp中在js里使用el表达式,需要用"",若不加引号,会被作为一个普通变量对待,若未定义这个变量就是undefined,此时if("${objflag == 1}"){}之类的判断,"${objflag == 1}"得到的结果是一个字符串的false或者true,所以if永远都是true。

1、el表达式是什么?(el表达式对于null会输出空字符串,不会报空指针,el表达式中的绑定名, 无论有几个,都会自动依次从四个对象中查找,找到后再进行处理)

2、el表达式的使用
        1)访问bean的属性(必须提供get、set方法的属性)
            方式一: 
                ${user.name}
                 执行过程:容器会依次从pageContext,  request,session,application从查找 绑订名称为"user"的对象,找到后,调用属性名首字母大写的get属性名方法,

                  "getName"方法然后输出。

               与直接写java代码相比,el表达式有两个 优点:简洁,会将null转换成""输出。

                注意:属性名不能写错。
                如果要指定查找范围,可以:
                ${pageScope.user.name}
                ${requestScope.user.name}
                ${sessionScope.user.name}    
                ${applicationScope.user.name}
            方式二:
                ${user["name"]},此种方式允许[]里面 出现绑订名,还可以允许[]里面出现从 0开始的下标,用于访问数组中的某个元素的值。

                ${user.interest[0]}

<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8"import="bean.*"%><html><head></head><body style="font-size: 30px; font-style: italic;"><%User user = new User();user.setName("kimi");user.setAge(22);user.setInterest(new String[] { "snooker", "cooking" });request.setAttribute("user", user);%>name:${user["name"]}<br /><%request.setAttribute("propname", "age");%>propname: ${propname}<br/>name:${user[propname]}<br /> //22interest:${user.interest[1]}</body></html>

        2)做一些简单的计算,计算的结果可以直接 输出,也可以给jsp标签的属性赋值。

<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8"%><html><head></head><body style="font-size: 30px; font-style: italic;">name:${e.name}<br />salary:${e.salary + 10000}<br />age:${e.age}</body></html>

                a,算术运算: "+","-","*","/","%",注意, "+"号只能求和,不能够连接字符串。
                ${1+2}
                b,逻辑运算(返回布尔值): "&&","||","!"
                ${1>2 && 2<3}
                ${!(1>2)}
                c,关系运算(返回布尔值):">",">=","<","<=","==","!="
                ${1==2}
                d,empty(${empty null}empty运算先从四个对象中依次查找empty后面的对象,找到后再进行判断):
                    用来判断一个字符串是否为空,或者一个集合是否为空。
                    以下四种情况结果为true
                        空字符串("",若" "(中间有空格)则empty运算为false)
                        空的集合

                        值为null  找不到对应的值

empty运算<br /><%request.setAttribute("str2", "");List list1 = new ArrayList();request.setAttribute("list", list1);%>${empty str2}<br />${empty list}<br />${empty null}<br />${empty obj}

 

放在request域中的如通过request.setAttribute("name","xy"),在页面中可以通过${ requestScope.name }

如xy.jsp?name=xy,就要通过${ param["name"] }获取或${param.name}

在js中使用需要加"${param.name}"
0 0