[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 条评论
登录 后参与评论

相关文章

来自专栏java思维导图

单点登录(SSO),从原理到实现

如果你觉得文字太长,可以直接先看文末思维导图总结,小编已为你整理了作者的主要观点,供你回顾与快速阅读~

1635
来自专栏我是攻城师

Spring Boot开发之流水无情(二)

3226
来自专栏阿杜的世界

Spring Boot Admin的使用

上一篇文章中了解了Spring Boot提供的监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态...

432
来自专栏前端知识分享

第160天:Http协议的详细总结

超文本传输协议(HyperText Transfer Protocol),缩写HTTP。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform...

512
来自专栏葡萄城控件技术团队

如何在 ASP.NET MVC 中集成 AngularJS(1)

介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术。例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API...

2276
来自专栏微信公众号:Java团长

单点登录原理与简单实现

web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,...

904
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)

写在前面的话 原计划这部分代码的更新也是上传到ssm-demo仓库中,因为如下原因并没有这么做: 有些使用了该项目的朋友建议重新创建一个仓库,因为原来仓库中的项...

2916
来自专栏ASP.NETCore

.NET Core第三方开源Web框架YOYOFx

YOYOFx是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台。

664
来自专栏王二麻子IT技术交流园地

JSP技术介绍

1. 技术介绍 JSP即Java Server Page,中文全称是Java服务器语言。它是由Sun Microsystems公司倡导、许多公司参与建立的一种动...

1886
来自专栏别先生

java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

1、java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息。

232

扫码关注云+社区