`
services
  • 浏览: 78443 次
  • 性别: 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的编译原理、过程、区别及使用

    深入解析jsp与Servlet的编译原理、过程、区别及使用。

    jsp运行原理

    其步骤如下: 1.jsp引擎将jsp文件翻译为Servlet源程序;...2.之后又将Servlet源程序编译为.class类文件;其中: 1.Jsp引擎是通常一个Servlet程序,Tomcat中的jsp引擎就是org.apache.jasper.servlet.JspServlet;

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

    JSP运行原理 Java Servlet Jsp XML HTML JAVA WEB开发技术 JSP运行原理 客户端 JSP容器 JSP文件 Servlet文件(.java) class文件(.class) Servlet实例 请求 响应 转换 编译 执行 谢谢观看

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

    系统运用Eclipse工具开发,使用JSP和Servlet实现的,基于B/S模式结构即浏览器/服务器结构,采用SQL Server 2000作为数据库后台。经过调研,系统基本要实现教师使用该系统可以进行授课、布置作业、批改作业;学生使用...

    servlet 详细入门教程,工作原理、编译、通过 JSP 页面调用 servlet

    servlet servlet 工作原理、编译和安装 servlet 7.3 通过 JSP 页面调用 servlet 7.4 servlet 共享变量 7.5 HttpServlet 类 7.6 用 servlet 读写文件 7.7 用 servlet 访问数据库 7.8 会话管理

    JavaServer Pages (JSP)

    JSP 技术的工作原理? JSP 页面使用 XML 标签和 scriptlets(一种使用 Java 语言编写的脚本代码),封装了生成页面内容的逻辑。它将各种格式的标签(HTML 或者 XML)直接传递回响应页面。通过这种方式,JSP 页面...

    编译原理 123456

    本系统是用JSP开发工具实现的,主要完成对学籍的管理,包括添加、修改、删除,查询,以及用户管理等五个方面。系统可以完成对各类信息的浏览、查询、添加、删除、修改等功能。系统的核心是添加、修改和删除三者之间...

    jsp,el,jstl笔记总结

    2.jsp运行原理-----jsp本质就是servlet(面试) jsp在第一次被访问时会被Web容器翻译成servlet,在执行 过程: 第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行 PS:被翻译后的...

    基于jsp的计算机组成原理课程网源码数据库.zip

    源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是...

    JSP学习心得

    作者:徐春金下面是本人在学习JSP时的一些心得: 一、JSP工作原理在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 ...

    whut-experiment:武汉理工大学计算机(余)一些实验代码加报告C语言编译原理操作系统数据库大实验有缘人可以白嫖

    还实现了紧缩和动态页式管理消除算法(LRU的近似算法,最近最少访问算法)最后成绩为优数据库大实验(8周)我的过渡为小区停车位管理系统用的是javaWeb实现,实现的比较简单,前端用HTML + jsp实现,因为也是刚开始...

    JSP学习经验小结分享

    一、JSP工作原理 在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在...

    jsp的操作技术

    JSP运行原理 只有当客户端第一次请求jsp时,才需要将其转换 编译 web服务器在遇到访问jsp网页的请求时,首先执行其中的程序片段,然后执行结果以 html格式返回给客户 程序片段可以操作数据库、重新定向网页及...

    JSP安全性初探

     如果想发现JSP暴露源代码的BUG的话,首先需要了解JSP的工作原理。 JSP和其它的PHP、ASP工作机制不一样,虽然它也是一种web编程语言。首次调用JSP文件其实是执行一个编译为Servlet的过程。注意我们就要在这上边做...

    JSP程序设计实例教程(第2版)-电子课件第1章-Java-Web编程基础.pptx

    (5)JSP服务器将Servlet源代码编译后执行。 (6)将产生的结果返回到客户端。 JSP程序设计实例教程(第2版)-电子课件第1章-Java-Web编程基础全文共73页,当前为第8页。 1.3 JSP程序体系结构 1.3.1 比较C/S结构与B/S...

    java源码包JSP实例源码JAVA开发源码65个合集.zip

    编译原理--LR(1)分析表构造(JAVA).rar 网上书店.rar 网络电视源代码TV-Browser.rar 网络蚂蚁Java版.rar 网页浏览器.rar 蜀山剑侠传游戏J2ME手机版源代码.rar 超市购物系统.rar 车间管控.rar 轻松商城系统.rar ...

    这是我的第一个

    当我们第一次访问jsp的时候,tomcat需要吧jsp翻译成一个java文件,然后在编译成class文件,然后在运行。 --------------------- 作者:java_esky110 来源:CSDN 原文:...

    jsp最详细教程 最容易入门

    JSP 简介...............................................................JSP 的运行原理....................................12 1.4 安装配置JSP 运行环境.............................16 1.5 JSP 页面的测试........

Global site tag (gtag.js) - Google Analytics