Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP隐式对象和EL表达式隐式对象之间有什么区别?_Java_Jsp_Jstl_El - Fatal编程技术网

Java JSP隐式对象和EL表达式隐式对象之间有什么区别?

Java JSP隐式对象和EL表达式隐式对象之间有什么区别?,java,jsp,jstl,el,Java,Jsp,Jstl,El,我已经开始阅读JSP。我遇到了JSP隐式对象,例如,session,application等等。在阅读了EL表达式之后,我知道EL表达式也有隐式对象 我的问题是这些隐式对象之间的区别是什么 即使它们在语义上是相同的,为什么它们创建EL并使事情变得有点难呢 如果我错了,请纠正我。您得到的对象没有任何区别,只是在每种技术中访问相同对象的方式不同而已。例如,JSP中的request将为您提供与EL中的${pageContext.request}相同的对象 在EL的情况下,为了方便起见,可以使用其他隐式

我已经开始阅读JSP。我遇到了JSP隐式对象,例如,
session
application
等等。在阅读了EL表达式之后,我知道EL表达式也有隐式对象

我的问题是这些隐式对象之间的区别是什么

即使它们在语义上是相同的,为什么它们创建EL并使事情变得有点难呢


如果我错了,请纠正我。

您得到的对象没有任何区别,只是在每种技术中访问相同对象的方式不同而已。例如,JSP中的
request
将为您提供与EL中的
${pageContext.request}
相同的对象

在EL的情况下,为了方便起见,可以使用其他隐式对象,例如
param
requestScope
。您仍然可以获得相同的数据,但语法会很笨拙


您可能希望将其与JSP中的隐式对象与servlet中“缺少”隐式对象进行比较。JSP隐式对象与您可以在Servlet中获得的对象没有什么不同,只是隐式对象使语法更清晰。例如,隐式
session
对象与通过
HttpServletRequest#getSession()
获得的对象相同。一个例外是
pageContext
,它在servlet中没有等价物;即使两者产生相同的结果,那么为什么他们不能在JSP隐式对象本身中添加这些方法,而不是坚持EL?好吧,正如我所看到的,一个因素是语法-IIRC,在EL中调用函数没有简单的方法。这使得很难使用不是getters plus的现有函数,这将导致语法笨拙,JSP隐式对象用于Scriptlet中,而EL等价物用于EL表达式中,因此针对该语法进行了“优化”。的前几段可能有助于澄清EL的工作原理和缺点;