JSP运行原理和九大隐式对象
每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。
由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。
1、page当前servlet对象
2、confingservletconfig对象
3、applicationservletcontext对象,当前web应用
4、response
5、request
6、session
7、out
8、exception在错误提示页面的对象,表示上一页页面抛出的异常。
9、pageContext代表整个JSP页面对象
*out1、相当于是response.getWriter得到PrintWriter对象
2、out和response.getWriter获取到的流,稍微有些不同,在于这个out对象本身就具有一个缓冲区。利用out写出的内容,会先缓冲在out缓冲区中,直到out缓冲区满了或者整个页面结束时,out缓冲区中的内容才会被写出到response缓冲区中,最终可以带到浏览器页面进行展示。
3、page指令中的
buffer="none | 8kb | sizekb" 可以用来禁用out缓冲区或设置out缓冲区的大小,默认8kb。
autoFlush="true | false"用来设置当out缓冲区满了以后如果在写入数据时out如何处理,如果是true,则先将满了的数据自动刷新到response中后再接受新数据;如果是false,则满了再写入数据直接抛异常。
4、在jsp页面中需要进行数据输出时,不要自己获取response.getWriter,而是要使用out进行输出,防止即用out又用response.getWriter而导致输出顺序错乱的问题
*pageContext(1)可以作为入口对象获取其他八大隐式对象的引用
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
(2)域对象,四大作用域的入口,可以操作四大作用域中的域属性
作用范围: 当前jsp页面
生命周期: 当对jsp页面的访问开始时,创建代表当前jsp的PageContext,当对当前jsp页面访问结束时销毁代表当前jsp的pageContext
作用:在当前jsp中共享数据
public voidsetAttribute(name,value)
public java.lang.ObjectgetAttribute(name)
public voidremoveAttribute(name)
public void setAttribute(name, value,intscope)
public java.lang.ObjectgetAttribute(name,intscope)
public voidremoveAttribute(name,intscope)
PageContext.APPLICATION_SCOPE大
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE小
findAttribute方法 -- 搜寻四大作用域中的属性,如果找到则返回该值,如果四大作用域中都找不到则返回一个null,搜寻的顺序是从最小的域开始向最大的域开始寻找
(3)提供了请求转发和请求包含的快捷方法
pageContext.include("/index.jsp");
pageContext.forward("/index.jsp");
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。