el表达式

注意: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 /> //22
		
		interest:${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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值