一、JSP机制概述
可以把执行JSP页面的执行分成两个阶段,一个是转译阶段,一个是请求阶段。
转译阶段:JSP页面转换成Servlet类。
请求阶段:Servlet类执行,将响应结果发送至客户端。
1.用户(客户机)访问响应的JSP页面,如http://localhost:8080/Prj_test/ch02/HelloJSP.jsp。
2.服务器找到相应的JSP页面。
3.服务器将JSP转译成Servlet的源代码。
4.服务器将Servlet源代码编译为class文件。
5.服务器将class文件加载到内存并执行。
6.服务器讲class文件执行后生成HTML代码发送给客户机,客户机浏览器根据响应的HTML代码进行显示。
如果该JSP页面为第一次执行,那么会经过这两个阶段,而如果不是第一次执行,那么将只会执行请求阶段。这也是为什么第二次执行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脚本与声明的差异
二者的差异在于作用域和生存期,
(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)、如果变量定义在方法中,则不能在方法之前使用此变量。
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脚本
<%!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)、如果变量定义在方法中,则不能在方法之前使用此变量。
相关推荐
### JSP 文件运行机制详解 #### 一、JSP 文件的基本概念 JSP(Java Server Pages)是一种基于Java技术的动态网页技术标准。它允许在HTML文档中嵌入Java代码和表达式,使得Web页面能够根据请求动态生成内容。通过...
#### JSP运行机制 JSP页面的运行机制主要包括两个阶段:转换阶段和执行阶段。 - **转换阶段**:当Web服务器首次接收到对某个JSP页面的请求时,服务器会将这个JSP文件转换成一个等效的Servlet类。转换过程是由Web...
【JSP考试复习知识点】 ...以上是JSP考试复习的关键知识点,涵盖了Web服务目录、JSP运行机制、Tomcat服务器配置、Web程序结构、JSP与JavaBean的交互、字符编码处理等方面,这些都是JSP开发者必须掌握的基础内容。
JSP页面,了解JSP运行机制。 2. **用户登录系统**:利用JSP和Servlet实现用户注册、登录功能,涉及会话管理、表单验证等。 3. **数据库操作**:通过JDBC与数据库交互,展示查询结果,理解JSP如何处理数据库连接和...
5. **Servlet与JSP的关系**:JSP最终会被转换为Servlet,因此了解Servlet的基本概念,如doGet和doPost方法,请求和响应对象,以及Servlet生命周期,对理解JSP运行机制很有帮助。 6. **MVC(Model-View-Controller)...
10. **Servlet**:JSP最终会被转换成Servlet,因此了解Servlet基础是理解JSP运行机制的关键。Servlet是Java编写的服务器端程序,用于扩展服务器的功能。 《JSP基础教程》的源代码可能包含各种示例,如用户注册、...
2. JSP运行机制 JSP运行在Browser/Server(浏览器-服务器)模式下,采用多层体系结构。当客户端发起JSP页面请求时,服务器上的JSP引擎会将JSP页面转换为Servlet源代码,接着编译为字节码,由Java虚拟机执行,最终将...
Java Web应用开发实用教程》分为3篇,共21章:第1篇Java Web开发基础知识分为9章,强调基本概念、技术和方法的阐述,注重联系实际的操作,包括Web应用开发概述、开发与运行环境、HTTP和Server基础、JSP运行机制与...
### Struts2运行机制详解 #### 一、Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它为开发者提供了构建可扩展、易于维护的Web应用程序的工具。Struts2不仅继承了...
jsp入门学习、Jsp运行机制、Jsp语法、jsp内建对象(内置对象) 。并且附ppt 主要用于网页开发
- **理论知识**:理解静态和动态网页的区别,掌握JSP运行机制,对比不同动态网页开发技术,如PHP、ASP.NET等。 通过这个项目设计方案,学生将获得全面的JavaWeb开发经验,从基础环境配置到实际项目开发,从而具备...
5. **Servlet生命周期**:JSP最终会被编译为Servlet,了解Servlet的初始化、服务和销毁过程对理解JSP运行机制至关重要。 6. **MVC模式**:JSP通常与Model-View-Controller(模型-视图-控制器)设计模式结合使用,以...
【JSP(Java Server Pages)运行机制】 JSP是一种基于Java的动态网页技术,它将HTML、CSS和Java代码结合在一起,使得服务器端能够生成HTML响应。在标题和描述中,我们看到的是两个不同的JSP程序示例,一个是简单的...
JavaServer Pages(JSP)...学习JSP需要理解其基本概念、运行机制、语法结构以及如何使用内置对象和标签库来实现复杂的业务逻辑。对于初学者而言,从基础开始逐步深入,通过实践项目来巩固理论知识,是掌握JSP的关键。
JSP引擎会将JSP文件转换为Servlet,然后编译成.class文件运行在服务器上。 2. **JSP指令** - `page指令`: 定义整个页面的属性,如语言、编码、导入的包等。 - `include指令`: 用于包含其他页面的内容,分为静态...
这种机制使得JSP能够跨平台运行,不受特定服务器或厂商限制。 1.2 JSP的发展历程 JSP自发布以来,因其提供了高效的Web应用程序开发环境,很快引起了广泛关注。它能适应市场上85%的服务器产品,包括Apache WebServer...
**JSP运行原理** 1. **客户端请求**:用户在浏览器中输入URL,发起对JSP页面的请求。 2. **JSP容器处理**:服务器接收到请求后,由JSP容器负责处理。如果JSP文件尚未被翻译成Servlet,容器会进行以下步骤: - **...