表达式原理
问题1:不是说属性必须有get方法,才能进行查找的吗,为什么grade没有get方法,就可以输出呢?问题2:
如果对象的属性没有get方法, 但是有赋值属性,比如public String name="张三";在request自定义添加了这个name的属性, 表达式还可以取出这个值吗?
问3:
自定义Student这个类的对象是stu吧? 为什么
<h2>概要:${student }</h2>
不是写对象,也不是写Student这个类,而是自定义属性中的名称,这是个名称阿,又不是对象,也不是属性阿,只是说它的值是stu对象吧?为什么一直说student对象?student是个类,而stu是student的对象把?
问4:
<h1>姓名:${requestScope.student.name }</h1>
这个student也就是自定义属性的名称吧?所谓的属性名吧?但是属性名称里面存放的是stu对象,那么下面老师说的user怎么又是类了? 他不是应该也是属性名吗?对应的对象,然后这个对象里面存放的userName这个属性;在通过get去查找这个属性,然后进行作用域查找,并输出阿。但是老师说的是去User类里寻找这个userName的get方法,??user不是属性名吗??
EL表达式获取对象属性的原理如下:
以表达式${user.userName}为例
EL表达式会根据userName去User类里寻找这个userName的get方法,此时会自动把userName首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。
但是这个user又是类了?不是属性名了?
问题5:
为什么是null,不是用了el表达式了吗?表达式不是会显示空的属性吗。
问题6:
在表达式中,只有自定义存放的是对象信息,才需要输入子属性的吧? 如果存放的是一个变量,直接在表达式中写自定义属性名就行了吧,比如
<h2>评价信息:${requestScope.grade }</h2> grade中存放的就是一个grade的变量, 并没有子属性。 所谓子属性就是对象中才会有的吧。 理解对吗
正在回答 回答被采纳积分+1
同学你好,关于同学的问题,有如下回答:
1、对象的属性必须有get方法,才能使用在el表达式中使用对象.属性名的方式获取值,但是这里的grade并不是对象的属性,不需要通过对象.属性名的方式获取,所以grade不需要get方法。
2、对象的属性没有get方法,不能在el表达通过对象.属性名的方式取值。
3、在Servlet中定义的Student类对象是stu,存入到session中时,名称为student,如:
这里的student就是指存入session的stu对象,在jsp中,可以通过student获取stu对象,这里student可以说是对象。
4、 <h1>姓名:${requestScope.student.name }</h1>这里的student是存入request的名称,指的是stu对象,jsp中获取student是对象,不是属性。可以使用el表单对象.属性名的方式获取属性值。
${user.userName}这里的user也是对象,是User类的对象,el表达式会根据userName去User类里寻找这个userName的get方法,会自动把userName首字母大写并加上get前缀,找到对应的方法,获取属性值。
5、toString()方法中,冒号后边是mobile,如:
在Servlet中设置的值为null,如:
输出对象时,是使用toString()方法进行输出,所以最后输出的mobile为null。
6、同学的理解是正确的。
祝学习愉快~
- 参与学习 人
- 提交作业 9398 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星