在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)

哎,够背的,最后4张图怎么调整都很小,看不清楚,所以大家还是看我这篇文章吧在javascript中使用el表达式(图片清晰版,有图有真相),这篇文章的图片可以正常看清楚,跟我这篇文章是一样的内容!

有些文章上说,javascript中不支持写el表达式,这句话本身就不够严谨,如果说,单独的js文件中不支持写el表达式,这句话的确是对的,所以,大家在看我这篇文章的时候,希望大家别钻牛角尖,谢谢!我只是希望大家在写文章的时候能够说的严谨和明确一些,别模棱两可,要不然很容易误导别人,看这篇文章时,希望大家别钻牛角尖,希望大家别钻牛角尖,希望大家别钻牛角尖,重要的事情说3遍。

本篇文章的背景就是在jsp中的javascript中写el表达式,只要是jsp都会经过转译,解析生成html返回给客户端。

我可没说在单独的js文件中支持写el表达式。

在javascript中使用el表达式,该怎么使用呢?网上有些人还在讨论说javascript是客户端的,el表达式是服务端的,客户端不能使用服务端的东西!纯属扯淡,如果按照这样理解的话,那浏览器是客户端,那浏览器就不能从服务器上获取到数据,把数据展现在浏览器了!

接下来讲一讲怎么在javascript中使用el表达式!下面我自己写了个例子,如下截图,有图有真相才有说服力!哈哈........

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第1张图片

浏览器界面效果如下:

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第2张图片

浏览器解释执行,解释执行之后的源代码如下图:

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第3张图片

点击网页上的文本框,看下效果!

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第4张图片

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第5张图片

看下图:把这2行注释掉后,点击文本框之后客户端浏览器就不会报错了,文本框的值就变成16了。

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第6张图片

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第7张图片

javascript中想要正常的使用el表达式,就要为el表达式加上引号(单引号或者双引号都可以,反正总之就是要加引号)

图1

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第8张图片

图2

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第9张图片

图3

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第10张图片

图4

在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)_第11张图片

最后,奉上这个案例的源代码

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%
	session.setAttribute("userName", "张三");
	session.setAttribute("age", 16);
%>




演示在javascript中使用EL表达式





	

演示在javascript中使用EL表达式

我们可以这样做个测试,在一个jsp页面上写,alert("${sessionScope.userName}");或者可以这样alert('${sessionScope.userName}'); 不管是单引号还是双引号,都可以,反正就是要加引号。为什么要加引号呢?大家想一想?

比如我们在jsp页面上,我们写一段javascript代码,比如弹出一句话。如下例子:


或者你直接alert("您好张三");这样写也是可以的。

OK,现在我们要用el表达式了,也是用alert弹出一句话,这句话是用EL表达式从服务端获取到的!代码如下:

大家想下会有什么问题?

如果${sessionScope.userName}从服务器端获取到的值是张三,那么最终浏览器解释执行得到的就是如下这样的结果

var message = 张三;

这样肯定是不行的,javascript中字符串肯定是要用引号引起来的,像var message = "张三";或者是像var message = '张三';这样才对,所以这下知道为什么在javascript中使用el表达式一定要用引号引起来了吧,不管是单引号还是双引号,总之就是要用引号引起来。

像alert(${sessionScope.userName});这种写法浏览器最终解释执行得到的结果就是alert(张三);所以这样写肯定会有问题,只有alert("${sessionScope.userName}");这样写或者alert('${sessionScope.userName}');这样写才可以,浏览器最终解释执行得到的结果就是alert("张三");和alert('张三');

还有就是如果${sessionScope.age}从服务器取出的是一个数字呢?比如${sessionScope.age}从服务器取出的值是16,那么要不要加引号呢?

alert(${sessionScope.age});浏览器最终解释执行得到的结果就是alert(16);你们自己想想,javascript的语法中,数字要不要加引号呢?,在javascript中定义一个数字类型的变量像var age =16;这样写是没有任何问题的,然后alert(age);可以正常弹出16,没问题,如果我们像var age = "16" 或者像var age = '16'这样写呢?也没问题,只不过这里加了引号的16就是一个字符串了。所以不管EL表达式从服务器上取到的值是字符串的还是数字,最好都加上引号,这样做比较保险,也比较省事,不管是单引号还是双引号,总之加上引号肯定没问题。如果EL表达式从服务器上取到的值是数字,在javascript中给这个数字加上引号也没关系,如果客户端要用这个加了引号的数字做数学运算,我们可以利用javascript中的函数把这个加了引号的数字转换成数字类型再做运算! 比如var age = "${sessionScope.age}" ,浏览器解释执行后得到的结果是var age = "16";大不了我们在客户端利用javascript的转换函数,把age = "16"从字符串类型转换为数字类型再做数学运算即可!

你可能感兴趣的:(javascript,javaweb,jsp)