概念

  • 第一个JSP程序:
    • 在WEB-INF目录之外创建一个index.jsp文件,然后这个文件中没有任何内容。
    • 将上面的项目部署后,启动服务器,打开浏览器,访问以下地址:http://localhost:8080/jsp/index.jsp 此时展现在大家面前的是一个空白页
  • 过程:
    • 实际上访问该index.jsp文件时,底层执行的是:index_jsp.class这个java程序。
    • 这个index.jsp会被Tomcat翻译生成一个index_jsp.java文件,之后Tomcat会将这个java文件编译成一个class文件,最后由JVM来执行这个class文件。
    • 访问index.jsp,实际上执行的是index_jsp.class中的方法
  • JSP生命周期
    • index.jsp访问的时候会自动翻译成index_jsp.java文件,该文件再编译为class文件,index_jsp这就是一个类。
    • index_jsp类继承了HttpJspBase,而HttpJspBase类继承了HttpServlet类,故index_jsp类也是一个Servlet
    • JSP实际上就是一个Servlet,Jsp的生命周期和Servlet一样,没有任何区别
    • jsp和Servlet一样,都是单例的(假单例)。
  • 思考:为什么JSP文件的第一次访问速度较慢?
    • 大部分运维人员给客户演示项目,都需要先将所以JSP文件先访问一遍、
    • 第一次访问JSP文件
      • 将jsp文件翻译生成Java文件
      • 编译Java文件生成class文件
      • 通过class去创建servlet对象
      • 调用Servlet的init方法
      • 最后调用servlet对象的service方法
    • 之后访问JSP文件
      • 此时直接调用servlet对象的service方法即可
  • JSP概念总结
    • JSP是什么?
      • JSP是java程序(JSP本质还是一个Servlet)
      • JSP是:JavaServer Pages的缩写。(基于Java语言实现的服务器端的页面。)
      • Servlet是JavaEE的13个子规范之一,那么JSP也是JavaEE的13个子规范之一。
      • JSP是一套规范。所有的web容器/web服务器都是遵循这套规范的,都是按照这套规范进行的“翻译”
      • 每一个Web容器/Web服务器都会内置一个JSP翻译引擎
    • 对JSP进行错误调试时,依旧需要打开JSP文件对应的Java文件,检查代码
    • 开发JSP最高境界:看着JSP代码,能想象到Java代码

      JSP语法

  • 在JSP文件中直接编写文字会被翻译到Servlet类的Service方法的out.write("文字内容")中,直接翻译到双引号里,被Java程序当做字符串来打印输出到浏览器