`

jsp运行机制

    博客分类:
  • jsp
阅读更多
jsp执行过程流程图:

1、jsp引擎
JSP引擎实际上要把JSP标签、JSP页中的Java代码甚至连同静态HTML内容都转换为大块的Java代码。这些代码块被JSP引擎组织到用户看不到的Java servlet中去,然后servlet自动把JVM(java虚拟机)编译成Java字节码。这样,当网站的访问者请求一个JSP页时,在他不知道的情况下,一个已经生成的、预编译过的servlet实际上将完成所有的工作。非常隐蔽-而又高效。因为servlet是编译过的,所以网页中的JSP代码不需要在每次请求该页时被解释一遍。JSP引擎只需在servlet代码最后被修改后编译一次,然后这个编译过的servlet就可以被执行了。由于是JSP引擎自动生成并编译servlet,不用程序员动手编译代码,所以JSP能带给你高效的性能和快速开发所需的灵活性。
2、web容器和servlet容器
servlet容器的主要任务是管理servlet的生命周期。web容器更准确的说应该叫web服务器,它是来管理和部署web应用的。还有一种服务器叫做应用服务器,它的功能比web服务器要强大的多,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器

2、jsp工作原理当web容器(tomcat、jboss等等)接收到用户的第一个jsp页面请求时,jsp引擎将这个jsp页面转换为java源代码(servlet类),在转换过程中,如果发现jsp文件有任何的语法错误,转换过程将终止,并向服务器和客户端输出错误信息,如果转换成功,然后jsp引擎用javac编译java源代码生成class文件,然后web容器加载class文件并从此创建一个新的servlet对象进行实例化,当 Servlet 类实例化后,容器加载 jsinit,以通知 servlet 它已进入服务行列。init 方法必须被加载,Servelt 才能接收和请求。假如要载入数据库驱动程序、初始化一些值等等,程序员可以重写这个方法。在其他情况下,这个方法一般为空,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。容器创建一个响应文档,次文档发送给用户,如干时间后,用户再次访问这个j请求这个jsp时,容器回再次创建响应一个文档,直到容器卸载了这个class文件,当用户卸载了这个class文件后,再次访问时,jsp引擎并不重新转换和编译这个jsp文件,而是对它进行重新初始化,并创建一个响应文档,返回给客户端。对每一个请求,web容器创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。如果在任何时候如果由于系统资源不足的原因,web容器将以某种不确定的方式将servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入"垃圾收集"处理。

3、jsp脚本与声明的差异
<%!int count=100;%>--------jsp声明
<%int count=100;%>---------jsp脚本

二者的差异在于作用域和生存期,
(1)、jsp声明中创建的名字有类范围的作用域和生存期
(2)、jsp脚本中创建的名字有局限于方法的作用域和生存期。
二者的作用域就像是java中在类中定义一个属性A和在类的方法中定义一个属性B,
类中不能引用属性B,但是在方法中可以引用属性A,
二者的生存期:
jsp声明,例如:<%!int count=100;%><%=count++%>
脚本中的变量生存期存在于第一个用户延续到第二个用户。。。。,如果第一个用户第一次访问时100,第二个用户访问就101,第三个用户访问时102,以此类推。。。如果服务器停止而重新启动后,则count值就返回到100,
jsp脚本,例如:<%int count=100;%><%=count++%>
脚本中的变量生存期存在于每个用户的访问期间,所以没有用户访问都是100

无论声明和脚本放置的位置不同,jsp容器都是首先进行初始化声明,再执行脚本的。
总结:
(1)、不能在脚本中定义方法,但可以再jsp声明中定义自己的方法,因为脚本程序是局限于jspService方法中的,如果在jspservice方法中再次定义方法是不允许的。
(2)、不能在jso声明中使用out等隐藏对象,因为out等隐藏对象,是作用域jspservice方法中定义的。
(3)、脚本中定义变量,不能在jsp声明中引用此变量。
(4)、如果变量定义在方法中,则不能在方法之前使用此变量。
  • 大小: 4 KB
分享到:
评论

相关推荐

    jsp文件运行的机制

    jsp文件运行的机制,讲述的是tomcat服务器的作用与运行机制

    jsp基础理论

    jsp源码,jsp运行机制,jsp应用,jsp实现的原理以及怎样相应客户端

    《Java_Web应用开发实用教程》练习答案

    Java Web应用开发实用教程》分为3篇,共21章:第1篇Java Web开发基础知识分为9章,强调基本概念、技术和方法的阐述,注重联系实际的操作,包括Web应用开发概述、开发与运行环境、HTTP和Server基础、JSP运行机制与...

    jsp语法、用法介绍及培训

    jsp入门学习、Jsp运行机制、Jsp语法、jsp内建对象(内置对象) 。并且附ppt 主要用于网页开发

    jsp工作原理

    详细分析了jsp内部运行机制,分析了内不是怎么样的机制。

    组合算法JSP程序

    组合算法JSP程序,以java算法为基础,描述组合算法的运行机制和实现

    Head First Servlets and JSP 中文版 第2版

    适合java初学者,通俗的讲解servlet和jsp的运行机制。

    JSP初学者简明基础教程

    JSP实现原理和运行机制 JSP环境配置 HTML语法 CSS语法 JSP页面结构 JSP注释 变量、方法和声明 JSP指令 JSP动作语法 JSP脚本 JavaScript语法 ......详情见PPt内容 Java运算符 Java循环语句 Java条件语句 Java类技术 ...

    JSP学习电子书

    个 JSP 应用可以部署运行在不同的平台上,同时,丰富的 Java 技术也给 JSP 的开发提 供了不少特色。所以,在这一章,用户要学习的东西是什么是 JSP,JSP 的工作机制, JSP 语法规范等一些 JSP 的基础技术。

    jsp宝典源码

    通过阅读本书,可以使读者对JSP概念、运行机制、JSP的Web开发过程有一个全面的了解,并学会使用各种开发工具和组件。 本书适合大专院校在校生、网站开发人员、职业技术培训人员以及编程爱好者学习和参考。

    基于JSP技术的旅游网站设计软件程序源码+数据库+word毕业设计论文文档.zip

    1.4 JSP的机制 61 1 概述 1.1 项目研究背景 社会经济的发展和提高潜移默化的影响了人们对精神消费的日益看中与提高,所以越来越多的人们开始选择更健康有趣的生活活动,随之而来的旅游便成了人们消费的必选...

    商城之家JSP商城基于jsp+mysql开发

    所有的繁重的计算和处理都由服务器端处理,运行速度快,安全稳定,数据库采用MYSQL大大减轻 了客户端用户机CPU频率受制的局限,同时绝对的安全性和稳定性是本系统最强大,最重要的设计 开发组成部分。

    基于jsp的人人乐超市采购系统.zip

    按照人人乐超市采购系统的原理和方法,采用成熟的信息技术和手段,支持公司管理工作的全过程,加强各种信息资源的管理与运用,提高企业管理工作的现代化水平,优化人、财、物和信息资源在供、销等各环节的运行机制。...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    12.2 jsp的运行机制 366 12.3 jsp的语法 371 12.3.1 指令元素(directive elements) 371 12.3.2 脚本元素(scripting elements) 374 12.3.3 动作元素(action elements) 376 12.3.4 注释 383 12.4 jsp的...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    12.2 jsp的运行机制 366 12.3 jsp的语法 371 12.3.1 指令元素(directive elements) 371 12.3.2 脚本元素(scripting elements) 374 12.3.3 动作元素(action elements) 376 12.3.4 注释 383 12.4 jsp的...

    JSP企富商贸网开发

    所有的繁重的计算和处理都由服务器端处理,运行速度快,安全稳定,数据库采用MYSQL大大减轻 了客户端用户机CPU频率受制的局限,同时绝对的安全性和稳定性是本系统最强大,最重要的设计 开发组成部分。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    12.2 jsp的运行机制 366 12.3 jsp的语法 371 12.3.1 指令元素(directive elements) 371 12.3.2 脚本元素(scripting elements) 374 12.3.3 动作元素(action elements) 376 12.3.4 注释 383 12.4 jsp的...

    JSP商城之家商城企业版

    所有的繁重的计算和处理都由服务器端处理,运行速度快,安全稳定,数据库采用MYSQL大大减轻 了客户端用户机CPU频率受制的局限,同时绝对的安全性和稳定性是本系统最强大,最重要的设计 开发组成部分。

    网上书店系统(jsp+servlet+sqlserver)

    本系统采用MVC软件设计模式,即模型-视图-控制器,被推荐为J2EE平台的设计模式,它已收到越来越多的Web开发者的欢迎,并且应用Struts来实现MVC的机制。Struts实质上就是在JSP的基础上实现的一个MVC框架。在Struts...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    12.2 jsp的运行机制 366 12.3 jsp的语法 371 12.3.1 指令元素(directive elements) 371 12.3.2 脚本元素(scripting elements) 374 12.3.3 动作元素(action elements) 376 12.3.4 注释 383 12.4 jsp的...

Global site tag (gtag.js) - Google Analytics