[JSP]JSP 简介

1.1 概述

1.1.1 什么是 JSP?

  • JSP 全称是 Java Server Pages,是一种动态网页开发技术
  • 它与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。
  • JSP 是一种 Java Servlet,主要用于实现 Java Web 应用程序的用户界面部分。
  • JSP 技术以 Java 语言作为脚本,它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
  • JSP文件后缀名为(*.jsp)。
  • JSP开发的WEB应用可以跨平台使用,既可以运行在Linux上也能运行在Window上。

1.1.2 JSP 的优点

与 ASP 相比:

  • 动态部分用 Java 编写,所以更加强大易用
  • 可以移植到多种不同的服务器和操作系统

与 PHP 相比:

  • 更好的工具支持

与 Servlet 相比:

  • 创建 HTML 更方便

与 Javascript 相比:

  • 虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。

1.2 工作原理

1.2.1 JSP 和 Servlet的区别

JSP 是一种 Servlet,但是它与 HttpServlet 的工作方式不太一样:

  • HttpServlet 是先编译后部署:先将源代码编译为 class 文件,然后部署到服务器下
  • JSP 是先部署后编译:先部署代码,然后编译为 class 文件。JSP 会在客户端第一次请求 JSP 文件时被编译为 HttpJspPage 类。该类会被服务器临时存放在服务器工作目录里面。

由于 JSP 只在客户端第一次请求时被编译,所以第一次请求 JSP 时会感觉比较慢。

1.2.2 JSP 工作原理

以下步骤表明了Web服务器是如何使用JSP来创建网页的:

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

以上提及到的步骤可以用下图来表示:

1.3 生命周期

JSP 也是一种 Servlet,运行时只有一个实例,它也有生命周期。

以下是JSP生命周期中所走过的几个阶段:

  1. 编译阶段:servlet容器编译servlet源文件,生成servlet类
  2. 初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
  3. 执行阶段:调用与JSP对应的servlet实例的服务方法
  4. 销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例

很明显,JSP生命周期的四个主要阶段和servlet生命周期非常相似,下面给出图示:

JSP生命周期代码实例

<%@ page contentType="text/html; charset=GB2312" %>
 <html><head><title>life.jsp</title></head><body>
 
 <%! 
 private int initVar=0;
 private int serviceVar=0;
 private int destroyVar=0;
 %>
 
 <%!
 public void jspInit(){
     initVar++;
     System.out.println("jspInit(): JSP被初始化了"+initVar+"次");
   }
 public void jspDestroy(){
     destroyVar++;
     System.out.println("jspDestroy(): JSP被销毁了"+destroyVar+"次");
   }
 %>
 
 <%
   serviceVar++;
   System.out.println("_jspService(): JSP共响应了"+serviceVar+"次请求");
 
 String content1="初始化次数 : "+initVar;
 String content2="响应客户请求次数 : "+serviceVar;
 String content3="销毁次数 : "+destroyVar;
 %>
 
 <h1><%=content1 %></h1>
 <h1><%=content2 %></h1>
 <h1><%=content3 %></h1>
 
 </body></html>

参考资料

Java Web 整合开发

http://www.w3cschool.cc/jsp/jsp-tutorial.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT可乐

eclipse在debug模式下总是自动进入到ThreadPoolExecutor类中

  当我们将web项目发布到tomcat服务器中,并且以debug模式启动的时候,总是自动跳转到 ThreadPoolExecutor 类中,如下: ? 解决办...

2035
来自专栏全华班

springcloud学习手册-Eureka(第三节)

导读 | 实现Eureka服务注册中心,服务端、客户端 一、Eureka为Netflix开源软件,它可分为三个部分组件: ? Eureka服务注册中心:用以提供...

2804
来自专栏Python爬虫与数据挖掘

如何在Ubuntu14.04中创建Python虚拟环境

在Ubuntu14.04中安装Python相对比较容易些,最简单的安装方法就是apt-get安装了,具体的教程可以戳这篇文章:在Ubuntu14.04中如何安装...

1002
来自专栏Python爬虫与数据挖掘

在Windows下如何创建指定的虚拟环境

前几天给大家分享了如何在默认的情况下创建虚拟环境,没来得及上车的伙伴,可以戳这篇文章:在Windows下如何创建虚拟环境(默认情况下)。今天小编给大家分享一下,...

581
来自专栏Play & Scala 技术分享

Play运维技巧 - 使用JMX开启远程性能监控

3835
来自专栏步履前行

Spring Boot(1) 入门

假设你受命用Spring开发一个简单的Hello World Web应用程序。你该做什么?我能想到一些 基本的需要。   1.  一个项目结构,其中有一个包含必...

2875
来自专栏V站

Python使用virtualenvwrapper创建虚拟环境

2、记住这个位置,把如下的这几行添加至Mac下的.bash_profile,linux的.bashrc或者安装了zsh的.zshrc文件的最下面一行中

1984
来自专栏禹都一只猫博客

Python使用virtualenvwrapper创建虚拟环境

1535
来自专栏Python爬虫与数据挖掘

在Windows下如何创建指定的虚拟环境

前几天给大家分享了如何在默认的情况下创建虚拟环境,没来得及上车的伙伴,可以戳这篇文章:在Windows下如何创建虚拟环境(默认情况下)。今天小编给大家分享一下,...

701
来自专栏游戏杂谈

windows下codelite的使用

codelite官方打不开,从这里下载安装程序,地址:http://sourceforge.net/projects/codelite/

912

扫码关注云+社区