找工作的时候老是会被问java框架熟悉吗,用哪个框架等等。表示我没用到过,趁现在闲着来粗粗学习下。
struts源码重要的两个部分是core和xwork-core,前者依赖后者。使用struts有两个配置文件很重要,struts.xml和web-inf/web.xml。struts.xml配置struts的package/action等。org.apache.struts2.config.StrutsXmlConfigurationProvider读struts.xml,解析,加载各个package、constant等。web.xml中配置filter过滤器(FilterDispatcher被废弃,可用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)、filter-mapping(url-pattern:/*,当客户请求的URL和该指定的URL相匹配时,就会触发过滤器)。
StrutsPrepareAndExecuteFilter是一个Servlet过滤器类。该类实现了接口StrutsStatics和Filter。前者定义了Struts的一些常量类路径,对常用的接口进行了重新封装,比如HttpServletRequest、HttpServletResponse、HttpServletContext等。后者是javax.servlet包的功能,它操纵客户端的请求或响应,在请求到达要访问的资源前或响应发送到客户端前截获之。
StrutsPrepareAndExecuteFilter类中实现Filter接口中的init、doFilter(chain.doFilter方法将该请求向后续过滤器传递,或者进行跳转等)、destroy方法。
init参数为FilterConfig,FilterConfig是servlet的类,通过getInitParameter方法读取web.xml配置文件中过滤器初始化参数。init方法中定义prepare和execute对象,分别表示过滤器请求准备和执行的过程,也创建Dispatcher对象。Dispatcher是一个重要的类,进行一系列初始化工作,如保存FilterConfig读取的配置初始化参数,调用StrutsXmlConfigurationProvider读struts.xml等,以及执行一些重要的代码,如serviceAction等。
doFilter是过滤的具体过程。
首先是prepare的工作,创建ActionContext(action执行环境,存储session、parameter、ServletContext等信息,ValueStack);调用Dispatcher.wrapRequest将请求和响应重新包装,例如针对请求类型是否为multipart/form-data,生成不同的request子类对象;之后根据requestUrl生成ActionMapping[name,namespace,method,extension,parameter]。
这之后就是execute的工作了。若当前强求不是一个action(如其他非.action为后缀),以静态资源方式处理,或交给chain.doFilter往下传递;若是个action请求,根据action配置生成执行相应的action。
首先是由ActionProxyFactory根据actionMapping的属性生成ActionProxy,ActionProxy只是个代理,真正完成创建、执行action工作的是ActionInvocation,在ActionProxyFactory生成ActionProxy的同时,生成ActionInvocation,该对象初始化时createAction->buildAction->buildBean->创建action的类实例。
随后便是执行相应的action,如DefaultActionInvocation.invoke()方法。Action被一个或者多个拦截器所包围,所有的用户请求都会被拦截器所拦截,所有拦截器处理完后交给Action处理,处理结果以逻辑视图方式返回给用户。用户可以自己配置拦截器,即在struts.xml中定义如package/interceptors/interceptor,同时在package/action/interceptor-ref中引用。invoke方法实现了截拦器的递归调用,即调用Interceptor.intercept,intercept方法又调用invoke(),就会往下找到下一个拦截器。直到拦截器全部调用完毕,执行invokeAction,根据class、method,利用反射机制执行方法
分享到:
相关推荐
这是对spring_hibernate_struts2的理解,可以在面试中简要的抓住重点进行陈述。
Struts是Java Web开发中的一个开源框架,由Apache软件基金会维护。...本教程将深入探讨Struts的基本概念、工作原理以及如何进行初级应用。...随着对Struts理解的深入,你将能更有效地构建和管理Java Web应用程序。
19. **案例分析**:通过实际案例,加深对Struts理解,提升解决问题的能力。 20. **维护与升级**:了解如何对已有的Struts 1.x应用进行维护和升级到更现代的框架,如Struts 2或Spring Boot。 21. **常见问题与解决...
随着对Struts理解的深入,可以尝试使用Struts2,它是Struts的升级版,提供了更多的功能和改进。 总之,Struts作为经典的Java Web框架,为开发者提供了强大且灵活的工具来构建MVC应用。通过掌握Struts的基础知识,你...
Struts 1(讨论的版本)是一个广泛使用的框架,但在后续版本中被Struts 2所取代,尽管如此,Struts 1的基础概念对于理解现代Web开发中的MVC框架仍然很重要。 首先,Struts 框架的核心是ActionServlet,这是一个实现...
作为struts2的初学者,有时候理解struts框架的原理,网上看图会一头雾水,所以要是能自己体会实现struts框架的整个过程,对理解struts思路会更加清晰一些,这个源码就是自己实现的过程,代码有详细注释
《精通Struts》是孙卫琴撰写的一本深入解析Struts框架的专业书籍,该书旨在帮助读者全面理解和掌握Struts的使用。在这个压缩包中,包含的是书中第...随着对Struts理解的深入,你将能够构建更复杂、功能丰富的Web应用。
**Struts理解** Struts是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,主要负责处理用户请求并展现数据。它通过ActionServlet(Struts1)或FilterDispatcher(Struts2)作为核心控制器,接收来自...
书中通过实例演示了如何将Struts 1应用迁移到Struts 2,使开发者能够理解两者的差异和集成方法。 Struts 2的关键特性包括: 1. **Action类与Result**:Struts 2中的Action类替代了Struts 1的Form Bean,负责处理...
这个项目可能包含了Action编写、视图渲染、用户交互、数据验证等基本功能,是学习和理解Struts2框架的一个很好的实践案例。通过分析和运行这个项目,可以深入理解Struts2的工作原理及其在实际应用中的运用。
Struts2是一个强大的Java web应用程序框架,用于...通过分析源代码,可以深入理解Struts2的工作原理、配置机制以及MVC模式在实际项目中的应用。对于初学者,这是一个很好的实践平台,能帮助他们掌握Web开发的基本技能。
这个"Struts学习理解的初级项目"是为初学者设计的一个经典实例,旨在帮助大家深入理解Struts的核心概念和工作原理。 在Web开发中,MVC模式是一种将业务逻辑、数据和用户界面分离的设计方式。Struts框架通过控制器...
这个“Struts2接口文档”是开发者的重要参考资料,提供了关于Struts2框架内各个组件、类库以及接口的详细说明,帮助开发者深入理解框架的内部工作原理并有效地使用其功能。 Struts2的核心组件包括Action、Result、...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计...正确理解和使用这些jar包以及框架的核心概念,能够帮助我们更高效地开发和维护Java Web项目。
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的...希望本教程能帮助大家更好地理解和运用Struts2,为自己的项目带来更多的价值。
Struts是Apache软件基金会下的一个开源项目,主要提供MVC(Model-View-Controller...尽管Struts2在许多方面进行了改进,但Struts1仍有许多项目在使用,理解这两个框架的差异和使用方法对于Java Web开发者来说非常重要。
在Struts2.3.4源代码中,我们可以深入理解以下关键知识点: 1. **FilterDispatcher**: 这是Struts2框架的入口点,负责拦截HTTP请求并根据配置将请求分发到相应的Action。 2. **StrutsPrepareAndExecuteFilter**: ...
本视频教程由传智播客提供,旨在帮助初学者理解Struts2的基础概念,并指导如何搭建Struts2的开发环境。 首先,我们要了解Struts2的核心概念。Struts2是一个基于MVC(Model-View-Controller)设计模式的框架,它的...
"张孝祥Struts视频源代码"很可能是由知名IT讲师张孝祥制作的一系列关于Struts框架的教程,其中包含了相应的源代码,帮助学习者通过实际操作理解Struts的工作原理和应用。 在深入探讨Struts框架之前,我们首先需要...
这个API帮助文档是开发者在使用Struts2框架时的重要参考资料,它详细阐述了框架的各种组件、类库和方法,有助于理解并有效利用Struts2的功能。 1. **Struts2核心组件** - `struts2-core`:这是Struts2框架的核心...