(六)JSP与Servlet的关系

JSP与Servlet的关系

JSP(Java Server Pages)是继Servlet后Sun公司推出的新技术。JSP技术在传统的HTML文件中插入Java程序段和JSP标记,从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Windows系统下运行,也能在其他操作系统下运行。

JSP和Servlet都是动态的Web技术,JSP是以Servlet为基础开发的,它被翻译成Servlet再执行,所以在底层运行机制上和Servlet有共同之处。

Servlet与JSP的区别如下:

1. 编程方式不同

    JSP是为了解决Servlet编程相对困难而开发的技术,因此JSP在程序的编写方面比Servlet要容易,Servlet严格遵循Java语言的编程标准,而JSP则遵循脚本语言的标准。JSP是由Servlet技术发展起来的,具备Servlet的功能,但是将生成的内容与显示分离比Servlet优化,更简单易用。

2. 编译执行方式不同

JSP并不需要另外进行编译,JSP Container会自动完成这一工作,而Servlet在每次修改代码之后都需要编译完才能执行。

3. 运行速度不同

由于JSP Container将JSP编译成Servlet需要一些时间,故JSP的运行速度比Servlet要慢一些。不过,如果JSP文件能毫无变化地重复使用,它在第一次以后的调用中运行速度就会和Servlet一样了,这是因为JSP Container接到请求以后会确认传递过来的JSP是否有改动,如果没有改动的话,将直接调用JSP编译过的Servlet类,并提供给客户端解释执行,如果JSP文件有所改变,JSP Container将重新将它编译成Servlet,然后再提交给客户端。

4. 应用范围不同

JSP可以同时负责Web应用的显示任务和业务逻辑,Servlet主要用于处理后台应用。下面的JSP代码实现了和Servlet相同的显示效果。但在实现功能上JSP的代码比Servlet简洁清晰。

<%@ page import=”java.util.*” pageEncoding=”ISO-8859-1”%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

      <title>Hello Servlet</title>

</head>

<body>

  <%out.print(“Hello Servlet”);%>

</body>

</html>

JSP运行机制

1. Web容器(Tomcat等)接收到用户的第一个JSP页面请求时,JSP引擎将这个JSP页面转换为Java源代码(Servlet类),在转换的过程中,如果发现JSP文件有任何的语法错误,转换过程将终止,并向服务器和客户端输出错误信息。

2. 然后JSP引擎用javac编译Java源代码生成class文件。

3. 接着Web容器加载class文件,并从此创建一个新的Servlet对象进行实例化。

4. 然后jspService()方法被调用来处理客户端的请求。

5. 容器创建一个响应文档,将文档发送给用户,若干时间后,用户再次访问这个JSP时,容器会再次创建一个响应文档,直到容器卸载了这个class文件。

6. 当用户卸载了这个class文件后,再次访问时,JSP引擎并不重新转换和编译这个JSP文件,而是对它进行重新初始化,并创建一个响应文档,返回给客户端。

7. 如果JSP文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。
    对每一个请求,Web容器创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。当第一次加载JSP页面时,因为要将JSP文件转换为Servlet类,所以响应速度较慢。当再次请求时,JSP容器就会直接执行第一次请求时产生的Servlet,而不必再重新转换JSP文件,所以其执行速度和Servlet执行速度几乎相同。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【006期】游戏的开始和结束界面,得分和生命值及其游戏逻辑。

