前两篇博客介绍了ActionServlet的初始化,讲述了它在初始化的时候做的事情。有了ActionServlet初始化,才能说当我们访问页面如何利用digester读取struts-config.xml配置文件信息,如何讲这些信息存到ActionMapping中,如何完成相应的业务处理和页面跳转。
那么今天就开始进入这一环节的分析。分析之前,希望大家还是好好看看原先的系列文章,那些文章都是引子,能够很清晰的认识struts框架大概的运行流程,所以不至于出现分析到底层源码的时候不好理解的现象。废话也不多说,现在开始分析。
这节课我们开始从截取路径开始,在《struts框架一》博客中的mvc小实例中就已经写到了截取路径了,主要代码就是:
这样我们就能从一个url中获得最后的名称和前面的“/”,也就是/login之类的字符串,之后用if-else判断就初始化相应的Action,虽然说这仅仅是一个mvc的小实例,但是就是这一简单的过程其实就是Struts框架截取字符串实现的原理所在(我个人观点,如果有不同见解,希望沟通交流)。
记得前几篇博客的朋友都知道,我对mvc小实例进行了几次重构,我把那些if-else中的字符串放到了配置文件中,最终变成了dom4j读取配置文件,之后动态相匹配通过多肽形式实例化Action,完成相应的业务逻辑和页面跳转。有了这个基础我们来看看struts框架是如何进行截取字符串的,相信大家会有所共鸣。
下面我们来对ActionServlet深层次进行分析。我们用断点的调试的方式来看底层源码。因为这个实例是post方式提交,所以将断点设置到doPost方法上。
我们debug运行程序,进入doPost里面的方法:
这个方法非常重要是ActionServlet运行的核心方法,这个Process处理了非常多的事情,后面的博客会一一介绍。
我们进入这个方法:
再继续进入:
我们赫然发现了这样一个方法就是processPath方法,这个方法就是截取字符串的方法。这个方法的源代码如下:
分析一下这段代码:
这段代码首先判断一下javax.servlet.include.path_info是否存在路径信息,这里要知道当当一个页面是以RequestDispatcher.include方式显示的话,这个属性值才存在。所以这里没有值,就会进入path =request.getPathInfo()程序中,这里的getPathInfo获取的值是相对servlet的路径信息。具体见博客(request.getPathInfo()方法的作用),通过那篇博客的分析,所以这里getPathInfo是获取不到值的。所以会进入下面的代码:
这一段代码是判断javax.servlet.include.servlet_path是否存在值,这个也是当一个页面是以equestDispatcher.include方式显示的话,这个属性值才存在,所以这里的值没有。之后进入path = request.getServletPath();这个方法是获得返回请求URI上下文后的子串,所以这里的返回值就是“/”和访问页面名称和后缀(这里和我的mvc实例截取的是不是一样的道理)。随后进入下面代码:
这里的方法主要和我的上面的那里是一样的,主要就是去掉后缀。
到此为止,截取字符串的工作就算完成了。接下来就是要和action标签匹配,把相应信息放到ActionMapping中。
随着分析的深入,这专栏的连载会越来越精彩。敬请关注!
分享到:
相关推荐
总之,“深入浅出Struts2”这份资料全面讲解了Struts2的各个关键组成部分,包括其工作原理、配置方式、拦截器机制、OGNL表达式、插件使用以及与Spring的整合,是学习和掌握Struts2框架的宝贵资源。通过深入学习和...
这本书"深入浅出Struts2源代码"是针对该框架源码的深度解析,旨在帮助读者理解Struts2的工作原理,提升开发技能。 Struts2的核心组件包括: 1. **FilterDispatcher**:这是Struts2的入口点,它是一个Servlet ...
综上所述,《深入浅出Struts2》这本书应该详细讲解了这些知识点,并通过实例和代码示例帮助读者掌握Struts2框架的各个方面。通过阅读和实践书中的内容,开发者能够更好地理解和运用Struts2来开发web应用。
Struts 是一个开源的Java Web框架,由Apache软件基金会维护,用于构建基于MVC(Model-View-Controller)模式的Web应用程序。...同时,结合《深入浅出Struts》这本书的理论讲解,将使你的学习事半功倍。
通过学习这本书"深入浅出Struts2.0",开发者不仅可以掌握Struts2的基本用法,还能了解其内在机制,从而更好地运用到实际项目中。书中可能涵盖了上述所有概念的详细解释、实例演示以及最佳实践,有助于提升开发者在...
《深入浅出Struts源代码》一书旨在帮助读者理解Struts的工作原理,通过分析源代码,让开发者能够深入到框架内部,更好地利用其功能,并解决实际开发中遇到的问题。书中的内容可能包括: 1. **Struts架构**:介绍...
本资料"深入浅出Struts2"将带你深入了解这个框架的核心概念、配置、拦截器以及实际应用。 1. **基础概念**: - MVC模式:Struts2基于MVC设计模式,它将业务逻辑、数据和用户界面分离,使得代码更易于维护和测试。 ...
总之,《深入浅出Struts 2》是一本深度和广度兼具的教材,不仅适合初学者,也适用于有一定经验的开发者,它通过实例和详尽的解释,引导读者逐步探索和精通Struts 2框架的各个方面。通过学习这本书,开发者可以更好地...
### 深入浅出Struts2中文版关键知识点概览 #### 1. Struts2框架概述 - **框架定位**:Struts2作为Java Web应用开发中的一个重要框架,继承了Struts1的设计思想,并在此基础上进行了大量优化和扩展。它通过一系列的...
### 深入浅出Struts2:关键知识点解析 #### 一、Struts2概述 **Struts2** 是一款基于 **MVC (Model-View-Controller)** 架构模式的开源Java Web应用程序框架。它由Apache Struts 1发展而来,在保持了Struts 1的...
这本书深入浅出地介绍了Struts的核心概念、架构以及实践应用,帮助开发者理解和掌握这一强大的MVC框架。 Struts是一个开源的Java Web框架,它遵循Model-View-Controller(模型-视图-控制器)模式,旨在简化Java ...
本资源包含了《深入浅出Struts2》的原书扫描版以及与之配套的完整实例代码,旨在帮助开发者全面理解和掌握Struts2框架的精髓。 《深入浅出Struts2》这本书详细介绍了Struts2的基础概念、核心组件以及高级特性的使用...
### Struts框架及标记库详解 #### Struts框架概述 Struts框架,作为Java Web开发中的经典MVC(Model-View-Controller)架构实现之一,自问世以来便因其组件的模块化、灵活性以及高重用性,而备受开发者青睐。其...
综上所述,《Struts in Action中文版》这本书不仅深入浅出地介绍了Struts框架的技术要点,还通过具体的案例分析帮助读者更好地理解和掌握Struts框架的实际应用。对于想要学习Struts框架的开发者来说,这本书是一本...
本实例将深入浅出地介绍如何使用Struts进行简单的Web应用开发。 首先,理解MVC模式至关重要。在MVC模式中,Model代表业务逻辑,负责处理数据;View是用户界面,展示数据;Controller作为两者之间的桥梁,接收用户...
这个"深入浅出StrutsBookApps"可能包含了多个示例应用,演示了上述概念的实际应用,通过这些实例,学习者可以更直观地理解Struts框架的工作原理和使用方法。解压后,你可以逐个浏览每个示例,研究它们的配置文件、...
在《Struts 2权威指南--基于WebWork核心的MVC开发》这本书中,作者李纲深入浅出地介绍了Struts 2的核心概念和实践技巧。这本书不仅适合初学者,也对有Struts 1背景的开发者提供了宝贵的指导。书中通过实例演示了如何...