`
services
  • 浏览: 80595 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

JSP编译原理

    博客分类:
  • java
阅读更多
1.jsp运行时都要先转换成servlet,使用tomcat时会在tomcat安装目录下的work生成一系列的文件夹和.java文件和.class文件.
2.jsp最终转化为servlet,work的作用就是加快速度,如果jsp没有变化就不重新编译了.
3.jsp最终变成输出的html代码的生命周期是这样的:
Web服务器读取jsp文件,将jsp文件转换为同名+_jsp.java文件,然后编译生成.class文件,Web服务器通过执行该.class文件,输出其中的html代码,就是你看到的在浏览器中的页面了。tomcat将所有生成的.java文件放在work目录下面,work目录下面的文件对于你直接纠错和学习jsp机制都是很有用的
4.当请求jsp页面时,Tomcat会分派给JspServlet来处理,在 jspServlet的方法 service()中有一句
boolean precompile = preCompile(request);
它会判断你请求jsp页面时有没有带?jsp_precompile查询字符串,如果带了就会重新编译
然后再由 
serviceJspFile(request, response, jspUri, null, precompile);
进一步判断是否要进行编译jsp文件
下面由JspServletWraper service方法
if (options.getDevelopment() || firstTime ) {
synchronized (this) {
if (firstTime) {
firstTime = false;
}
// The following sets reload to true, if necessary
ctxt.compile();
}
}
再到JspCompilationContext.compile()方法
if (isPackagedTagFile || jspCompiler.isOutDated()) {
才编译
关键就在Compiler的
isOutDated(boolean checkClass)
的判断上
如果你真要研究就应该去看看这段代码,判断标准是:如果jsp最后修改时间大于目标文件的最后修改时间要重新编译。
还有一种情况就是即使jsp的最后修改时间晚于目标文件的最后修改时间,但只要jsp中用了
include指令包含的某个文件的最后修改时间早于对应目标文件的修改时间的话,也是需要重新编译主jsp文件的
从这里可以看出,虽然jsp文件没改,但是被包含的jsp文件改了仍然会重新编译的,有些应用服务器就没做到这一点,被包含文件改了,还得动一动主文件才能看到效果。
分享到:
评论

相关推荐

    jsp与Servlet的编译原理、过程、区别及使用

    这将导致编译错误,因为字符串中的`%>`被视为未关闭的字符常量。为了避免这种情况,开发人员需要在字符串中转义 `%` 字符,如 `"%>`。 Servlet,另一方面,是一种服务器端的Java程序,它被设计用来扩展Web服务器的...

    将jsp生成java然后反编译为class然后打入jar

    当我们在服务器上运行一个JSP文件时,服务器会将其转换成一个Servlet(Java类),然后编译为.class文件,这个过程被称为JSP编译。下面我们将详细探讨这一过程以及如何将生成的Java类反编译为.class文件并打包到.jar...

    jsp 原理 jsp教程

    **JSP(Java Server Pages)原理与教程** Java Server Pages(JSP)是Java平台上的一个服务器端技术,用于创建动态网页。它结合了HTML、脚本语言(如JavaScript)和Java代码,允许开发者在服务器端生成HTML内容,...

    手工编译jsp

    1. **JSP预编译原理** - JSP预编译过程实际上是将JSP转换为对应的Servlet源代码,然后编译成字节码。这使得应用在首次请求时无需等待JSP到Servlet的转换,直接执行已编译好的Java类,从而减少响应时间。 - Apache...

    了解JSP工作原理.ppt

    了解JSP工作原理 JSP(Java Server Pages)是一种服务器端的WEB程序开发技术,由Sun公司发布,具有跨平台、通用性好、安全可靠等特点。JSP是基于Java的,页面程序由HTML或XML标记和JSP脚本共同组成,文件以“ .jsp...

    ASP编译原理在线答疑系统

    在ASP编译原理中,我们需要理解几个核心概念:解释器、编译器和运行时环境。 1. **解释器与编译器**: - **解释器**:ASP页面在服务器上首次被请求时,由IIS(Internet Information Services)中的ASP引擎解释执行...

    jsp工作原理

    ### JSP工作原理详解 #### 一、JSP的基本概念 JSP(JavaServer Pages)是一种基于Java技术的Web开发技术,它允许开发者在HTML页面中嵌入Java代码,从而实现动态网页的功能。JSP技术使得开发人员能够在静态网页的...

    jsp运行原理

    ### JSP运行原理详解 #### 一、JSP的基本概念 JSP(Java Server Pages)是一种结合了HTML标记和Java代码的技术,用于创建动态网页。它允许开发人员将业务逻辑和展示逻辑分离,使得Web应用更加模块化和易于维护。 ...

    jsp原理及框架

    这个过程包括了JSP编译、页面翻译和Servlet执行三个步骤。 1. **编译**:服务器首次接收到JSP请求时,会将JSP文件转换成对应的Servlet源码。 2. **页面翻译**:生成的Servlet源码包含了JSP页面上的HTML和Java代码,...

    编译原理远程教学系统论文

    《编译原理课程远程教学系统的设计与实现》这篇毕业论文主要探讨了如何利用现代网络技术和Java Web开发技术,构建一个针对计算机专业核心课程——编译原理的远程教学平台。该系统旨在克服传统教学方式的局限性,提供...

    JSP标签JSP 语法的基本原理

    当JSP首次被请求时,服务器会将JSP文件转换为Servlet源码,然后编译为字节码,加载到Java虚拟机中运行。JSP页面的主要组成部分包括: 1. **编译器指引(Compiler Directive)**:例如`<%@ page %>`, 它用来设置页面...

    JSP的原理、周期、 脚本

    **JSP的原理**: 1. **编译阶段**:当用户首次请求一个JSP页面时,Web服务器会将JSP转换为一个Java源代码文件(Servlet)。这个过程称为JSP到Servlet的翻译。转换后的Java源代码通常包含一个`_jspService`方法,该...

    tomcat3源码包

    通过对Tomcat3源码的学习,我们可以深入理解HTTP协议、Servlet规范、JSP编译原理,以及Java服务器端程序的运行机制。尽管它可能无法满足现代复杂Web应用的需求,但作为基础教学和学习的工具,Tomcat3仍然具有很高的...

    JSP编译环境Tomcat5.0

    对于开发者来说,理解Tomcat的工作原理和目录结构是非常重要的,因为这直接影响到应用的部署和调试。 在实际开发中,开发者还需要了解如何编写JSP页面,包括声明式和脚本元素的使用,以及如何导入和使用Java类。...

    JavaWeb开发技术-JSP运行原理.pptx

    JSP编译后生成的Servlet是完全符合Servlet规范的,因此,理解Servlet有助于深入理解JSP的工作机制。 **XML与HTML** 在JSP中,XML常用于数据交换和存储,特别是在MVC架构(Model-View-Controller)中,XML作为模型...

    TongWeb4.6开发指南

    - **JSP编译原理:** - 将JSP文件编译成Java源代码,再编译成字节码。 **2.3 国际化支持** - 提供多语言支持,适应不同地区的需求。 **2.4 Web部署描述符** - 定义Web应用程序的元数据和配置信息。 **2.5 文件...

    javaee-jsp原理

    本文将深入探讨JSP的工作原理及其在JavaEE中的应用。 JSP是一种服务器端技术,它允许开发者用Java语言来编写动态网页。JSP页面在服务器上被编译为Servlet,然后由Servlet处理HTTP请求并生成HTML响应。这个过程包括...

    JSP和Servlet中的几个编码的作用及原理

    本文将深入探讨JSP和Servlet中的几个关键编码设置的作用及原理,帮助开发者更好地理解和解决实际开发中遇到的编码问题。 #### 二、主要编码设置及其作用 ##### 1. `pageEncoding="UTF-8"` - **作用**:`...

Global site tag (gtag.js) - Google Analytics