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,岂不是有问题? 一试就明了
[解决办法]
早上看了下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()
[解决办法]
嗯 EL里面是按照范围小从到大的来取值的 page-request-session-application
一般开发里面会约定命名的规范来避免这个问题