up:: web开发基础内容概述

特别注意,EL表达式可以进行数学运算、布尔表达式,三目运算符!!!!!


● 第一部分:主要简述为什么需要EL表达式 ,以及EL表达式的一个小例子;

● 第二部分是核心:主要是EL的四个作用域对象;并举了很多例子,来说明四个作用域对象的性质;

● 第三部分核心是:如果一个对象为null,Java输出这个对象时会输出null,而EL输出这个对象的时候,会输出“”;

EL的这个性质,对于在浏览器界面上显示对象(万一这个对象是null)用户体验更好啦;

● 第四部分内容是:通过param对象 获取请求中的参数,包括url中的和form表单中的;


EL表达式可以极大简化JSP的书写难度,提高程序员的编码体验。

EL表达式 主要是用于 简化JSP的输出 !即用 【 <h1>姓名:${requestScope.student.name}</h1>】简化【Student stu =(Student)request.getAttribute(“student”);out.println(“<h1>姓名:“+stu.getName()+”</h1>”);】;这是EL最核心的目的!!!


一:什么是EL表达式:EL 表达式初体验


不使用EL表达式时的情况:体验很糟糕

准备工作:

效果:

以上过程的问题:(1)在JSP中编写代码需要导包啥的很麻烦; (2)Java代码和HTML代码杂糅在了一起,很恶心,需要大量的拼凑字符串,这不仅麻烦还很容易出错。 (3)获取属性值的流程相对繁琐;


上面的工程,使用EL表达式后的效果:主要是体现出EL表达式的好处

下面使用EL表达式后,既不用考虑导入Student类的问题;也不用考虑拼接字符串的问题;一切都使用了类似HTML的书写方式;在需要输出数据的地方也不用套进如undefined等这样的代码块中,而是使用${}这样的方式,有点即插即用的赶脚,很方便;

效果:EL表达式中,当一个对象为null的时候,其输出会是“”空字符串,而不是null,这点就比Java的处理策略好点;


二:而EL作用域对象(本篇博客的核心)

Scope:范围;

(1)上面四个作用域代表了取值的四种范围;

(2) EL表达式de作用域对象可以不写;

当不写作用域对象时,其会按照作用域由小到大逐层尝试搜索;比如想要${grade },即想要获取grade属性时,没有写作用域对象,其会现在pageScope范围内找,没找到再去requestScope中找………………如果在四个作用域中都没找到,就会返回一个“”空字符串;


示例演示

情况1:

效果:很显然,student属性在session对象中,通过${requestScope.student.name }当然获取不到啊;


情况2:对情况1进行修改,改成sessionScope:

效果:说明,范围一定要准确,才能获取到属性值


情况3:不写作用域对象:(但作为一个严谨的程序员,强烈不建议这样,,这儿只是演示)

效果:其会按作用域从小到大依次尝试获取属性;如果在四个作用域中都没找到,就会返回一个“”空字符串;


情况4:这个例子可以,明显看到:没写作用域对象时,“其会按作用域从小到大依次尝试获取属性”;

效果:


情况5:这几个作用域范围没有包含关系,各自独立

效果:

再如:

效果:

再如:

效果:

这几个作用域范围没有互相包含!能懂?………………


三:EL表达式输出:EL表达式输出对象的本质是调用toString()方法

(1)EL表达式最根本的目的就是替代JSP原本的out.println():


(2)语法

稍微啰嗦下,有的是单级属性,如grade;有的属性还可以获取属性,如student还可以student.name获取名字;(这很正常啦,没什么)

如:


(3)EL表达式可以进行数学运算和布尔表达式

EL表达式还可以进行三目运算符 :见企业门户网站的前台View视图(JSP)部分这篇文章的JSP的内容;(20210315)


(4)直接打印一个对象时候:是调用其toString()方法;EL表达式输出null对象的时候,输出的是“”,而Java是输出null的;

效果:

改写student类的tString()方法:

点击Terminate(停止之后),重启Tomcat即可;

此时的效果:


四:EL输出参数( 获取请求中的参数,包括url中的和form表单中的)

前面已知Servlet中获取请求中参数的方式是:request.getParameter(“teacher”);

在JSP中怎么做?EL表达可以获取请求中的参数:

示例:

效果:

EL表达式可不可以获取form表单的参数?按理说应该可以的:实测是可以的

新建一个提交表单的HTML:

效果:

疑问?但是上面,爱好是个数组哎,如何做待解决!!!

这个问题:目前,能采取的策略就是还是 jsp中的内置对象request,调用getParameterValues()方法来获得这个数组,再遍历数组,输出每一项值: