JSP的执行过程(详解)
要了解JSP的执行过程,首要要搞懂什么是JSP,JSP的全称是Java Server Pages,里面包含html标签、css样式、JavaScript脚本和Java代码。
下面我们来说说JSP的执行过程:
JSP执行过程:
当用户通过浏览器访问Tomcat上的JSP页面时,Web应用服务器使用JSP引擎对该页面进行翻译(Java文件)、编译(.class文件)和执行,然后将执行结果(静态页面代码)返回给客户端浏览器,最后浏览器解释执行返回的结果呈现给用户。 如下如所示:
翻译阶段:
- 当Web应用服务器第一次接受到该JSP页面请求时,首先会对这个JSP页面进行翻译,将页面中的jsp代码翻译成Java源代码。
编译阶段:
- 我们知道Java源代码是不可运行的,所以Web应用服务器会将Java源文件编译成可执行的字节码文件(也就是.class文件),并加载到内存中。
执行阶段:
- Web应用服务器会执行编译后的Java字节码文件,得到请求处理的结果,并把生成的结果反馈给客户端浏览器。
当某个JSP页面第一次被访问时,它会被翻译、编码与执行;当再次访问该JSP页面时,如果该JSP内容未经过修改,则无需再经过翻译和编译的过程,直接执行即可。这样做可以显著提高应用服务器的性能,有效减少从用户给服务器发送请求到接受到反馈页面的响应时间,提高用户体验。同时也说明了为什么当一个JSP页面首次被访问时,它的响应速度是比较慢的。
注意:
JSP的翻译、编译和执行操作都是在服务器端进行的,返回给客户端浏览器的是服务器端执行JSP对应字节码文件后的HTML代码,所以客户端只要有浏览器就可以浏览JSP页面。
相关文章:

VoIP败家子的游戏
现在VoIP比较火,甚至都引起了电信运营商的强烈关注。VoIP替代长途好象是板上钉钉的事情。实际情况是否如此呢?当然不一定是这样的。VoIP是将企业语音电话业务与网络数据业务合二为一,使之能够在一个网络上实现低成本的IP语音和IP数据服务。其…

