QUICK REVIEW
[论文解读] Identifying KDM Model of JSP Pages
Anas Shatnawi, Hafedh Mili|arXiv (Cornell University)|Jan 1, 2017
Scientific Computing and Data Management参考文献 2被引用 2
一句话总结
本文提出一种两步法,通过先使用Jasper将JSP页面转换为Java Servlet,再利用web.xml和标签解析补充JSP标签未在转换过程中捕获的依赖关系,从而生成JSP页面的KDM模型。该方法实现了基于JSP的JEE应用程序的完整逆向工程,生成结构化的KDM模型,以支持软件分析与维护。
ABSTRACT
In this report, we propose our approach that identifies a KDM model of JSP pages. Our approach is based on two main steps. The first one aims to reduce the problem space by translating JSP pages into Java Servlets where we can use existing tools to identify a KDM model. The second step aims to complete the resulting KDM model by identifying dependencies of JSP tags that are not codified by the translation step.
研究动机与目标
- 解决现有KDM提取工具对使用脚本语言(如JSP)实现的JEE技术缺乏KDM模型支持的问题。
- 实现基于JSP的JEE应用程序向结构化KDM模型的逆向工程,以支持软件分析。
- 识别并表示JSP标签(如<jsp:include>、<jsp:forward>)引入的依赖关系,这些依赖关系在JSP到Java的转换过程中未被捕捉。
- 通过中间Servlet转换,扩展现有KDM提取工具(如MoDisco)以支持JSP页面。
- 为未来对其他服务器端页面技术(如JSF)的KDM建模提供基础。
提出的方法
- 使用Jasper工具将JSP页面转换为等效的Java Servlet,利用其标准JSP生命周期映射机制。
- 使用MoDisco框架从转换后的Servlet中提取初步的KDM模型。
- 解析JSP页面和配置文件(如web.xml、@WebServlet注解),以识别URL和服务器页面映射关系。
- 使用SAX2基于XML的解析方法构建URL到对应服务器页面的查找表。
- 识别未被转换为Java代码的JSP标签依赖关系(如<jsp:include>、<jsp:forward>),并提取其目标页面引用。
- 通过在表示JSP页面的ClassUnit实例之间插入方法调用关系,修改初始KDM模型。
实验结果
研究问题
- RQ1如何自动为KDM提取工具原生不支持的JSP页面生成KDM模型?
- RQ2JSP标签(如<jsp:include>、<jsp:forward>)引入的关键依赖关系是什么?这些依赖关系在JSP到Java的转换过程中未被捕捉。
- RQ3如何系统地从web.xml和@WebServlet注解中提取URL与服务器页面之间的映射关系,以支持依赖建模?
- RQ4在通过中间Servlet转换实现JSP逆向工程时,现有KDM提取工具(如MoDisco)能够被多大程度地复用?
- RQ5如何扩展最终的KDM模型,以包含在转换后的Java代码中未表达的跨JSP依赖关系?
主要发现
- 该方法通过将JSP页面转换为Java Servlet,成功生成了JSP页面的KDM模型,从而能够利用基于MoDisco的现有KDM提取工具。
- JSP标签(如<jsp:include>和<jsp:forward>)引入的依赖关系在转换后的Java代码中未被表示,必须显式捕获。
- 使用web.xml和@WebServlet注解能够准确实现URL到服务器页面的映射,这对依赖关系重建至关重要。
- 基于SAX2 API的自定义解析器能有效从web.xml中提取URL到页面的映射,支持自动化依赖建模。
- 该方法通过在JSP页面的ClassUnit实例之间插入方法调用关系,成功扩展了KDM模型,以表示运行时依赖关系。
- 该方法在建模基于JSP的JEE应用程序的结构元素和跨页面依赖关系方面,展示了可行性与完整性。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。