jsp EL表达式取值过程、page和pagecontext的区别

1、EL表达式解析过程

JSP中,我们经常会写为${obj.name}字样,但你有没有想过,它的取值过程是什么,属性值从哪取得?


${obj}相当于 request.getAttribute("obj"),这句话严格来说不严谨,依次的请求范围是page、request、session、application

也就是说,如果在page.getAttribute()找不到,再去request.getAttribute,如果request找不到,再去session里找,session里找不到,再去application里


page.getAttribute-------->request.getAttribute------------>session.getAttribute----------->applicaton.getAttribute


2、page和pagecontext的区别

page就是当前jsp页面,也等同于jsp编译后的servlet,查看java代码可以得知

Object  page=this

来个具体的例子吧。

page1.jsp,设置键值对

<%
page.setAttribute("name","obma")
%>
在page1.jsp,可以取出上边设置的name值,但是在其它页面(page2,page3中....)获取到的都是null
<%
String value = (String)page.getAttribute("name");
%>


pagecontext,是page的上下文,通过pagecontext可以获取servletcontext、servletconfig

你可能感兴趣的:(jsp)