K8s简单yaml文件运行例子deployment
kubectl run 创建并运行一个或多个容器镜像。创建一个deployment 或job 来管理容器。kubectl run 语法: $ run NAME --imageimage [--env"keyvalue"] [--portport] [--replicasreplicas] [--dry-runbool] [--overridesinline-json] [--command] -- [COMMA…

codeforces round 421 div2 补题 CF 820 A-E
A Mister B and Book Reading O(n)暴力即可 #include<bits/stdc.h> using namespace std; typedef long long int LL; const LL N1,M1,MOD1;int main() {//freopen("t.txt","r",stdin);int c,v0,v1,a,l;scanf("%d%d%d%d%d",&c,&…

JSP中的重定向和请求转发以及它们的区别
我们先硬着头皮看一下重定向的定义: 重定向(Redirect): 客户端浏览器向Web应用服务器端发送一个请求,Web服务器端使用HttpServletResponse的sendRedirect()方法将结果(结果中头信息内HTTP状态码为302&…

想你,是一种美丽
想你,是一种美丽 想你 不论何时何地想你 是一腔热血的唠叨想你 是一地相思泪的燃烧想你 是一弯明月的宣誓想你 是一抹诗情的聚焦 每个路口都有为你守侯的目光每个黄昏都有为你焦急的心你的名字便是祈祷的圣经你的身影便是我梦中永远的天使 即…

通用数据库连接执行类(SQL)
usingSystem;usingSystem.Data;usingSystem.Data.SqlClient;namespacePublic{///<summary>/// CustomADO 数据连接执行类。///</summary>public class CustomADO{#region定义或创建类私有变量或对象private string _connstr; //连接字符串存储变量private …

Alpha冲刺 - (5/10)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员2 黄志铭 过去两天完成了哪些任务学习了逻辑层js与界面的数据传送完成共享编辑的界面以及相关接口接下来的计划1.对之前的界面完成逻…

session对象运行机制
当你看到 “会话” 这个词的时候,你会怎么理解呢?是交流、对话的意思吗?那毫无疑问绝对是的啦,只不过那是传统意义上的,或者说是日常生活中的意思,在计算机科学领域,它的意思就要引申一些了。在…

git查看某个文件的提交历史
git log --prettyoneline 文件名接下来使用git show显示具体的某次的改动。git show <git提交版本号> <文件名>转载于:https://www.cnblogs.com/ppsunlight/p/7095612.html

省市县三级级联(模块化开发)
不废话,上代码: 先看一下项目列表: tool包里的代码: 请看:tool包 vo.Area类: package com.jd.vo;public class Area {private String id;private String name;private String code;private String pa…
IOS - 设置与帮助界面
设置与帮助 改动头像, 改动password, 移动客服, 帮助, 声明, 关于我们. 代码 // // IndexSetting600ViewController.h // SymptomChecker // // Created by wang on 2015-7-21. // //#import "CYTableViewController.h"interface IndexSetting600ViewController …

CentOS虚拟机和物理机共享文件夹实现
CentOS虚拟机和物理机共享文件夹实现过程。 一、 安装VMware Tools VMwareTools的安装脚本是要使用到perl的,而CentOS 6自身不带perl,所以需要自己安装。可以自己下载源代码编译,也可以直接用yum来安装。 yum install perl 2、虚拟机工具栏-…

[讨论]你的女朋友值多少钱?
你的女朋友值多少钱?一个简单的测试可能会告诉我们很多的东西。 女主持人气势咄咄的问一个男嘉宾,你为什么那么在乎钱,男嘉宾说:“钱能买到一切!” 现场的观众哗然了。 男嘉宾微笑的说:“我们做个测试吧。” 一个很简单…

庆祝天津.Net俱乐部成立,辛苦TerryLee了,感谢dudu!
终于等来了天津.Net俱乐部的成立,欢迎天津热心.Net的人士申请加入! 转载于:https://www.cnblogs.com/anchky/archive/2006/03/21/354946.html

软件工程专业1
任何软件系统开发的共同本质: – 从现实空间的需求到计算机空间的软件代码之间的映射与转换; 软件工程本质: 用严格的规范和管理手段来缩小偏差,通过牺牲“时间”来提高“质量”。 软件工程的两个映射: 概念映射&#…

动态网页项目(Dynamic Web Project)2.5和3.0版本的差异
我们知道在2.5版本中都有web.xml,用来配置servlet: 但3.0版本却没有web.xml,那该怎么配置servlet呢? 解决的方法就是使用注解: 而且在注解中配置servlet非常方便! 那如果想在3.0中也使用web.xml该怎么办…

New LINQ CTP!
FYI, we just released an updated community preview of our LINQ support for both VB and C#, entitled “Microsoft Visual Studio Code Name “Orcas” Language-Integrated Query, May 2006 Community Technology Preview.” Or you could just call it “the May CTP.”…

mybatis的一些基础问题
拿实体类中的属性 userPhone 来说: mapper 文件 转载于:https://www.cnblogs.com/py1994/p/7097808.html

(zt)Web 2.0奔路进行时
Web 2.0奔路进行时作者 黄昆Web2.0不是独立存在的,在2006年将会全面融入互联网,这种融入并不意味着Web2.0以及Web2.0所代表的创新浪潮的消退,反而将以这种充满活力的创新方式引发互联网产业格局的巨大变革。Web2.0,在奔跑。发展到…

each(callback)与each(object[,callback])的区别
each(callback)与each(object[,callback])的区别: 1. 调用对象不同,前者必须使用jQuery对象调用;后者只能使用$调用; 2. 遍历对象不同:前者遍历的是jQuery对象;后者还可以遍历数组等非jQuery对象。我们来看…

Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
Microsoft .Net Remoting系列专题之二 一、远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成。工作过程事实上是将该远程对象注册到通道中。由于Remoting没有提供与之对应的Unregister方法来注销远程对象࿰…

luogu P2759 奇怪的函数 二分答案+数论
题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x 输入输出样例 输入样例#1:11 输出样例#1:10 说明 n<2000000…

前端性能毫秒必争方案(一)HTTP请求
在讲http知识之前,有必要提及下网络七层协议OSI(Open System Interconnect)的缩写 犹如水浒里面的七星聚义,没这七星,就没有108将。(已经放置文章最后面) 2. 减少http请求次数原因在于 1、Http连接 RequestHeader 的开销 众所周知,…

CodeSmith应用(一)
这个例子仅是一个简单的应用,在我翻译并学习完CodeSmith的英文帮助文档后,对CodeSmith有了一定的了解,开始着手编写一些CodeSmith应用模板,今天按照最早提到的例子自行编写了一个基于表的添加存储过程的生成模板。具体语法前面基础…

01_创建一个新的activityactivity配置清单文件
今天开始学四大组件。今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者。四大组件,咱们一天一个。Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面。创建多个Activity,在…

Java 集合——List集合
Collection接口是集合的老祖宗,定义了接口的基本方法。 List是Collection接口的子接口,也是最常用的接口,此接口对Collection接口进行了大量的扩展,List集合里的元素是可以重复的。 List接口的主要实现类有ArrayList,和…

jQuery中的插件机制
我们在很多地方都用过插件,插件能让我们操作某个东西变得异常方便,jQuery也不例外,为了扩展jQuery库函数,jQuery提供了两种方式: jQuery.extend(object):扩展jQuery对象本身,主要是用来扩展jQu…

ActiveRecordBase借助NHibernate的条件获取实体类对象
ActiveRecordBase.FindAll() 函数其中有一个这样的版本的参数ActiveRecordBase.FindAll(TargetType AsSystem.Type,Orders() AsNHibernate.Expression.Order,ParamArraycriterias() AsNHibernate.Expression.ICriteriion) 可以方便的使用NHibernate的条件查询,例如…

轻量级持久层V2版本代码与模板
首页列表上好像不能下载,要下载文件请进来下。 上篇帖《轻量级持久层的讨论》中大家踊跃的提出各种意见,让我得到不少灵感,这些新的想法将会应用到下一个版本的开发中,我先得试试可行性如何。这里先给出这一版本的代码和模板&…

最近用到的一些方法技巧
郁闷,msn上不去,没法干活。记上最近项目中用到的一些code snippet1.查询今天的记录select datediff(dd,ConvDateTime,getdate()),* from dbo.rbConversationMaster where datediff(dd,ConvDateTime,getdate())0 DataDiff Returns the number of date and…