JSP被生成java类编译及Tag解析过程
来源:互联网 发布:哪里有免费的建模数据 编辑:程序博客网 时间:2024/05/29 10:32
1. org.apache.jasper.servlet.JspServletWrapper
jsp被编译成servlet,然后运行其service方法。
2. org.apache.jasper.compiler.Compiler
解析jsp为node模型,对于每个node,生成相应的java代码。关于node模型体系,请在eclipse查看org.apache.jasper.compiler.Node类的子类体系。
3. org.apache.jasper.compiler.Generator
将2中解析的node模型,传递给Generator.generate方法,生成java代码。
4. org.apache.jasper.compiler.Generator.compileTagHandlerPoolList(Nodes)
此方法中,遍历每个node,如果不是SimpleTag类型,为此tag初始化TagHandlerPool名称(应该为Tag实现类的名称).
5. org.apache.jasper.compiler.Generator.GenerateVisitor
在4中遍历了nodes,为每个非SimpleTag初始化了TagHandlerPool的名称后,然后用此遍历器对每个tag生成相应的java代码。在遇到非SimpleTag时,会生成调用它对应的TagHandlerPool的代码。关于Tag的生成代码,可以查看org.apache.jasper.compiler.Generator.GenerateVisitor.visit(CustomTag)方法的代码。
关于如何为每个CustomTag找到对应的TagHandlerPool,见代码org.apache.jasper.compiler.Generator.GenerateVisitor.getTagHandlerInfo(CustomTag)及org.apache.jasper.compiler.Generator.TagHandlerInfo
apache jasper会对所有的非SimpleTag的实现类使用org.apache.jasper.runtime.TagHandlerPool进行池化。
6. 关于如何将Tag定义文件,比如.tld文件中定义的tag 实现类加载到编译好的jsp运行上下文中,见org.apache.jasper.compiler.TagFileProcessor。loadTagFiles()和loadTagFile()方法。
7. org.apache.jasper.compiler.Parse.parseTaglibDirective()和org.apache.jasper.compiler.TagLibraryInfoImpl类中解析tlds
将tld文件的<%@ taglib prefix="rbac" uri="http://rbac_console/WEB-INF/tags/t.tld" %> 中的uri转化成觉得文件url的代码,在org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(String, JspCompilationContext)中,紧接着会从JspCompilationContext。getResource()中获取,进而从JspCompilationContext中的ServletContext.getResource()获取URL.
- JSP被生成java类编译及Tag解析过程
- WMA格式文件中的TAG信息格式及解析类
- Jsp 与 Servlet的编译过程、原理、区别及使用
- JSP的编译过程
- jsp页面编译过程
- jsp编译过程
- jsp编译过程
- jsp 编译过程
- jsp编译、执行过程
- jsp编译过程---二
- jsp编译、执行过程
- 二维码生成及解析类
- java二维码生成及解析代码
- 四则表达式的编译过程及生成汇编代码
- GCC 编译c程序的方法及过程解析
- GCC 编译c程序的方法及过程解析
- 保留weblogic 中jsp编译后生成的java文件
- 保留weblogic中jsp编译后生成的java文件
- WinForm 数据验证
- STL各容器成员对比表
- Android NDK开发学习
- VS 不能调试 解决方法
- Linux下安装启动多个Mysql
- JSP被生成java类编译及Tag解析过程
- SelectNodes 与 XPath
- 华鼎数据库集群解决方案
- oracle数据库中查询被锁住的表
- 【STL】List基础
- 等待1
- WEKA入门教程
- convert the Data from Table into Insert Sentence.
- 工厂模式简单介绍及应用(以数据导入功能实现为例)