核心代码 int score; int lives;boolean gameOver; void draw() {background(255);if (!gameOver) {/*游戏中的其他所有逻辑写在此处*/displayScoreAndLives(); // 显示得分和生命值} else {displayGameOverScreen(); // 显示游戏结束画面} } void displayScoreAndLives() {fil…

NASA数据集——有源空腔辐射计辐照度监测仪(ACRIM)II 本地格式的 UARS 机载太阳总辐照度(TSI)2022年1月版本

Active Cavity Radiometer Irradiance Monitor (ACRIM) II Total Solar Irradiance (TSI) aboard UARS in Native format 简介 ACRIMII_TSI_UARS_NAT 数据是上层大气研究卫星&#xff08;UARS&#xff09;上的有源空腔辐射计辐照度监测仪 II&#xff08;ACRIM II&#xff09;…

云安全防御篇:如何识别并做好服务器DDoS防护?

伴随着全球互联网业务和云计算的快速发展&#xff0c;作为一种破坏力巨大的攻击方式&#xff0c;DDoS攻击正以超出服务器承受能力的流量淹没网站&#xff0c;导致服务器宕机、企业营业额下跌&#xff0c;甚至企业品牌形象受损。越是面对复杂的攻击&#xff0c;就需要性能更强的…

C++:缺省函数

目录 缺省函数的概念 缺省函数的类型 全缺省 半缺省 缺省函数的声明 C语言和C中函数的区别 缺省函数的概念 缺省函数是对于有参数的函数而言的,缺省的意思就是在函数的定义的时候对函数的参数进行初始化值;在调用的时候在缺省的参数的位置上可以不进行传参; 缺省函数的…

测试大语言模型在嵌入式设备部署的可能性——模型TinyLlama-1.1B-Chat-v1.0

测试模型TinyLlama-1.1B-Chat-v1.0修改推理参数&#xff0c;观察参数变化与推理时间变化之间的关系。 本地环境&#xff1a; 处理器 Intel Core™ i5-8400 CPU 2.80GHz 2.80 GHz 机带 RAM 16.0 GB (15.9 GB 可用) 集显 Intel UHD Graphics 630 独显 NVIDIA GeForce GTX 1050 主…

2万8金句美句格言签名句子ACCESS\EXCEL数据库

优美句子类的数据已经有《33万多优美句子经典句子ACCESS数据库》、《近2万签名的句子网络签名ACCESS数据库》、《24万QQ伤感签名微信签名ACCESS数据库》、《2万多条QQ签名论坛签名大全ACCESS数据库》&#xff0c;今天又遇到一个&#xff0c;感觉也很不错&#xff0c;发上来看看…

数字科技助力垃圾分类展厅,增强内容交互新体验!

如今&#xff0c;许多行业都开始运用数字技术&#xff0c;探索其在展览展示领域中的应用&#xff0c;其中垃圾分类展厅作为现代城市文明建设的重要一环&#xff0c;也通过这些技术的运用&#xff0c;打造出了更加生动且富有科技感的展示空间&#xff0c;它不仅提升公众对垃圾分…

持有消防设施设计乙级资质可承接的业务范围

持有消防设施设计乙级资质的企业&#xff0c;其可承接的业务范围主要包括以下方面&#xff1a; 中型以下工业与民用建筑消防设施设计&#xff1a; 民用建筑&#xff1a;可承担单体建筑面积在2万平方米至4万平方米之间的中型民用建筑的消防设施工程专项设计&#xff0c;这类建筑…

如何客观评价小米首款汽车产品SU7

作者&#xff1a;艾泊宇 在深入探讨小米首款汽车产品SU7的客观评价时&#xff0c;我们应摒弃个人情感&#xff0c;忽视市场营销的噪音&#xff0c;并过滤掉网络上的负面评价&#xff0c;专注于产品本身&#xff0c;这里我们需要用到我的产品交集模型 从用户角度看 数据是揭示用…

Day1--什么是网络安全?网络安全常用术语

目录 1. 什么是网络安全&#xff1f; 信息系统&#xff08;Information System&#xff09; 信息系统安全三要素&#xff08;CIA&#xff09; 网络空间安全管理流程 网络安全管理 2. 网络安全的常用术语 3. 网络安全形势 4. 中国网络安全产业现状 1. 什么是网络安全&am…

Java Math函数之算术运算宝典:探索数字世界的基石

1. 概述 在Java中&#xff0c;Math类提供了丰富的静态方法用于执行基本算术运算。这些方法使得开发者能够轻松地进行加法、减法、乘法、除法等基本的数学运算&#xff0c;无需自己编写复杂的算法。Math类中的算术运算方法不仅支持整数运算&#xff0c;还支持浮点数运算&#x…

wps/word中字体安装教程

问题&#xff1a;下载的字体怎么导入wps/word wps或word中没有相应字体&#xff0c;怎么导入。其实方法很简单。 Step 1&#xff1a;下载字体 首先&#xff0c;在网上搜索自己喜欢的字体&#xff0c;然后下载到本地。字体的格式通常是.ttf 下面是我网上找的字体&#xff08…

Tips:对于树模型,新增了一个feature,metric提升了不少,但是该feature的特征重要性不高,如何解释这种现象?

在树模型中&#xff0c;新增一个特征后&#xff0c;模型性能&#xff08;如metric&#xff09;显著提升&#xff0c;但该特征在特征重要性排序中并不靠前&#xff0c;这种现象可以从以下几个方面进行解释&#xff1a; 特征交互作用&#xff1a; 树模型能够捕捉到特征间的复杂非…

dat.GUI如何使用和常用方法

什么是dat.GUI&#xff1f; dat.GUI是一个轻量级的用户界面库&#xff0c;用于在Web应用程序中创建可交互的控件。它由Google数据艺术家工作室&#xff08;Google Data Arts Team&#xff09;开发&#xff0c;旨在简化数据可视化和实验性界面的开发过程。dat.GUI提供了一组简单…

Python编程的面向对象(二)—类的多态

Python编程的面向对象(二)—类的多态 在面向对象编程中&#xff0c;多态是一种重要的概念&#xff0c;指的是不同类的对象可以对相同的消息作出响应&#xff0c;表现出不同的行为。多态允许使用基类的引用来调用派生类的方法&#xff0c;实现了接口的统一。 多态的特点&#…

CAPL学习之路-TLS函数

The Transport Layer Security (TLS) Protocol,传输层安全协议。通常是基于TCP传输协议基础上的安全认证协议,不用在UDP上。 为什么TLS不用在UDP协议上? UDP本身就不是一个可靠的协议,你在一个不可靠的协议上进行安全认证,就像是没打地基就想确保房子坚固,这可能吗? 常…

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ①

在android系统中fence用于不同模块需要访问同一块buffer的同步&#xff0c;例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。 camera需要生产图像数据到preview buffer时需要等待preview buffer的 fence可用。 camera sync是高通camx框架里面用于各个…

C/C++常用开源库总结

文章目录 库名主要功能和组件语言miniftpd研究简单的ftp服务器Cmuduo的研究目录记录学习muduo库的一些笔记Cyaziyazi封装的json解析库、ini解析库、xml解析库、简单的基于TCP的多线程服务器–ZeroMQ––Abseil字符串操作: Abseil 提供了一套强大而灵活的字符串处理工具&#xf…

ROS Node

ROS Node ROS&#xff08;Robot Operating System&#xff09;节点是指在ROS中运行的基本单元&#xff0c;它们是一个独立的进程&#xff0c;执行特定的任务&#xff0c;并与其他节点进行通信以完成更复杂的功能。ROS节点是ROS中实现模块化、分布式和可扩展性的关键组件之一。…

【LeetCode】191. 位1的个数

题目链接&#xff1a;191. 位1的个数 题目描述&#xff1a; 解法1&#xff1a;题意很简单就不说了&#xff0c;这里先说一种最简单的解法&#xff0c;首先我们知道一点&#xff1a;n&(n-1)相当于把是将n的二进制位中最低位的1变为了0&#xff0c;其它位保持不变&#xff0…