`
xaocaotanghui
  • 浏览: 56084 次
  • 性别: Icon_minigender_1
  • 来自: 广西
文章分类
社区版块
存档分类
最新评论

Action中Struts2能够提供的注入

 
阅读更多

org.apache.struts2.interceptor.ServletConfigInterceptor类中的这段代码可知

public String intercept(ActionInvocation invocation) throws Exception {
        final Object action = invocation.getAction();
        final ActionContext context = invocation.getInvocationContext();

        if (action instanceof ServletRequestAware) {
            HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
            ((ServletRequestAware) action).setServletRequest(request);
        }

        if (action instanceof ServletResponseAware) {
            HttpServletResponse response = (HttpServletResponse) context.get(HTTP_RESPONSE);
            ((ServletResponseAware) action).setServletResponse(response);
        }

        if (action instanceof ParameterAware) {
            ((ParameterAware) action).setParameters((Map)context.getParameters());
        }

        if (action instanceof ApplicationAware) {
            ((ApplicationAware) action).setApplication(context.getApplication());
        }
        
        if (action instanceof SessionAware) {
            ((SessionAware) action).setSession(context.getSession());
        }
        
        if (action instanceof RequestAware) {
            ((RequestAware) action).setRequest((Map) context.get("request"));
        }

        if (action instanceof PrincipalAware) {
            HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
            if(request != null) {
                // We are in servtlet environment, so principal information resides in HttpServletRequest
                ((PrincipalAware) action).setPrincipalProxy(new ServletPrincipalProxy(request));
            }
        }
        if (action instanceof ServletContextAware) {
            ServletContext servletContext = (ServletContext) context.get(SERVLET_CONTEXT);
            ((ServletContextAware) action).setServletContext(servletContext);
        }
        return invocation.invoke();
    }

 

 

分享到:
评论

相关推荐

    Struts2--为Action的属性注入值

    在Struts2中,Action类是处理用户请求的核心组件,它封装了业务逻辑。为Action的属性注入值是Struts2的一个关键特性,使得我们可以方便地从请求参数中获取数据并绑定到Action实例上,以便后续的业务处理。 这个特性...

    struts2 依赖注入boolean类型的属性时报错

    在Struts2中,可以通过Action类的getter和setter方法来定义可注入的属性。当配置文件(如struts.xml或struts-plugin.xml)中声明了这些属性及其值时,IoC容器会在实例化Action时自动设置它们。 然而,对于boolean...

    Struts2_入门篇_基本配置_通配符_参数注入_内置对象获取等。。。

    1. **基础配置**:在Struts2中,基础配置主要通过`struts.xml`文件完成。这个文件定义了Action(动作)及其对应的Result(结果)。例如,你可以声明一个Action类,指定它的结果页面,如`<action name="myAction" ...

    Struts2SpringUnitDemo单元测试

    4. **Action和Service的测试**:在Struts2中,Action类是处理用户请求的实体,它通常调用Service层来执行业务逻辑。Service层封装了与数据库或其他外部资源的交互。在单元测试中,Action的测试主要检查其接收请求、...

    struts2技巧,笔记.zip指定404,500页面 utf-8过滤器 防SQL注入 解决乱码

    在Struts2中,可以通过在struts.xml配置文件中定义全局结果类型来实现。例如,为404错误指定一个特定的JSP页面,使用户看到的不是默认的错误信息。 2. **字符编码问题**: - **pageEncoding**:在JSP页面中,...

    struts1和struts2的区别

    - **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...

    Struts2在Action里注入EJB必须的包

    Struts2在Action里注入EJB必须的包,因为Struts2 的Action是普通的Java类(po),不能直接将EJB注入,所以需要依赖这个包

    Struts2Demo2

    在Struts2中,我们可以使用OGNL(Object-Graph Navigation Language)表达式来访问Action中的属性并展示在页面上。 4. **拦截器(Interceptors)**:Struts2提供了一种机制,允许在Action执行前后执行一些通用任务...

    Struts2的视频学习代码

    8. **Action上下文(ActionContext)**:ActionContext是Struts2中保存请求和会话数据的上下文对象,包含了请求参数、session数据等,可以用来在Action间共享数据。 9. **Struts2与Spring集成**:Struts2可以方便地...

    Struts2主要Lib

    在Struts2中,Action类代表控制器,负责处理用户的请求;模型由业务逻辑组件组成,处理数据操作;视图则负责渲染并展示结果给用户。 2. **Struts2 Action**:Action是Struts2的核心组件,它处理用户请求,并通过...

    Struts2+spring依赖注入+Hibernate+Dwr

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责Web应用程序的不同层面,而DWR(Direct Web Remoting)则是一个JavaScript库,用于在客户端和服务器之间实现异步通信。这个“Struts2+spring...

    尚硅谷_佟刚_Struts2

    12. **错误与异常处理**:Struts2提供了统一的错误处理机制,能够优雅地处理程序中的异常情况。 尚硅谷_佟刚_Struts2.pptx这份课件可能涵盖了以上知识点的详细讲解,通过学习,开发者不仅可以了解Struts2的基本用法...

    struts2 API帮助文档

    - OGNL是Struts2中的表达式语言,用于在Action和视图之间传递数据。它可以访问对象的属性,执行方法,甚至进行复杂的运算和控制结构。 7. **插件(Plugins)** - Struts2支持多种插件来扩展功能,如Struts2-dojo-...

    Struts2与Struts1区别

    而 Struts2 Action 可以通过依赖注入进行初始化和测试,提高了测试的便利性。 5. **输入数据的处理**: - Struts1 使用 ActionForm 来捕获用户输入,ActionForm 必须继承基类,有时会造成额外的类定义。Struts2 则...

    struts2的复习

    10. 集成Spring:Struts2可以通过Struts2-Spring-plugin插件与Spring框架无缝集成,实现依赖注入,便于管理Action对象及其协作对象。 八、异常处理 11. 异常处理:Struts2提供了全局和局部的异常处理机制,开发者...

    struts2 in action

    书中会讨论如何防止常见的Web攻击,如SQL注入和跨站脚本攻击(XSS),以及如何使用Struts2的安全插件来加强应用的安全性。 总的来说,《Struts2 in Action》这本书覆盖了从基础到进阶的Struts2知识,是Java Web开发者...

    Struts2的Action中获得request response session几种方法

    Struts2支持依赖注入(Dependency Injection, DI),可以通过配置让框架自动将request、response、session等对象注入到Action中。这通常在Action的定义中通过注解或配置文件指定。 #### 示例代码: ```java import...

    Struts2单元测试

    2. **Interceptor测试**:拦截器是Struts2中强大的功能,可以在请求处理流程中插入自定义逻辑。测试拦截器需要确保它们在正确的时间点被调用,以及它们如何影响Action的执行流程。通过Mockito或EasyMock等工具,可以...

    struts2入门教程及struts2集成spring

    4. **Action类设计**:Action类需要实现Spring的`ApplicationContextAware`接口,以便在Struts2中获取Spring的ApplicationContext,从而能够注入其他服务。例如: ```java public class ExampleAction implements ...

    Struts2知识点

    拦截器可以通过在 struts.xml 文件中配置或在 Action 中通过注入拦截器来实现。 8. Struts2 的国际化和本地化: Struts2 的国际化和本地化可以通过使用资源文件来实现。资源文件可以存放在类路径下或在 Web 项目的...

Global site tag (gtag.js) - Google Analytics