JSP 概述(三)

news2025/1/16 5:11:56

JSP 的处理过程&JSP 与其他服务器端脚本语言的比较

  • 1. JSP 的处理过程
  • 2. JSP 与其他服务器端脚本语言的比较
    • 2.1 CGI
    • 2.2 ASP
    • 2.3 PHP
    • 2.4 ASP.NET
  • 结束语

1. JSP 的处理过程

当客户端浏览器向服务器发出请求要访问一个 JSP 页面时,服务器根据该请求加载相应的 JSP 页面,并对该页面进行编译,再执行;
JSP 的处理过程如下图:
20230201

  1. 客户端通过浏览器发出请求,在该请求中包含了请求资源的路径,当服务器接收到该请求后就能知道被请求的资源;
  2. 服务器根据接收到用户端请求来加载被请求的 JSP 文件;
  3. Web 服务器中的 JSP 引擎会被加载的 JSP 文件转化为 Servlet;
  4. JSP 引擎将生成的 Servlet 代码编译成 Class 文件;
  5. 服务器执行这个 Class 文件;
  6. 最后服务器将执行结果发送给浏览器进行显示;
    JSP 文件被 JSP 引擎进行转换后,又被编译成 Class 文件,最终由服务器通过执行这个 Class 文件来对客户端的请求进行响应;
    第三步及第四步构成了 JSP 处理过程中的翻译阶段,第五步为请求处理阶段;
    但不是每次请求都需要重复进行这样的处理;
    当服务器第一次接收到对某个页面的请求时,JSP 引擎就开始进行上述的处理过程,将被请求的 JSP 文件编译成 Class 文件;
    在后续对该页面再次进行请求时,若页面没有进行任何改动,服务器只需直接调用 Class 文件执行即可;
    当某个 JSP 页面第一次请求时,会有一些延迟,而再次访问时会感觉快了很多;
    若被请求的页面经过修改,服务器将会重新编译这个软件,再执行;

2. JSP 与其他服务器端脚本语言的比较

常用的服务器端技术有CGI、ASP、PHP、ASP.NET及JSP;

2.1 CGI

CGI(Common Gateway Interface,通用网关接口)是最早用来创建动态网站的一种技术,它能使浏览器与服务器之间产生互动关系;
它允许使用不同的语言来编写适合的 CGI 程序,该程序被放在 Web 服务器上运行;
当客户端发出请求给服务器时,服务器根据客户请求建立一个新的进程来执行指定的 CGI 程序,并将执行结果以网页的类型传输到客户端的浏览器上显示;

2.2 ASP

ASP(Active Server Pages)是一种使用很广泛的开发动态网站的技术;
它通过在页面代码中嵌入 VBScript 或 JavaScript 脚本语言来生成动态的内容,在服务器端必须安装了适当的解释器后,才能通过调用解释器来执行脚本程序,再将执行结果与静态内容部分结合并传送到客户端浏览器上;
对于一些复杂的操作,ASP 能调用存在于后台的 COM 组件来完成,COM 组件无线地扩充了 ASP 的能力;
依赖本地的 COM 组件,使得 ASP 主要用于 Windows 平台中;

2.3 PHP

PHP(Personal Home Page)是一种开发动态网站技术的名称;
PHP 语法类似 C,且混合了 Perl、C++ 及 Java 的一些特性;
它是一种开源的 Web 服务器脚本语言,与 ASP 及 JSP 一样能在页面中加入脚本代码来生成动态内容;
对于一些复杂的操作能封装到函数或类中,在 PHP 中提供了许多已经定义好的函数;

2.4 ASP.NET

ASP.NET(Active Server Pages)是一种建立动态 Web 应用程序的技术,它是 .NET 框架中的一部分,能使用任何 .NET 兼容的语言,如 Visual Basic.NET、C#、J# 等来编写 ASP.NET 应用程序;
这种 ASP.NET 页面(Web Forms)编译后能提供比脚本语言更出色的性能表现;
Web Forms 允许在网页基础上建立强大的窗体;
当建立页面时,能使用 ASP.NET 服务端控件来建立常用的 UI 元素,并将它们编程来完成一般的任务;
这些控件允许开发者使用内建可重用的组件和自定义组件来快速建立 Web From,使代码简单化;
JSP 与其他语言的比较如下表:
20230201

结束语

若文章有帮到你,给个赞,收个藏,欢迎大家留言评论;
若文章有任何错误,欢迎大家指正

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

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

相关文章

微信小程序里面的js文件分为哪几类?

1.小程序中的.js的分类 小程序中的JS文件分为三大类,分别是: 1.app.js 是整个小程序项目的入口文件,通过调用App()函数来启动整个小程序 2.页面的.js文件 是页面的入口文件,通过调用 Page()函数来创建并运行…

Java基础语法(基础篇 适合小白)

