zoukankan      html  css  js  c++  java
  • Spring 如何在 WEB 应用中使用

    1. Spring 如何在 WEB 应用中使用 ?

    1). 需要额外加入的 jar 包:

    spring-web-4.0.0.RELEASE.jar
    spring-webmvc-4.0.0.RELEASE.jar

    2). Spring 的配置文件, 没有什么不同

    3). 如何创建 IOC 容器 ?

    ①. 非 WEB 应用在 main 方法中直接创建
    ②. 应该在 WEB 应用被服务器加载时就创建 IOC 容器:

    在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器.

    ③. 在 WEB 应用的其他组件中如何来访问 IOC 容器呢 ?

    在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器后, 可以把其放在
    ServletContext(即 application 域)的一个属性中.

    ④. 实际上, Spring 配置文件的名字和位置应该也是可配置的! 将其配置到当前 WEB 应用的初始化参数中较为合适.

    4). 在 WEB 环境下使用 Spring

    ①. 需要额外加入的 jar 包:

    spring-web-4.0.0.RELEASE.jar
    spring-webmvc-4.0.0.RELEASE.jar

    ②. Spring 的配置文件, 和非 WEB 环境没有什么不同

    ③. 需要在 web.xml 文件中加入如下配置:

    <!-- 配置 Spring 配置文件的名称和位置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!-- 启动 IOC 容器的 ServletContextListener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    2. Spring 如何整合 Struts2 ?

    1). 整合目标 ? 使 IOC 容器来管理 Struts2 的 Action!

    2). 如何进行整合 ?

    ①. 正常加入 Struts2

    ②. 在 Spring 的 IOC 容器中配置 Struts2 的 Action
    注意: 在 IOC 容器中配置 Struts2 的 Action 时, 需要配置 scope 属性, 其值必须为 prototype

    <bean id="personAction"
        class="com.atguigu.spring.struts2.actions.PersonAction"
        scope="prototype">
        <property name="personService" ref="personService"></property>   
    </bean>

    ③. 配置 Struts2 的配置文件: action 节点的 class 属性需要指向 IOC 容器中该 bean 的 id

    <action name="person-save" class="personAction">
        <result>/success.jsp</result>
    </action>

    ④. 加入 struts2-spring-plugin-2.3.15.3.jar

    3). 整合原理: 通过添加 struts2-spring-plugin-2.3.15.3.jar 以后, Struts2 会先从 IOC 容器中
    获取 Action 的实例.

    if (appContext.containsBean(beanName)) {
        o = appContext.getBean(beanName);
    } else {
        Class beanClazz = getClassInstance(beanName);
        o = buildBean(beanClazz, extraContext);
    }

  • 相关阅读:
    战略威慑 51nod提高组试题
    赛艇表演 51nod提高组模拟试题
    Emiya家今天的饭 NOIP2019 (CSP?) 类DP好题 luoguP5664
    华容道题解 NOIP2013 思路题!
    (板子) 最小生成树 买礼物 luogu P1194
    (板子)并查集(递归+循环)
    校园网络 luogu P2812 (又是强联通)
    货车运输 noip2013 luogu P1967 (最大生成树+倍增LCA)
    Codeforces Round #684 (Div. 2)
    Codeforces Round #683 (Div. 2, by Meet IT)
  • 原文地址:https://www.cnblogs.com/qq-757617012/p/4296323.html
Copyright © 2011-2022 走看看