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")
网友评论