JSP 概述

概述

1、JSP 全称是 Java Server Pages ,就是在传统的 HTML 文件(.htm,.html)中加入 Java 程序片段 (Scriptlet) 和 JSP 标记 (tag) ,就构成了 JSP 网页。
2、JSP 最大的特点在于,写 JSP 就像在写 html,但它相比 html 而言,html 只能为用户提供静态数据,而 JSP 技术允许在页面中嵌套 java 代码,为用户提供动态数据
3、JSP 开发的 WEB 应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。
4、JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括 JDBC,JNDI,EJB,JAXP 等等。
5、JSP 页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被 Java servlet 模板引擎所支持。

指令标签

jsp 指令负责告诉 jsp 引擎如何把页面翻译成 servlet,它可以把 JSP 理解为用来通知 JSP 引擎的消息。JSP 不直接生成可见的输出,用 JSP 指令设置 JSP 引擎处理 JSP 页面的机制。jsp 指令标签包含 page、include、taglib 指令。

内置对象

java 常用内置对象包括:
1、输出输入对象:request 对象、response 对象、out 对象。
2、通信控制对象:pageContext 对象、session 对象、application 对象。
3、Servlet对象:page 对象、config 对象。
4、错误处理对象:exception 对象。
(如果响应对象处理结果数量过多,使用响应对象会增加开发难度。)

动作元素

动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用JSP作为前缀,可用的标准动作元素如下:
jsp:include
jsp:useBean
jsp:setProperty
jsp:getProperty
jsp:forward
jsp:plugin
jsp:element
jsp:attribute
jsp:body
jsp:text
所有的动作要素都有两个属性:id属性和scope属性。

自定义标签

jsp自定义标签作用有以下5点:
1、 控制标签体内容是否输出 。
2、控制标签余下内容是否输出 。
3、控制重复输出标签体内容 。
4、改变标签体内容 。
5、带属性的标签。

JSP 处理

以下步骤表明了 Web 服务器是如何使用 JSP 来创建网页的:
1、就像其他普通的网页一样,浏览器发送一个 HTTP 请求给服务器。
2、Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。
3、JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet( .java )。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。
4、JSP 引擎将 Servlet 编译成可执行类( .class ),并且将原始请求传递给 Servlet 引擎。
5、Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。
6、Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到您的浏览器中。
7、最终,Web 浏览器处理 HTTP response 中动态产生的HTML网页,就好像在处理静态网页一样。

  • 总结
    1、一般情况下,JSP 引擎会检查 JSP 文件对应的 Servlet 是否已经存在( 解析JSP ),并且检查 JSP 文件的修改日期是否早于 Servlet。如果 JSP 文件的修改日期早于对应的 Servlet,那么容器就可以确定 JSP 文件没有被修改过并且 Servlet 有效。这使得整个流程与其他脚本语言(比如 PHP)相比要高效快捷一些。
    2、总的来说,JSP 网页就是用另一种方式来编写 Servlet 而不用成为 Java 编程高手。除了解释阶段外,JSP 网页几乎可以被当成一个普通的 Servlet 来对待

JSP 生命周期

JSP 生命周期就是从创建到销毁的整个过程,类似于 servlet 生命周期,区别在于 JSP 生命周期还包括将 JSP 文件编译成 servlet 。

编译阶段

servlet 容器编译 servlet 源文件,生成 servlet 类。(解析 JSP 文件、将 JSP 文件转为 servlet、编译 servlet。)

初始化阶段

加载与 JSP 对应的 servlet 类,创建其实例,并调用它的初始化方法。

  • JSP 初始化
    容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果需要执行自定义的 JSP 初始化任务,就复写 jspInit() 方法:
public void jspInit() {
  // 初始化代码
}

一般来讲程序只初始化一次,servlet 也是如此。通常情况下可以在 jspInit() 方法中初始化数据库连接、打开文件和创建查询表。

执行阶段

调用与 JSP 对应的 servlet 实例的服务方法。

  • JSP 执行
    1、这一阶段描述了 JSP 生命周期中一切与请求相关的交互行为,直到被销毁。当 JSP 网页完成初始化后,JSP 引擎将会调用_jspService()方法。
    2、该方法由 jsp 容器自动创建的处理 jsp Page 的方法,由 jsp 容器创建,不能自己定义。
    3、jspService() 方法需要一个 HttpServletRequest 对象和一个 HttpServletResponse 对象作为它的参数,就像下面这样:
void _jspService(HttpServletRequest request, HttpServletResponse response) {
   // 服务端处理代码
}

jspService() 方法在每个 request 中被调用一次并且负责产生与之相对应的 response ,并且它还负责产生所有7个 HTTP 方法的回应,比如 GET、POST、DELETE 等等。

销毁阶段

调用与 JSP 对应的 servlet 实例的销毁方法,然后销毁 servlet 实例。

  • JSP 销毁
    JSP 生命周期的销毁阶段描述了当一个 JSP 网页从容器中被移除时所发生的一切。jspDestroy()方法在 JSP 中等价于 servlet 中的销毁方法。当需要执行任何清理工作时复写 jspDestroy() 方法,比如释放数据库连接或者关闭文件夹等等。
public void jspDestroy() {
   // 销毁代码
}

Http 服务器编辑与编译 jsp 文件的位置

C:Users
登录Windows系统用户角色名

.IntelliJIdea2019.3system
( AppDataLocalJetBrainsIntelliJIdea2020.1 )

	omcat
网站工作空间
workCatalinalocalhost
网站别名
orgapachejsp
原文地址:https://www.cnblogs.com/yu011/p/14295904.html