jsp笔记3jsp运行原理

jsp第一次访问是会被翻译成servlet, 所以第一次访问通常会比较慢,但第二次访问,jsp引擎如果发现jsp没有变化,就不再会翻译,而是直接调用。

jsp执行引擎:将jsp翻译成servlet的程序。

jsp引擎在调用jsp对应的_jspServlet时,会传递或创建9个与web开发相关相关的对象供_jspServlet使用。

九大隐式对象:

request  response session application config page  exception out pageContext

1. out隐式对象

jps页面中out的隐式对象的类型为jspWriter,jspWriter相当于带缓存功能的PrintWriter.

out.write("A")

response.getWriter.write("B");

输出的结果可能是BA,因为A写入缓存区,B也写入缓存区,当jsp结束的时候,A写入B的缓存区,显示到界面,所以最后显示结果为BA, 建议在开发的过程中用隐式对象的方式进行显示。

2.pageContext

2.1 代表jsp页面的运行环境

2.2 对象封装了对其他8大隐式对象的引用

2.3 提供的方法如下:

getException

getPage

getRequest

getResponse

getServletConfig

getServletContext

getSession

getOut

用在自定义标签开发技术中。传递参数的时候只传递pageContext

2.4 其他方法

pageContex.setAttribute();  

pageContext是域对象,涉及生命周期。

在web开发中涉及pageContext/Request/Session/ServletContext四个域。

findAttribute()

pageContext.findAttribute()    //page request session application

request.setAttribute("data","michael");

String data = pageContext.getAttribute("data",PageContext.REQUEST_SCOPE);

out.write(data);

pageContext.findAttribute("data"); // page request session application

el表达式

${data}     ===   pageContext.findAttribute("data"); // page  request  session application

forward    include方法,简化RequestDispatcher.forward();

方法接收的资源以"/"开头,"/"代表当前web应用

pageContext.forward("/1.jsp")

pageContext.include("/foot.jsp")

你可能感兴趣的:(jsp笔记3jsp运行原理)