常用的方案:修改tomcat的server.xml文件
<Host name="localhost" appBase="aaa"
unpackWARs="true" autoDeploy="true">
<Context docBase="/home/tomcat_7.0.92/webapps/name" path="" reloadable="false"/>
<Context docBase="/home/tomcat_7.0.92/webapps/name" path="/name" reloadable="true"/>
</Host>
问题:项目会加载两次
通过spring mvc实现方案:
1、修改tomcat的server.xml文件
<Host name="localhost" appBase="aaa"
unpackWARs="true" autoDeploy="true">
<Context docBase="/home/tomcat_7.0.92/webapps/name" path="" reloadable="false"/>
</Host>
作用:使所有的请求都转发到name项目中
2、重写UrlPathHelper的getLookupPathForRequest方法
package com.hundsun.itn.util.spring;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.util.UrlPathHelper;
public class MyUrlPathHelper extends UrlPathHelper {
public String getLookupPathForRequest(HttpServletRequest request) {
String url = super.getLookupPathForRequest(request);
if (!url.startsWith("/name")) { //name改为你自己的项目名
return url;
}
return url.replaceFirst("/name", ""); //name改为你自己的项目名
}
}
该方法是spring mvc获取request请求中url的方法,如果url中有项目名称,则将项目名称(name)去掉
3、修改spring mvc配置文件
<bean id="myUrlPathHelper" class="com.hundsun.itn.util.spring.MyUrlPathHelper"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="urlPathHelper" ref="myUrlPathHelper" />
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!-- <mvc:annotation-driven /> -->
作用:配置RequestMappingHandlerMapping使用自定义的myUrlPathHelper
注意:如果之前使用的是<mvc:annotation-driven />,要将其去掉,手动配置RequestMappingHandlerMapping和RequestMappingHandlerAdapter