spring 和struts 的结合两种方式

他们的结合主要就是配置接个文件 web.xml struts-config。xml  application。xml
一。
1.web.xml
添加spring的支持
<display-name>sdf</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

2. 加载applications。xml
写一个类
public class AppContext {

  private static AppContext instance;

  private AbstractApplicationContext appContext;

  public synchronized static AppContext getInstance() {
    if (instance == null) {
      instance = new AppContext();
    }
    return instance;
  }

  private AppContext() {
    this.appContext = new ClassPathXmlApplicationContext(
        "/applicationContext.xml");
  }

  public AbstractApplicationContext getAppContext() {
    return appContext;
  }
}
加载    applicationContext
写个基类  加载需要的类

  protected IUserInfoService getUserInfoService() {
    return (IUserInfoService) AppContext.getInstance().getAppContext().getBean("userInfoService");
  }
二。
stuts-config。xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
    <form-beans>
        <form-bean name="adminForm" type="com.site.form.AdminForm" />
        <form-bean name="newsForm" type="com.site.form.NewsForm" />
        <form-bean name="usersForm" type="com.site.form.UsersForm" />
        <form-bean name="resourceForm"
            type="com.site.form.ResourceForm" />

    </form-beans>

    <global-exceptions />
    <global-forwards />
    <action-mappings>
       
        <action path="/download" type="cn.site.action.DownloadAction" />
    </action-mappings>



    <!-- Spring的请求委托代理器 -->
    <controller
        processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />
    <message-resources parameter="com.site.struts.ApplicationResources" />

    <!-- Spring的应用上下文的Struts插件  -->
    <plug-in
        className="org.springframework.web.struts.ContextLoaderPlugIn">
        <set-property property="contextConfigLocation"
            value="/WEB-INF/applicationContext.xml" />
    </plug-in>
</struts-config>

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <!-- 设置spring监听 -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener

        </listener-class>
    </listener>

    <!-- 设置spring配置文件路径 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>



    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>
            org.apache.struts.action.ActionServlet
        </servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>3</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>


在application。xml
<bean name="/resource" class="com.site.action.ResourceAction">   
        <property name="resourceService">
            <ref bean="resourceService"/>
        </property>
    </bean>
通过代理将struts的请求转发到spring 注意/resource的名字和struts要一致


三。加载applications的配置文件有以下几种方式

spring 中加载xml配置文件的方式,好像有3种, xml是最常见的spring 应用系统配置源。Spring中的几种容器都支持使用xml装配bean,包括:
    XmlBeanFactory ,
    ClassPathXmlApplicationContext ,
    FileSystemXmlApplicationContext ,
    XmlWebApplicationContext

    1:XmlBeanFactory 引用资源
    Resource resource = new ClassPathResource("appcontext.xml");
    BeanFactory factory = new XmlBeanFactory(resource);
   
    2:ClassPathXmlApplicationContext  编译路径
    ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");
    ApplicationContext factory=new ClassPathXmlApplicationContext("appcontext.xml");   // src目录下的
    ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml");   // src/conf 目录下的
    ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml");
   
    3 : 用文件系统的路径
    ApplicationContext factory=new FileSystemXmlApplicationContext("src/appcontext.xml");
    //使用了  classpath:  前缀,作为标志,  这样,FileSystemXmlApplicationContext 也能够读入classpath下的相对路径
    ApplicationContext factory=new FileSystemXmlApplicationContext("classpath:appcontext.xml");
    ApplicationContext factory=new FileSystemXmlApplicationContext("file:G:/Test/src/appcontext.xml");
    ApplicationContext factory=new FileSystemXmlApplicationContext("G:/Test/src/appcontext.xml");

   4: XmlWebApplicationContext   是专为Web工程定制的。
    ServletContext servletContext = request.getSession().getServletContext();
    ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值