当一个页面请求过来时, FilterDisptcher通过Dispatcher进行一些初始化工作,并且注入ActionMapper。 FilterDispatcher对请求进行过滤,如果请求符合要求,则返回相应的action配置信息(比如是否URL以.action结尾等),FilterDispatcher调用getMapping方法获得ActionMapping(action的配置信息)。
FilterDispatcher调用serviceAction(request,response,servletContext,mapping),serviceAction通过Dispatcher在一个Map中创建Context对象,并且置入request对象、response对象、session对象、application对象。Dispatcher然后创建一个ActionProxy对象。ActionProxy创建ActionInvoction对象,ActionInvocation首先创建ValueStack,并拷贝Map的内容到Valuestack的context中,随后ActionInvocation创建Action对象,并把Action对象放入valuestack的root中,最后创建ActionContext对象,并把Map的内容也拷贝进入ActionContext对象。ActionContext对象是我们跟request/session/application这些scope对象交互的接口,可以通过ActionContext在这些对象里面存取值。ActionInvocation创建一系列拦截器。至此创建对象完成。
FilterDispatcher执行excute方法,导致ActionProxy调用invoke方法,导致ActionInvocation执行系列拦截器,以及Action方法,ActionInvocation根据配置创建Result对象(能支持不同结果类型的Result对象),ActionInvocation执行excute方法执行呈现操作。
FilterDispatcher将ValueStack放入request Scope中是为了在标签里能获得ValueStack。
分享到:
相关推荐
然而,Struts2的安全性是开发者必须关注的重要议题,因为它涉及到用户数据的接收、处理和展示,而这正是黑客可能发起攻击的关键环节。 在Struts2的安全问题中,主要包括以下几个方面: 1. **参数注入**:由于...
Struts2 拦截器是Struts2框架的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,实现对请求的预处理和后处理,从而增强应用程序的功能和控制流程。以下是对Struts2拦截器原理与实现的详细解析: ...
Struts框架在JSP Model2架构上建立,实现了MVC模式,使得业务逻辑、数据显示和用户交互得以有效分离。 **MVC模式详解** MVC模式由模型(Model)、视图(View)和控制器(Controller)三部分组成。模型负责处理业务...
拦截器是Struts2处理请求的关键组件,它们可以预处理请求,执行业务逻辑,或者进行其他操作。其中,params拦截器负责从请求中提取参数并将其设置到ValueStack中对应的属性上。此外,还有staticParams拦截器,它用来...
1. **ActionServlet**:这是Struts框架的前端控制器,它是Servlet的一个子类,负责拦截所有请求并进行处理。 2. **Action**:实现业务逻辑,它接收ActionForm中的数据,执行相应的操作,并返回ActionForward。 3. **...
拦截器链使得请求处理更加模块化,控制器与Servlet API解耦,这使得Struts2在处理请求时更加灵活,允许开发者自定义拦截器来实现特定的功能。 其次,Struts2在命名和API上很大程度上沿用了WebWork的风格。许多...
Action是业务逻辑处理的主要类,ActionForm用于封装用户输入的数据,而配置文件(通常为struts-config.xml)则定义了请求和处理动作之间的映射关系。进阶学习时,你需要关注的是ActionServlet的扩展,比如自定义拦截...
尽管Struts1已经较为陈旧,但理解这个过程有助于我们更好地理解和应用现代的MVC框架,如Spring MVC或前后端分离架构中的RESTful API。同时,jQuery Form插件的概念也可以迁移到其他前端库,如React或Vue,它们同样...
在Struts2框架中,这个问题是通过配置Action映射来解决的,这样就可以根据不同的URL来调用不同的Java类来处理业务逻辑并返回处理结果。这种机制不仅提高了程序的灵活性,还使得Web应用能够更好地响应用户的需求。
- **Ajax与XML**:学习异步请求处理与XML数据交换技术。 #### 四、工具与数据库 除了上述技术之外,学习者还需要掌握一定的工具和数据库知识。 - **开发工具**:熟练使用Eclipse、IntelliJ IDEA等IDE进行项目开发...
**JSP安全浅谈**,安全性是任何Web应用都需要重视的问题。对于JSP来说,主要的威胁包括跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。为了防御这些攻击,开发者应遵循最佳实践,例如:对用户输入进行严格...
3. 高性能:J2EE应用部署在经过优化的服务器上,能够处理高并发的请求。利用J2EE容器内建的资源管理和负载均衡机制,可以确保高性能和高可用性。 4. 独立于平台:J2EE应用可以在遵循Java EE标准的任何平台上运行,...
首先,WebWork的核心思想是通过Action类来处理用户请求,并将业务逻辑与表现层分离。Action类是WebWork中的关键组件,它接收HTTP请求,执行相应的业务逻辑,然后将结果传递给视图进行渲染。这种设计模式极大地提高了...
5. `如何进行Struts测试.html`和`浅谈Mock和基于Spring容器管理事务的测试.html`:这些文件可能讨论了Struts2的测试策略,包括如何在测试中结合Mock技术和Spring的事务管理。 在Struts2中,Mocking可以帮助我们分离...
Struts的配置文件(struts-config.xml)定义了请求与处理逻辑之间的映射,大大提高了开发效率。 接下来是Hibernate,这是一个流行的ORM(对象关系映射)框架。Hibernate消除了Java对象和数据库表之间的转换难题,...
例如,在红楼梦中的"击鼓传花"、JS 中的事件冒泡、JAVA WEB 中 Apache Tomcat 对 Encoding 的处理、Struts2 的拦截器、jsp servlet 的 Filter 等都可以使用责任链模式。 如何解决 责任链模式的解决方法是拦截的类都...