• JSP以及JSP解析原理


    什么是JSP?

    JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。 JSP这门技术的最大的特点在于,写jsp就像在写html,但: 它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。 相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。 Jsp快速入门:在jsp页面中输出当前时间。

    JSP原理

    • tomcat通过解析,找到myetest项目下的index.jsp
    • 判断index.jsp对应的的servelet对象是否存在
    • 如果不存在,经过首先把index.jsp翻译成java文件,然后JVM编译成对应的CLASS字节码文件,并调用_jspInt初始化(3)相关的对象,接着调用_JspService方法将响应结果发给浏览器
    • 如果存在,直接通过(4)调用_JspService方法将响应结果发给浏览器.

    JSP脚本表达式

    • JSP脚本表达式(expression)用于将程序数据输出到客户端
    • 语法:<%= 变量或表达式 %>
    • 举例:当前时间:<%= new java.util.Date() %>
    • JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.write(…) 将数据输给客户端。
    • JSP脚本表达式中的变量或表达式后面不能有分号(;)。

    JSP脚本片断

    • JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。
    • 语法:
    •  <% 多行java代码 %>
    • 注意:JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
    • JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。
    • 在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
    • 举例:
    • <% int x = 10; out.println(x); %> <p>这是JSP页面文本</p> <% int y = 20; out.println(y+””+x); %>
    • 多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。如:out.println(x);
    • 单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,例如:
    %
        for (int i=1; i<5; i++) 
        {
    %>
    
        <H1>www.itcast.cn</H1>
    
    <%
        }
    %> 

    JSP声明

    • SP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面,即实例变量。
    • 语法: <%! java代码 %> 所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法
    • 。 多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
    • JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
    <%!
    static 
    { 
        System.out.println("loading Servlet!"); 
    }
    private int globalVar = 0;
    public void jspInit()
    {
        System.out.println("initializing jsp!");
    }
    %>
    <%!
    public void jspDestroy()
    {
        System.out.println("destroying jsp!");
    }
    %>

    JSP注释

    • JSP注释的格式: <%-- 注释信息 --%>
    • JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容。
  • 相关阅读:
    Java分享笔记:关于Java反射机制
    Java分享笔记:自定义枚举类 & 使用enum关键字定义枚举类
    Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容
    Spark-源码-SparkContext的初始化
    Spark-源码-Spark-StartAll Master Worler启动流程
    Spark-源码-Spark-Submit 任务提交
    Hadoop2学习路程-HDFS
    JavaSE 第二次学习随笔(五)
    JavaSE 第二次学习随笔(四)
    JavaSE 第二次学习随笔(三)
  • 原文地址:https://www.cnblogs.com/Coolkaka/p/5937361.html
Copyright © 2020-2023  润新知