JSP笔记

JSP
  1、JSP简介
    Java Server Page
    1)、JSP本质是一个Servlet
    2)、JSP能够以HTML页面的方式呈现数据,是一个可以嵌入Java代码的HTML。
    3)、JSP必须运行在服务器中

  2、运行原理
    1)、我们发现index.jsp页面被翻译成了一个index_jsp.java --->index_jsp.class
    2)、我们发现HttpJspBase继承HttpServlet,所以index_jsp就是一个Servlet
    3)、每次请求都调用_jspService()
    index.jsp ---> index_jsp.java ---> index_jsp.class
    index.jsp(a,h1,...)
    ----> JspServlet(*.jsp)
    ----> index_jsp.class
    ----> _jspservice();
    ----> jsp这个servlet,out.write()

    服务器/work/.....

  3、JSP基本语法
    1)、模板元素
      HTML元素都叫模板元素 --- > out.write("<h1>标题</h1>")

    2)、jsp表达式
      在页面输出表达式中的内容
      <%=new Date() %> ---> out.print(new Date());

    3)、JSP脚本片段
      在页面编写java代码
      <%
        //java代码
      %>
      这些java代码都被放在jspservice()这个方法中
      所以方法中可以写什么,这里就可以写什么
      public void test(){}; //xxx
      private String name; //xxx
      脚本片段可以有多个,但是合起来必须完整
    4)、JSP声明
      jsp声明的内容都在jspservice方法之外
      <%! %>,可以声明变量 private String name;
      可以写方法 public void test(){}
      ....
    一般不采用

    5)、JSP注释
      HTML注释: <!-- --> 浏览器解析的时候就忽略了
      JSP注释: <%-- --%> 在翻译成java文件时被忽略
      java注释: // /**/ jvm运行.class文件的时候忽略

    6)、JSP指令
      <%@指令名 属性=值 %>
      page: 定义页面如何被服务器翻译解析
        age指令属性
          1)import:用来在页面导包
          2)pageEncoding:指定页面使用的字符集,也是告诉jsp引擎使用指定的编码翻译
          3)contentType:设置响应头,页面如何响应给浏览器
          4)errorPage:指定页面发生错误去向的页面
          5)isErrorPage:表示当前页面是一个错误页面。
          6)session:默认session="true",当前页面是否参与会话,是否可以使用session对象
          7)isELIgnored:是否忽略el表达式,默认false代表不忽略, 设置为true-忽略
          8)info:定义页面的信息(描述)
      include: 静态包含
        <%@include file="文件路径"%> 可以包含WEB-INF下的页面
        静态包含,要包含的文件是不用翻译和编译的
        被包含的页面内容基本固定的情况下使用静态包含

      taglib: 引入标签库

    7)、JSP标签
      <jsp:forward></jsp:forward> 进行页面转发
      <jsp:forward page="要转发去的页面">
        <jsp:param value="root" name="username"/>
      </jsp:forward>


      <jsp:include page="要包含的页面"></jsp:include>
      动态包含,要包含的文件是需要翻译和编译的
      被包含的页面内容经常更新的情况下使用动态包含


  4、JSP隐含对象

    隐含对象:是我们在页面直接可以使用的对象
      PageContext pageContext = null; 代表当前页面
      HttpSession session = null; 代表会话对象
      Throwable exception = null; 代表捕获到的异常对象
      ServletContext application; 代表整个web应用
      ServletConfig config = null; 代表servlet配置信息
      JspWriter out = null; 代表可以在页面输出数据的out对象
      Object page = this; 代表当前的jsp
      HttpServletRequest request 代表封装档次请求详细信息的对象
      HttpServletResponse response 代表当次响应的对象
    五大常规对象:
      Throwable exception = null; 代表捕获异常对象
      ServletConfig config = null; 代表servlet配置信息
      servlet--》 jsp页面对应的servlet
        config jsp页面对应的servlet的配置信息
        config.getServletName();
      JspWriter out = null; 代表可以在页面输出数据的out对象
        out.write();
      Object page = this; 代表当前jsp
        还没this实用
      HttpServletResponse response 代表当次响应的对象
        response



    四大域对象:域对象用来在其他资源共享数据
      PageContext pageContext = null; 代表当前页面对象
        1、获取其它隐含对象 pageContext.getXX();
        2、作为域对象共享数据。只能在当前页面共享数据,离开页面就无法共享
          String key ,Object value
          通过调用域对象.setAttribute(key,value),给相应的域中设置内容
          域对象.getAttribute(key) 获取域中的内容

    HttpServletRequest request, 代表封装当次请求详细信息的对象
      1、在同一个请求对象中共享数据,只要是同一次请求,就可以共享数据

    HttpSession session = null; 代表会话对象
      1、同一次会话共享数据 浏览器打开-开始会话 浏览器关闭-结束会话
      会话就是和web应用沟通,所以不同web应用就是不同会话


    ServletContext application = null; 代表整个web应用
      1、application代表当前web应用。
      只要在同一个web应用中都可以共享数据。
      web应用只要不卸载都可以访问

    域对象        作用范围      起始时间      结束时间
    pageContext      当前JSP页面      页面加载       离开页面
    request          同一个请求      收到请求      响应
    session          同一个会话      开始会话      结束会话
    application        当前Web应用     Web应用加载   Web应用卸载

    隐含对象:在JSP页面直接可以使用的9个对象
      4个域对象:
        域对象:在其他资源之间共享数据

        域对象.setAttribute(key,value);在域中设置要共享的数据
        域对象.getAttribute(key);取出与域中的数据
        域对象.removeAttribute(key);移除域中的数据


    PageContext pageContext
      1)、作为page域对象:离开页面后域中的内容就失效了
      2)、获取其他的隐含对象

    HttpServletRequest request
      1)、作为request域对象:同一个请求可以共享
      2)、request其他用法

    HttpSession session
      1)、作为session域对象: 同一次会话可以共享数据:浏览器打开--》浏览器关闭
不同浏览器也是不同的会话。

    ServletContext application
      1)、作为application域对象: 同一个Web应用,只要web应用不卸载。
      在世界各地都能获取到。


    5个其他对象:
      HttpServletResponse response:响应

      ServletConfig config :servlet配置信息
      config.getName();//jsp


      Throwable exception
        页面捕获到的异常
      JspWriter out
        向页面输出数据
      Object page
      Object page = this; 基本没用

  JSP运行原理图解

  

 

posted @ 2020-03-26 11:28  orzxxll  阅读(190)  评论(0)    收藏  举报