Spring4.3.8学习之 与 Struts2 整合[四]

如果转载文章请注明出处, 谢谢 !
本系列文章是学习完 Spring4.3.8 后的详细整理, 如果有错误请向我指明, 我会及时更正~

Spring4.3.8

Spring4.3.8学习[一]
Spring4.3.8学习[二]
Spring4.3.8学习[三]

5. Spring 与 Struts2 整合

先写一个经典的三层架构

public interface UserDao {
    public void add();
}

--------------

public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println("添加成功~");
    }
}

---------------

public interface UserService {
    public void register();
}

---------------
public class UserServiceImpl implements UserService {
    private UserDao dao;     
    public void setDao(UserDao dao) { 
        this.dao = dao;
    }

    @Override
    public void register() {
        dao.add();
    }
}

applicationContext.xml:




    

在应用启动时默认加载 spring 的 applicationContext 配置文件, 所以在 web.xml 中进行注册监听器


    contextConfigLocation
    classpath:applicationContext.xml


    org.springframework.web.context.ContextLoaderListener


这个 listener 在 spring-web jar 包中,如果没有需要导入 jar 包

5.1 方式一

动作类还是 Struts2 负责管理, 只向 spring 容器要service 实例

public class UserAction extends ActionSupport {
    // 需要和 spring 中的 bean 名字保持一致!
    private UserService userService;

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public String register() {
        userService.register();
        return SUCCESS;
    }
}

struts.xml:


    
        /success.jsp
    

但是这时候访问 register , 会出现空指针, 因为 userService 不存在, 它是由 spring 的 BeanFactory 管理的,而 userAction 是由 ObjectFactory 管理的, ObjectFactory目前不能够从 Spring 容器获取userService.

解决办法:
添加 struts2和spring 的插件, 在 struts2的包中: struts2/lib/struts2-spring-plugin.jar

在struts.xml 配置文件中替换类


                    

你可能感兴趣的:(Spring4.3.8学习之 与 Struts2 整合[四])