读书人

servlet的四个域的数据名称有关问题

发布时间: 2013-04-09 16:45:09 作者: rapoo

servlet的四个域的数据名称问题
通过pageContext.findAtribute("name")是按照顺序向page request session application中寻找数据,如

果没有则返回null。两个问题:

1,这四个域中的数据的名称可以相同吗?如:request中有data:aaa的数据,session中有data:bbb的数据

2,如果可以重名,那么我要找session中的data:bbb但通过pageContext.findAtribute("data")找到的确是request中的data:aaa,岂不是有问题? 一试就明了servlet的四个域的数据名称有关问题
[解决办法]
早上看了下api,做一补充:
servlet的那4个域分别对应的是4个Class(详见api,javax.servlet.jsp.PageContext)
page--PageContext
request--HttpServletRequest
session--HttpServletSession
application--ServletContext

而request,session,application都是基于page扩展的对象
所以可以根据page(pageContext)来获取任一一个域的对象
getPage()
getRequest()
getSession()
getServletContext()

每个域对象都提供了setAttribute getAtribute的方法 ,用于保存各自存储属性的范围
getPage().getAttribute()/setAttribute()
getRequest().getAttribute()/setAttribute()
getSession().getAttribute()/setAttribute()
getServletContext().getAttribute()/setAttribute()

[解决办法]

引用:
引用:
早上看了下api,做一补充:
servlet的那4个域分别对应的是4个Class(详见api,javax.servlet.jsp.PageContext)
page--PageContext
request--HttpServletRequest
session--HttpServletSession
application--ServletC……


嗯 EL里面是按照范围小从到大的来取值的 page-request-session-application

一般开发里面会约定命名的规范来避免这个问题

读书人网 >Java Web开发

热点推荐