Hello World public 访问修饰符 static 关键字 void 返回类型 String 类 args字符串数组 public class HelloWorld {/* 第一个Java程序* 它将输出字符串 Hello World*/public static void main(String[] args) {System.out.println("Hello World"); // 输出 Hello Wo…

Odoo | 7个步骤搭建的“在线表格组件”,十分丝滑~

X-SpreadSheet是一个类似于google sheet的在线表格组件,很多场景都能借助它来搭建在线表格。 集成过程 1、下载X-SpreadSheet源码到本地 下载地址 x-spreadsheet.css: https://unpkg.com/x-data-spreadsheet1.0.13/dist/xspreadsheet.css x-spread…

Tomcat的安装及配置

Tomcat介绍:Tomcat简单地说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器疑问:一个电脑中可以安装多个版本的Tomcat吗?同一台电脑可以同时安装多个Tomcat服务器。安装及配置&…

【Spark分布式内存计算框架——Spark 基础环境】2. 快速入门(上)环境准备

第三章 快速入门 目前Spark最新稳定版本:2.4.x系列,官方推荐使用的版本,也是目前企业中使用较多版本,网址:https://github.com/apache/spark/releases Spark 2.4.x依赖其他语言版本如下,其中既支持Scala …

代码随想录算法训练营第三十一天_第八章_贪心算法 | 理论基础、455.分发饼干、376. 摆动序列、53.最大子数组和

理论基础 LeetCode 455.分发饼干 视频讲解https://www.bilibili.com/video/BV1MM411b7cq/?spm_id_from333.788&vd_sourcef98f2942b3c4cafea8907a325fc56a48文章讲解https://programmercarl.com/0455.%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.html 思路:代码&…

开唐贡献榜(凌烟阁二十四功臣)

唐贞观十七年,太宗李世民为表彰唐初的开国功臣 建造凌烟阁 绘制二十四功臣像以示纪念 第一位 威能服物,智能动众。力安社稷,一代奸雄。 赵国公 长孙无忌 第二位 挺身陷阵,勇冠三军。飞虎将军,十三太保。 河间王 李孝…

【C语言】文件操作函数

文件操作函数1.文件的打开和关闭1.1fopen1.2close2.文件的顺序读写2.1fgetc和fputc2.1.1fputc2.1.2fgetc2.2fgets和fputs2.2.1fputs2.2.2fgets2.3fscanf和fprintf2.3.1fprintf2.3.2fscanf2.4fread和fwrite2.4.1fwrite2.4.2fread2.5总结2.6拓展(sscanf和sprintf&…

【面试题】async/await、promise和setTimeout的执行顺序

从一道题目出发今天看到一道面试题,是关于async/await、promise和setTimeout的执行顺序,题目如下:asyncfunctionasync1() {console.log(async1 start);awaitasync2();console.log(asnyc1 end); } asyncfunctionasync2() {console.log(async2)…

kafka官方文档中文翻译(kafka参数解释)

目录 入门 1.1简介 kafka™是一个分布式流媒体平台。这到底意味着什么? 1.2使用案例 1.3快速入门 1.4生态系统 1.5从以前的版本升级 2. API 2.1生产者API 2.2消费者API 2.3 Streams API 2.4连接API 2.5遗留API 3.配置 3.1Broker配置 3.2生产者配置 …

Exynos 4412 看门狗定时器中断

如果想弄懂看门狗定时器中断,要掌握下面两个知识点: 1 懂寄存器 Cortex A9采用的是ARM官方规定的中断处理机制 有两大类寄存器决定了中断工作状态 1) exynos 4412 特有的寄存器(在第26章) 2) Cortex A9 规定的工作寄存器(在第9章和第10章) 2 懂中断处理过…

【memcached】下载、安装、、出错一分钟全搞定

各位小伙伴在看黑马程序员springboot的时候可能会遇到的情况:memcached如何安装?官网地址:https://www.runoob.com/memcached/window-install-memcached.html找到合适的下载即可,占用内容很小,几秒就下载好了开启服务安…

SpringBoot + jackson + redis 序列化、反序列化 配置正确姿势

文章目录1.背景2. 原来项目配置3.正确配置4.小结1.背景 最近项目上 使用 SpringBoot 2.7.7 jackson redis 框架实现将javaBean 序列化和反序列化到 redis 中。但是最近在做登陆的时候将LoginUser 序列化到redis 中没问题,不重启服务的话反序列化成对象也没有问题…

【Java多线程】同步代码块处理线程安全问题

题:创建三个窗口卖票,总票数为100张 1.问题:买票过程中,出现了重票,错票 --> 出现了线程的安全问题 2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进…

IDEA常用技巧汇总

查看代码历史版本鼠标在需要查看的java类 右键 找到Local History >> Show History 点开即可看到历史版本,常用于自己忘记代码改了哪些内容 或需要恢复至某个版本 (注意 只能看近期修改 太久了也是看不到的)idea设置成eclipse的快捷键这对eclipse转idea的开发…

网络编程套接字

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录Socket 套接字UDP 和 TCPUDP数据报套接字编程DatagramSocket APIDatagramPacket APIUdpEchoServerUdpEchoClientUdpDictServer…

分享62个JS返回顶部特效,总有一款适合您

分享62个JS返回顶部特效,总有一款适合您 62个JS返回顶部特效下载链接:https://pan.baidu.com/s/1X1fSwxibtEDXKeYqj0sHXQ?pwde2kp 提取码:e2kp Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj import os im…

[Android]Toolbar

Toolbar是由AndroidX库提供的,它的强大之处在于,它不仅继承了ActionBar的所有功能,并且灵活度很高,可以配合其他控件完成一些Material Design的效果。 使用Toolbar替代ActionBar 在themes的两个xml文件中, 都指定一个…

视频连载08 - 这个为生信学习和生信作图打造的开源R教程真香!!!

点击阅读原文跳转完整教案。1 思考题2 R基础2.1 R安装2.2 Rstudio基础2.2.1 Rstudio版本2.2.2 Rstudio安装2.2.3 Rstudio 使用2.3 R基本语法2.3.1 获取帮助文档,查看命令或函数的使用方法、事例或适用范围2.3.2 R中的变量及其初始化2.3.3 变量类型和转换2.3.4 R中矩…

ECharts接收dataset类型数据封装各类型图形组件

数据平台整合matabase图表,调用matabase已有接口使用echarts实现图表展示 目标 将各类型图形独立封装为组件 将多个组件整体封装成一个组件 使用时只需传入组件名和对应数据即可 展示 数据格式 ECharts中dataset配置 公共组件 示例饼图 pie-chart pie-chart comm…