jsp:useBean范围
JSP代码是:
Name :
Surname :
虽然我在request
范围中设置了java对象,而不是在Controller Servlet中的session
范围中,我将请求转发给此Servlet。 虽然标记中提到的作用域是会话,但如何获取请求属性? 如果它使用
pageContext.findAttribute()
来获取属性,那么在标记中使用scope属性有什么用?
PageContext#findAttribute()
分别扫描页面,请求,会话和应用程序范围,直到找到给定属性键的第一个非null
属性值。 另见javadoc :
按顺序搜索页面,请求,会话(如果有效)和应用程序范围中的命名属性,并返回关联的值或null。
这就解释了为什么它发现请求作用于转发servlet中的一个集合而不是JSP中声明的会话范围。 我们的EL维基页面也对此进行了解释。
在任何情况下,如果您正在使用servlet,则不应该在应该由servlet管理的模型对象上使用
。
遵循不同的MVC级别,当实际使用servlet作为控制器时,这只会导致混淆和维护问题。 我们的Servlets维基页面的 “编码样式和建议”部分也明确提到了这一点。
所以,不是所有那些
东西,你可以这样做:
Name: ${person.name}
Surname: ${person.surname}
您只需要添加JSTL
以防止在重新显示用户控制的数据时潜在的XSS攻击漏洞(请注意
不会这样做!)
Name:
Surname:
要了解有关JSTL的更多信息,请查看我们的JSTL wiki页面 。