Spring源码分析【7】-Spring 模板页和JSP文件的编译
来源:互联网 发布:外贸网络推广 编辑:程序博客网 时间:2024/05/21 09:50
org.apache.jasper.servlet.JspServletWrapper.service
org.apache.jasper.JspCompilationContext.compile
org.apache.jasper.JspCompilationContext.createCompiler
org.apache.jasper.compiler.Compiler.isOutDated
判断文件是否存在
..\Apache\apache-tomcat-8.0.36\work\Catalina\localhost\ROOT\org\apache\jsp\WEB_002dINF\views目录为空,故意删掉之前编译的jsp类文件
返回上一步
org.apache.jasper.JspCompilationContext.compile
org.apache.jasper.compiler.Compiler.compile
org.apache.jasper.compiler.Compiler.compile
org.apache.jasper.compiler.Compiler.generateJava
这个函数一直往下走到这一步:
org.apache.jasper.compiler.Compiler.setupContextWriter
jsp生成java类的关键代码
OutputStreamWriter osw = null; try { osw = new OutputStreamWriter( new FileOutputStream(javaFileName), javaEncoding); } catch (UnsupportedEncodingException ex) { errDispatcher.jspError("jsp.error.needAlternateJavaEncoding", javaEncoding); }
返回
org.apache.jasper.compiler.Generator.generate
org.apache.jasper.compiler.Generator.generatePostamble
到generatePostamble最后一行代码
org.apache.jasper.compiler.Generator.genCommonPostamble
org.apache.jasper.compiler.ServletWriter.printMultiLn
回到genCommonPostamble
popIndent
回到genCommonPostamble
回到generatePostamble
回到generate
回到generateJava
完成整个try过程,文件生成才完成
jsp生成的java文件
回到compile
下一步
org.apache.jasper.compiler.JDTCompiler.generateClass
编译.java文件为.class文件
下一步
下一步
下一步
下一步
下一步
下一步
下一步
终于编译完成
回到compile
回到compile
回到service
getServlet
第四步
(4) Service request
service
service
执行home_jsp.class文件
持续后退到doFilter
至此一个jsp的编译执行就完成了。
- Spring源码分析【7】-Spring 模板页和JSP文件的编译
- Spring 加载 *.properties 文件的源码分析
- Spring源码分析【6】-ThreadLocal的使用和源码分析
- Spring源码的编译过程
- spring源码分析-spring上下文的初始化
- spring security3的源码分析
- spring的JdbcTemplate源码分析
- 使用Spring计时器和velocity模板定时生成静态html/jsp文件
- spring源码编译和导入eclipse
- spring mvc jsp和静态文件不能访问的原因
- Spring源码分析【2】-Tomcat和Sping的连接点
- Spring EmptyResultDataAccessException异常的源码分析和解决方法
- JSP 编译和运行过程与JSP源码简单分析
- Spring源码编译
- Spring源码编译
- spring 源码编译
- 编译Spring Framework源码
- spring源码编译
- POJ 2752 Seek the Name, Seek the Fame(KMP)
- Split 方法
- 如何用C++写一个简单的小游戏?
- hessian调用中断会怎样
- Java判断浏览器版本与类型
- Spring源码分析【7】-Spring 模板页和JSP文件的编译
- Android DialogFragment(2)
- Flume环境部署和配置详解及案例大全
- 图结构练习——BFSDFS——判断可达性
- ramdisk.img system.img userdata.img 分析
- Java研发方向如何准备BAT技术面试答案(中)
- 基于jmeter和shell的接口性能自动化
- Android Camera预览时输出的帧率控制
- GPDB的spread方式测试