struts2多个配置文件的应用

本文详细介绍了Struts2核心控制器的初始化过程,包括核心Filter的定义、初始化方法及Struts2核心控制器的初始化类实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!-- 定义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());
}
}
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值