项目之spring+struts结合
公司有两条开发线,一条是老项目,使用的struts;一条线是新的项目开发,用的是spring,但是有一部分开发业务的开发是可以共有的,所以就有了下面的同一个项目里面既有stuts模块,又有spring的模块。下面我们就来看一下是怎么实现的这一过程吧:
这张图是spring、struts所需要的代码部分
文章图片
项目结构.pic_hd.jpg 我们再来看看web.xml是怎么加载的
mybatis
contextConfigLocationclasspath*:spring/spring.xml,classpath*:spring/spring-mybatis.xml
字符集过滤器
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
字符集编码 encodingUTF-8
encodingFilter
/
spring监听器
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
spring mvc servlet
springMvc
org.springframework.web.servlet.DispatcherServlet
spring mvc 配置文件 contextConfigLocationclasspath*:spring/spring-mvc.xml
1 springMvc
/ action
owen.struts.action.OwenJavaActionServlet
config/WEB-INF/struts-config.xml
debug3
detail3
0 action
*.do
/index.jsp
15
配置文件中有一个类owen.struts.action.OwenJavaActionServlet,这个类的作用是加载struts的配置文件
package owen.struts.action;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.config.ForwardConfig;
import org.apache.struts.config.ModuleConfig;
import owen.utils.FileSearch;
public class OwenJavaActionServlet extends ActionServlet {private static final long serialVersionUID = 1L;
public void init() throws ServletException {
try {
initInternal();
initOther();
initServlet();
getServletContext().setAttribute(
"org.apache.struts.action.ACTION_SERVLET", this);
initModuleConfigFactory();
ModuleConfig moduleConfig = initModuleConfig("", this.config);
initModuleMessageResources(moduleConfig);
initModuleDataSources(moduleConfig);
initModulePlugIns(moduleConfig);
moduleConfig.freeze();
String path = getServletContext().getRealPath("WEB-INF");
FileSearch obj = new FileSearch();
StringBuffer sb = new StringBuffer();
String start = "struts-config-";
String end = ".xml";
obj.getFilePath(sb, path, start, end);
String[] filePath = sb.toString().split(";
");
String tmp = "";
Map map = new HashMap();
for (int i = 0;
i < filePath.length;
i++) {
if (filePath[i] == null || filePath[i].equals(""))
continue;
String tmpPath = "\\WEB-INF" + filePath[i].replace(path, "");
String prefix = tmpPath.substring(tmpPath.indexOf(start),
tmpPath.indexOf(end));
prefix = "/" + prefix.replace(start, "");
tmpPath = tmpPath.replace("\\", "/");
//System.out.println("prefix:"+prefix);
//System.out.println("prefix2:"+prefix.replace(start, ""));
//System.out.println("tmppath:"+tmpPath);
if (map.get(prefix) != null) {
tmp = String.valueOf(map.get(prefix));
map.put(prefix, tmp + "," + tmpPath);
} else {
map.put(prefix, tmpPath);
}
}
Entry entry = null;
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
entry = (Entry) iter.next();
log.info("load xml file " + entry.getValue().toString());
moduleConfig = initModuleConfig(String.valueOf(entry.getKey()),
String.valueOf(entry.getValue()));
initModuleMessageResources(moduleConfig);
initModuleDataSources(moduleConfig);
initModulePlugIns(moduleConfig);
moduleConfig.freeze();
}initModulePrefixes(getServletContext());
destroyConfigDigester();
} catch (UnavailableException ex) {
throw ex;
} catch (Throwable t) {
t.printStackTrace();
log.error("Unable to initialize Struts "
+ "ActionServlet due to an "
+ "unexpected exception or error " + "thrown, so marking "
+ "the servlet as unavailable."
+ "Most likely, this is due to an "
+ "incorrect or missing library dependency.", t);
throw new UnavailableException(t.getMessage());
}
}
}
主要是依赖这些配置文件
那如果想要了解整个源码,已经上传到git了,地址为:
https://gitee.com/toLeftBest/owen-java-spring-struts.git
【项目之spring+struts结合】项目运行之后的样子
文章图片
struts和spring.pic_hd.jpg
推荐阅读
- java架构之路-(微服务专题)ribbon的基本使用和内部算法的自我实现
- 他山之石2(氓之妻放弃氓以后)
- 力扣之数组中数字出现的次数 II
- 创投日报|钛媒体Pro创投日报:7月1日收录投融资项目33起
- 投稿|透过华为军团看科技之变(六):智慧公路
- 投稿|从埃安车主维权,看新势力车企用户运营之难
- #芳疗随记#之~“精油的来源”——精油到底是什么(植物为什么要制造它?)
- iOS|iOS - 本地化
- 【学习】让我变成更好的自己/我的青椒学习之旅
- 索妆护肤小秘诀之让肌肤换个胃口