`
xinyoulinglei
  • 浏览: 123624 次
社区版块
存档分类
最新评论

struts2多个配置文件的应用

    博客分类:
  • java
阅读更多
<!-- 定义Struts2的核心Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
com.huawei.cmclient.common.sys.InitStruts2Filter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
==================================================================================================
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;

import org.apache.struts2.dispatcher.Dispatcher;
import org.apache.struts2.dispatcher.ng.ExecuteOperations;
import org.apache.struts2.dispatcher.ng.PrepareOperations;
import org.apache.struts2.dispatcher.ng.filter.FilterHostConfig;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;

import com.huawei.cmclient.common.log.IDebugLog;
import com.huawei.cmclient.common.log.LogFactory;


/**重载Struts2核心控制器
* @version Jul 14, 2011
* @see InitStruts2Filter
* @since
*/
public class InitStruts2Filter
    extends StrutsPrepareAndExecuteFilter
{

    /**
     * 日志对象
     */
    private static IDebugLog LOG = LogFactory.getLog(InitStruts2Filter.class);

    /**初始化
     * @param filterConfig
     * @see
     */
    public void init(FilterConfig filterConfig)
        throws ServletException
    {
        LOG.debug("Enter Func [ init(FilterConfig filterConfig) ]");
        InitStruts2Operations init = new InitStruts2Operations();
        try
        {
            FilterHostConfig config = new FilterHostConfig(filterConfig);
            init.initLogging(config);
            Dispatcher dispatcher = init.initDispatcher(config);
            init.initStaticContentLoader(config, dispatcher);

            this.prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher);
            this.execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);
            this.excludedPatterns = init.buildExcludedPatternsList(dispatcher);

            postInit(dispatcher, filterConfig);
        }
        finally
        {
            init.cleanup();
            LOG.info("initialized struts2 integration successfully !");
        }

    }
}
=====================================================================import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.struts2.dispatcher.Dispatcher;
import org.apache.struts2.dispatcher.ng.HostConfig;
import org.apache.struts2.dispatcher.ng.InitOperations;
import com.huawei.cmclient.common.log.IDebugLog;
import com.huawei.cmclient.common.log.LogFactory;
/**
* Struts2核心控制器初始化类
* @version Jul 15, 2011
* @see InitStruts2Operations
* @since
*/
public class InitStruts2Operations
    extends InitOperations
{

    /**
     * 日志对象
     */
    private static IDebugLog LOG = LogFactory.getLog(InitStruts2Operations.class);

    /**创建核心控制器
     * @param filterConfig
     * @return
     * @see
     */
    private Dispatcher createDispatcher(HostConfig hostConfig)
    {
        LOG.debug("Enter Func [ createDispatcher(HostConfig hostConfig) ]");
        Map<String, String> params = new HashMap<String, String>();
        String name;
        String value;
        for (Iterator< ? > e = hostConfig.getInitParameterNames(); e.hasNext(); params.put(name,
            value))
        {
            name = (String) e.next();
            value = hostConfig.getInitParameter(name);
        }
        parseStrutsConfig(hostConfig, params);
        return new Dispatcher(hostConfig.getServletContext(), params);

    }

    /**初始化核心控制器
     * @param filterConfig
     * @return
     * @see
     */
    public Dispatcher initDispatcher(HostConfig hostConfig)
    {
        LOG.debug("Enter Func [ initDispatcher(HostConfig hostConfig) ]");
        Dispatcher dispatcher = createDispatcher(hostConfig);
        dispatcher.init();
        return dispatcher;
    }

    /**获取所有配置文件的路径
     * @param m
     * @see
     */
    private void parseStrutsConfig(HostConfig hostConfig, Map<String, String> m)
    {
        LOG.debug("Enter Func [ parseStrutsConfig(HostConfig hostConfig, Map<String, String> m) ]");
        String home = hostConfig.getServletContext().getRealPath("/");
        home.replace("//", "/");
        if (home.startsWith("/"))
        {
            home = home + "/";
        }
        StringBuffer strutsPath = new StringBuffer("struts-default.xml,struts-plugin.xml");
        getStrutsPath(new File(home), strutsPath);
        m.put("config", strutsPath.toString());
    }

    /**获取工程下所有的struts配置文件
     * @param file
     * @param pathBuffer
     * @see
     */
    private void getStrutsPath(File file, StringBuffer pathBuffer)
    {
        LOG.debug("Enter Func [ getStrutsPath(File file, StringBuffer pathBuffer) ]");
        if (null == file)
        {
            LOG.warn("the struts config files not exist !");
            return;
        }
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++)
        {
            File f = files[i];
            if (f.isDirectory())
            {
                getStrutsPath(f, pathBuffer);
                continue;
            }
            String fName = files[i].getName();
            if (fName.endsWith("struts.xml"))
            {
                pathBuffer.append(",");
                pathBuffer.append(files[i].getAbsolutePath());
            }
        }
    }

}
分享到:
评论

相关推荐

    struts2 为应用指定多个配置文件.rar

    NULL 博文链接:https://llxhna.iteye.com/blog/1067851

    Struts2.1.8中为应用指定多个配置文件

    Struts2.1.8中为应用指定多个配置文件 黎活明老师的视频

    Struts2属性文件详解

    该属性指定Struts 2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开.该属性的默认值为struts- default.xml,struts-plugin.xml,struts.xml,看到该属性值,所以...

    struts2+spring3配置常见问题

    本文主要描述在配置过程中出现的一些问题,并没有详细描述如何配置,其相关步骤请自行查阅。本文主要讲解如下几个问题: 将struts.xml文件放到指定...包含多个sping配置文件; 实现struts1中的; struts2打印错误堆栈;

    Struts2\constant应用

    该属性指定Struts 2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。 该属性的默认值为struts-default.xml,struts-plugin.xml,struts.xml,看到该属性...

    uploadify3与struts2结合实现有进度条文件上传实例

    但在工作项目中碰到了 但原因在这里记录下:web应用会存在一个session 而uploadify上传时也会产生一个新的session 导致在后台判断session是否失效时获取的session为null 于是就有了请求路径后面的配置; 2 清空队列...

    struts2 详解文档

    为应用指定多个配置文件 动态方法调用和使用通配符定义action 请求参数接收 自定义类型转换器 全局类型转换器 访问或添加几个属性 文件上传 多文件上传 自定义拦截器 对Action中所有方法进行输入校验 对...

    spring多配置文件(struts+hibernate+spring)

    这是一个struts+hibernate+spring得完成实例,大部分ssh实例都是在一个配置文件里进行hibernate+spring+struts的配置。我这个很清楚的分成了四个配置文件。非常适合大型项目的开发学习!

    struts2基本例子

    struts2基本例子,包括应用多个配置文件等等。

    Struts2的配置文件基础

    每个包就是多个Action、多个拦截器、多个拦截器引用的集合。在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置。它的常用属性有:name:必填属性,用来指定包的名字。extends:可选...

    深入浅出Struts2(附源码)

    12.5 上传多个文件示例 227 12.6 小结 230 第13章文件的下载 231 13.1 文件下载概述 231 13.2 Stream结果类型 232 13.3 文件下载功能的编程实现 235 13.4 小结 238 第14章提高Struts应用程序的安全性 239 ...

    java struts_java_struts_

    McClanahan编写,并且在2000 年的时候捐献给了ASF,目前,有很多组织和个人参与Struts 框架的开发,使得Struts保持高速成长,同时,利用Struts开发的应用越来越多,使其成为web 应用MVC 模式中VC 部分事实上的标准...

    02_张孝祥09年Struts视频_文件上传单元

    struts文件上传单元目录列表: 01.文件上传的网页设置与数据格式分析 02.阐释软件分层的设计思想 03.文件上传组件的实现原理与应用分析 04.用struts获取上传文件名和解决...15.修正从配置文件中读取文件存储目录的缺陷

    11_张孝祥09年Struts视频_文件上传单元

    struts文件上传单元目录列表: 01.文件上传的网页设置与数据格式分析 02.阐释软件分层的设计思想 03.文件上传组件的实现原理与应用分析 04.用struts获取上传文件名和解决...15.修正从配置文件中读取文件存储目录的缺陷

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    12.6.15 编写Struts的配置文件struts-config.xml 12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1...

    基于Struts2, Spring, Hibernate的整合实例设计源码

    基于Struts2, Spring, Hibernate的整合实例设计源码,该项目包含27个文件,主要文件类型...该项目是一个基于Struts2, Spring, Hibernate的整合实例设计源码,可能涉及用户界面设计、应用逻辑实现、数据存储等多个方面。

    JSP程序设计课件包含Hibernate,Struts的介绍

    Struts.xml是Struts 2的必须配置文件,放在WEB-INF/classes下面。 12.Struts Web应用框架是什么 它是开源框架:Struts 是 Apache 软件基金会资助的一个为开发基于MVC模式的Web应用而设计的一个开源框架.Struts框架中...

Global site tag (gtag.js) - Google Analytics