jsp(7)EL表达式

前提:如果Tomcat服务器不能使用EL表达式

        (1)升级成tomcat6

(2)在JSP中加入<%@ page isELIgnored="false" %>


引例:当我们用户登陆成功的时候,seesion就成功建立起来,我们就能这样写一个欢迎界面:

 欢迎你!<%=((User)session.getAttribute("user")).getUsername()%>

然而!不觉得这样写java代码太多了吗?所以可以引用EL表达式:

欢迎你!${user.username}    也可以写成${user[“username”]}

达到简化代码的效果。在这里user.username自动对应的是user.getUsername()。

所以EL表达式也不是万能的,在这也能看出EL表达式的缺点:想要取到的属性值,必须要有相应的get方法!



EL中的隐含对象,即默认取值的对象,例如下面的与范围有关的隐含对象。

示例:${ username }

表示:取出某一范围中名称为username的属性变量。

解释:首先在page中找,即${ username }实际上是${pageScope.username},如果当前page中没有这个属性,那么就越到下一级request,此时${ username }实际上是${requestScope.username}...以此类推。


注意:上述取得是“属性”,而非“参数”。隐含对象只能用来取得范围属性值,即JSP中的getAttribute(String name),例如response是不能使用EL表达式的,因为他没有getAttribute()——得到属性的方法。取参数是在request中取的(request也能取属性)。所以我们可以使用

${param.count + 20}

代替下面的代码,实现request中保存的某个int类型参数做加法,操作request中的参数

String str_count = request.getParameter("count");
int count = Integer.parseInt(str_count);
count = count + 20;


提到EL表达式中的运算,我首先放个demo:

1.${17 / 5}	<br>
2.${17 mod 3} <br>
<%
int i=1;
String num="34";
request.setAttribute("i",num);
%>
3.${i+num} <br>
4.${i} <br>
5.${num} <br>
6.${i+1} <br>
7.${0/20}<br>
8.${20/0}<br>
9.${0/0}<br>

输出是:

1.3.4

2.2 

3.34
4.34
5.
6.35
7.0.0
8.Infinity

9.NaN

其中2的mod代表取余,我们也可以直接用%代替mod,mod等价于%,是%的别名。相应的/的别名是div

3就令人费解了,怎么得到的是34,不是134呢?

我们先看4——${i},这个和前面的${username}一样,代表取属性,默认先取的page中的属性i,如果没有又去找request中的....我们看到当前page中是没有这个属性的,往request中找,有,并且这个属性变量i的值是34,所以${i}就输出了34。

同理5中的${num},既不存在于page,也不存在于request中,session,aplication中也没有,所以取到的是空值(这就是el的好处之一:遇到空值不会报异常也不会变成null值

所以回过头看3,${i+num},就是4,5的相加。注意:EL表达式中的“+”不做字符串的拼接。算术符中做的是运算操作。




如果问我们:判断password1==password2用EL怎么做:

${param.password1} = = ${param.password2}    (错,这个直接输出两者相等,而没有进行关系比较)
${ ${param.password1 }==${ param.password2 } } (错,EL表达式就是为了简化代码设计的,不需要相互嵌套完成操作)

${ param.password1 = = param.password2 }  (对)


最后再说一下保留字,所谓保留字的意思是指变量在命名时,应该避开的名字,以免程序编译时发生错误


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值