其实就是tomcat加载了两次应用。
修改conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<Context path="/war包名称" docBase="war包名称" debug="0" reloadable="true" />
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
Host.appBase Context .path Context .docBase 这三个按照如上的方法设置即可。
改完以后不支持自动跳转
改之前可以通过ip:port跳转到ip:port/war包名称,但是改以后就不能了,如果想跳,可以把webapps/ROOT下面的文件全部删除,然后创建index.html,文件内容如下
<html>
<script>
window.onload = function(){
var url = window.location.href;
console.log("当前url:" + url);
if(url.indexOf("/war包名称") === -1){
console.log("url不包含/war包名称,需要跳转");
var ipEndIndex = find(url,"/",3) - 1;
console.log("ip结束下标:" + ipEndIndex);
if(ipEndIndex < 0){
ipEndIndex = url.length - 1;
}
console.log("ip结束下标:" + ipEndIndex);
var toUrl = url.substring(0,ipEndIndex + 1) + "/war包名称";
console.log("url跳转:" + toUrl);
window.location.href = toUrl;
}else{
console.log("url包含/war包名称,不需要跳转");
}
}
function find(str,cha,num){
var x=-1;
for(var i=0;i<num;i++){
x=str.indexOf(cha,x+1);
}
return x;
}
</script>
<html>
将“war包名称”替换为你的war包名称即可实现通过ip:port跳转到ip:port/war包名称