zoukankan      html  css  js  c++  java
  • Jsp-查漏补缺

    翻译后的jsp,继承HttpJspBase实现JspSourceDependent接口


    _jspInit()
    _jspDestroy()
    _jspService()

    1. javax.servlet.jsp.PageContext pageContext
    2. application = pageContext.getServletContext();
    3. config = pageContext.getServletConfig();
    4. session = pageContext.getSession();
    5. out = pageContext.getOut();
    6. java.lang.Object page = this;
    7. javax.servlet.http.HttpServletRequest response
    8. javax.servlet.http.HttpServletResponse request
    9 exception

    pageContex application config session out
    page request responce exception


    jsp指令 include taglib page

    include指令 是属于静态包含,它包含的所有多个jsp页面编译成一个Servlet文件

    而与之相对的是

    reques.getRequestDispatcher("x.jsp").include(request,responcse);

    它包含的所有多个jsp页面编译成多个Servlet文件。执行的时候在动态包含内容进来。

    面试题:静态包含与动态包含的区别:

    静态包含:编译时包含,包含的所有多个jsp页面编译成一个Servlet文件,效率高
    动态包含:运行时包含,所有多个jsp页面编译成多个Servlet文件,执行的时候在动态包含内容进来。

    pageContext.forword(); 实际上这个是reques.ggetRequestDispatcher().forword()
    pagecontext.include();实际上这个是reques.ggetRequestDispatcher().include()

    pageContext.getAttribute("",Scope)//从四大域里面查找 page request session application

    jsp运行原理:
    当JSP页面第一次被访问时,Web服务器会请求交给JSP引擎去处理。
    JSP引擎先将JSP页面文件转译成一个Java文件,也就是jsp会被翻译成一个Servlet,
    服务器将前Java文件编译成字节码文件,再执行这个字节码文件来响应客户的请求。
    当这个JSP页面再次被请求时,只要该JSP文件没有被改动,JSP引擎就直接调用已装载的Servlet。


    out
    out的类型是JspWrite
    JspWrite相当于一种带缓存功能额PrintWrite。
    page指令的buffer属性可以调整缓存大小或关闭

    只有向out对象写入了内容,且满足如下任一条件时。out对象才会调用ServletResponse.getWrite方法
    并通过该方法的PrintWrite对象将out对象的缓冲区内容真正写入到Servlet引擎提供的缓冲区中。
    1.设置page指定的buffer属性关闭了out对象的缓存功能
    2.out对象的缓冲区已满
    3.整个jsp页面结束

    面试题:out隐式对象的工作原理。

    调用out对象方法写入的数据,首先存储在JspWrite对象的缓冲区里面
    当JspWrite对象的缓冲区已满或整个jsp页面结束的时候
    JspWrite对象会调用ServletResponse.getWrite()方法返回的PrintWrite对象的write()方法将数据写入Response的缓冲区里面


    <jsp:include> --->动态包含,运行时包含
    <jsp:forward> --->首页调整。首页不能配置Servlet,

    <jsp:param> -->用法给forward的页面传递参数

    映射jsp-->映射servlet

    <Setvlet>
    <servlet-name>xxx</servlet-name>
    <jsp-file>/14.jsp</jsp-file>
    </Setvlet>
    <Servlet-mapping>
    <Servlet-name>xxx</Setvlet-name>
    <url-pattern>/index.html</url-pattern>
    </Servlet-mapping>

  • 相关阅读:
    给jdk写注释系列之jdk1.6容器(9)-Strategy设计模式之Comparable&Comparator接口
    给jdk写注释系列之jdk1.6容器(8)-TreeSet&NavigableMap&NavigableSet源码解析
    给jdk写注释系列之jdk1.6容器(7)-TreeMap源码解析
    给jdk写注释系列之jdk1.6容器(6)-HashSet源码解析&Map迭代器
    给jdk写注释系列之jdk1.6容器(5)-LinkedHashMap源码解析
    给jdk写注释系列之jdk1.6容器(4)-HashMap源码解析
    给jdk写注释系列之jdk1.6容器(3)-Iterator设计模式
    给jdk写注释系列之jdk1.6容器(2)-LinkedList源码解析
    给jdk写注释系列之jdk1.6容器(1)-ArrayList源码解析
    留言板
  • 原文地址:https://www.cnblogs.com/lhy_2011/p/4045828.html
Copyright © 2011-2022 走看看