博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP--概述及运行原理详解
阅读量:2442 次
发布时间:2019-05-10

本文共 2140 字,大约阅读时间需要 7 分钟。

JSP概述

JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页 中静态内容的显示,Java代码用来实现网页中动态内容的显示。为了与传统HTML有所区别,JSP文件的扩展名为 .jsp 。

JSP技术所开发的Web应用程序是基于Java语言的,它可以用一种简捷而快速的方法从Java程序生成Web页面,其使用上具有如下几点特征:

  • 跨平台:

    由于JSP是基于Java语言的,它可以使用Java API,所以它也是跨平台的,可以应用于不同的系统中,如Windows、Linux等。当从一个平台一直到另一个平台时,JSP和JavaBean的代码并不需要重新编译,这是因为Java的字节码时与平台无关的,这也应验了Java语言“一次编译,到处运行” 的特点。

  • 业务代码相分离:

    在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离开。开发人员使用HTML来设计界面,使用JSP标签和脚本来动态生成页面上的内容。在服务器端,JSP引擎(或容器)负责解析JSP标签和脚本程序,生成所请求的内容,并将执行结果以HTML页面的形式返回到浏览器。

  • 组件重用:

    JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean封装业务处理代码或者作为一个数据存储模型,在JSP页面中,甚至在整个项目中,都可以重复使用这个JavaBean,同时,JavaBean也可以应用到其他Java应用程序中。

  • 预编译:

    预编译就是在用户第一次通过浏览器访问JSP也i按时,服务器将对JSP页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,会直接执行编译好的代码。这样不仅节约了服务器的CPU资源,还大大的提升了客户端的访问速度。

创建一个HelloWorld.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
Insert title hereMy First JSP

可以看出,新创建的JSP文件与传统的HTML文件几乎没有什么区别,唯一的区别是默认创建时,页面代码上方多了一条page指令,并且该文件的后缀名是jsp,而不是html。JSP文件必须发布到Web容器中的某个Web应用中才能看出效果。

JSP运行原理

JSP的工作模式是请求/响应模式,客户端首先发出HTTP请求,JSP程序收到请求后进行处理并返回结果。在一个JSP文件第一次被请求时,JSP引擎(容器)把该JSP文件转换成为一个Servlet,而这个引擎本身也是一个Servlet。JSP的运行过程如下图所示。

在这里插入图片描述JSP的运行过程具体如下:

  1. 客户端发出请求,请求访问JSP文件。
  2. JSP容器先将JSP文件转换成一个Java源文件(Java Servlet 源程序),在转换过程中,如果发线JSP文件中存在任何语法错误,则中断转换过程,并向服务器和客户都返回出错信息。
  3. 如果转换成功,则JSP容器将生成的Java源文件编译成相应的字节码文件 *.class 。该 class 文件就是一个Servlet,Servlet容器会像处理其他Servlet一样来处理它。

下面简单介绍一下JSP所生成的Servlet代码:

以HelloWorld.jsp为例,当用户第一次访问HelloWorld.jsp 页面时,该页面会先被JSP容器转换为一个名称为HelloWorld_jsp.java 的源文件,然后将源文件白你以为一个名称为 HelloWorld_jsp.class 字节码文件。

如果项目发布在Tomcat的webapps目录中,源文件和 .class 文件可以在 “Tomcat安装目录/work/Catalina/localhost/项目名/org/appache/jsp“ 下找到,如下图所示:
在这里插入图片描述
上图中,地址栏的路径多了org\apache\jsp,这是由于JSP文件转换成类文件时会带有包名,该包名为org.apache.jsp。从图中还可以看出,HelloWorld.jsp 已经被转换为源文件和 .class 文件。打开 HelloWorld_jsp.java文件,可查看串货后的源代码,其主要代码如下:
在这里插入图片描述在这里插入图片描述从上面的代码可以看出,HelloWorld.jsp 文件转换后的源文件没有实现Servlet接口,但继承了org.apache.jasper.runtime.HttpJspBase 类。在Tomcat源文件中查看HttpJspBase类的源代码,具体如下所示:

在这里插入图片描述在这里插入图片描述从HttpJspBase源代码中可以看出,HttpJspBase类是HttpServlet的一个子类,由此可见,HelloWorld_jsp 类就是一个 Servlet。

结 论 : J S P 就 是 S e r v l e t 。 \color{red}{结论:JSP就是Servlet。} JSPServlet

转载地址:http://njsqb.baihongyu.com/

你可能感兴趣的文章
iPhone正在iOS 12中获得分组通知
查看>>
如何修复Windows 7中的“无法访问Windows Installer服务”错误
查看>>
微软word如何插入页码_如何在Microsoft Word中插入,删除和管理超链接
查看>>
ubuntu中如何启用仓库_如何在Ubuntu中启用本地菜单
查看>>
outlook密码更改_如何更改您的Outlook.com密码
查看>>
如何在Ubuntu 14.04中管理启动应用程序
查看>>
如何在Ubuntu 14.04中读取MOBI文件
查看>>
计算两张图片是否完全相同_您如何分辨两张DVD是否完全相同?
查看>>
如何在Windows 10中连接到无线网络
查看>>
proxies中的机密信息_新机密模式在Gmail中的工作方式
查看>>
如何检查MacBook的电池状况
查看>>
2k分辨率显示器 浏览器_如何使浏览器使用显示器的完整分辨率?
查看>>
ubuntu lts 版本_最新的Ubuntu LTS版本是什么?
查看>>
苹果收集到月中蜂窝数据满_苹果不会收集有关您的大量数据
查看>>
redis发布订阅数据太大_一切现在都是订阅,而且太多了
查看>>
android alexa_如何将Alexa设置为Android上的默认数字助理
查看>>
2018年4月13日_如何立即获取Windows 10的2018年4月更新
查看>>
电报机器人 gmail_如何在新的Gmail中查找联系人
查看>>
硬盘未分配空间变为可用空间_使用Windows 10的新“可用空间”工具清理硬盘
查看>>
如何下载所有Instagram照片
查看>>