这个问题在这里已经有答案了:
el是否自动转换/强制转换类型?${a.name}实际上是如何工作的(2个答案)
四天前关门了。
我有头一本书中的这些照片:
我要你们注意替换 ${person.dog.name}
. 我唯一想知道的是,它如何知道属性“person”是person类型的对象?当然, getAttribute()
返回对象,所以必须将其强制转换为person,但它如何知道它是由person类生成的?
我猜这个代码使用 findAttribute()
以前,查找存储值为“person”的属性的范围。后来它试着用 getAttribute()
. 所以在它找到它之后,它得到了它-但是它仍然不知道它在现实中得到了什么。那么,它是如何/在哪里“发现”它属于person类型的呢?
2条答案
按热度按时间5m1hhzi41#
el引擎可以看到
person
在美化的hashmap中查找request.setAttribute
正在填充-美化的hashmap)。它在那里找到一个对象,因为你设置了它。它获取并调用这个对象
.getClass()
在它上面,它回来了Person.class
. 然后,它在上运行一个大写函数dog
生产getDog
. 然后使用.getFields()
以及所有使用.getMethods()
,查找名为dog
或者一个名为getDog
. 它找到方法并调用它。重复这个原则,了解它最终如何处理
.name
部分。现在el有了一个对象(在任何对象上调用getname的结果,wsas通过反射调用getdog返回)
person
是),然后把它串起来。我不认为这是html逃避它,所以这是一本“有用”的书,告诉你如何使用过时的技术(jsp)来创建安全漏洞。伟大的。
你有新书吗?你可能想买一些不到10年的东西:)
ne5o7dgx2#
没有。通过查找方法,使用反射来解析属性
getDog()
在任何物体上person
决定,然后重复这个过程。