struts1,2如何实现在web启动时加载配置文件
各位大侠,我想知道,Struts 1和2 是怎么实现在WEB服务启动时就执行加载配置文件的方法。
1是Servlet Servlet并没有配置start-up-load,但却能在服务启动时加载配置文件。
2是Filter 也没有在web.xml中配置关于启动就加载某个类,但也是在WEB服务启动时就加载了配置文件,
我想知道他们是如何实现的。
麻烦各位大神讲述稍微详细点。
------解决方案--------------------看看代码,有没有显示的在代码里启动了。
------解决方案--------------------struts2的核心Filter就能完成加载工作,start-up-load只是显示的提醒什么时候加载。
------解决方案--------------------想知道具体的 只有去看源码 Struts是开源的 你可以弄到源码 自己学习下就好了
------解决方案--------------------打开web.xml里单单配置了一个struts2的核心Filter
public void init(FilterConfig filterConfig) throws ServletException {
InitOperations init = new InitOperations();
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();
}
}
有个init方法。
------解决方案--------------------额 我不是太懂这些 楼主要是看懂了记得回来分享下啊
------解决方案--------------------你在web.xml里面配置struts时,struts会去查找struts的默认配置文件(除非你把struts的配置文件名改变,那么你就要在web.xml里配置struts时指明struts配置文件的目录)
------解决方案--------------------对于Struts2框架而言,需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载Struts2框架。
------解决方案--------------------struts.xml放到WEB-INF/conf/下了
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,../conf/struts.xml</param-value>
</init-param>
</filter>
------解决方案--------------------上网查struts2的配置 相关资料上面有解释
------解决方案--------------------通常大多数Servlet是在用户第一次请求的时候由应用服务器创建并初始化