<bean id="requestMappingHandlerMappingExt" class="com.zwxu.init.RequestMappingHandlerMappingExt">
<property name="urlPathHelper" ref="urlPathHelperExt" />
<property name="order" value="0" />
</bean>
<bean id="urlPathHelperExt" class="com.zwxu.UrlPathHelperExt">
</bean>
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
public class RequestMappingHandlerMappingExt extends RequestMappingHandlerMapping {
private UrlPathHelperExt urlPathHelper;
public UrlPathHelperExt getUrlPathHelper() {
return urlPathHelper;
}
public void setUrlPathHelper(UrlPathHelperExt urlPathHelper) {
this.urlPathHelper = urlPathHelper;
}
@Override
protected HandlerMethod getHandlerInternal(HttpServletRequest request) throws Exception {
String lookupPath = urlPathHelper.getLookupPathForRequest(request);
HandlerMethod handlerMethod = lookupHandlerMethod(lookupPath, request);;
return (handlerMethod != null ? handlerMethod.createWithResolvedBean() : null);
}
}
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.util.UrlPathHelper;
//实际接口地址为test 改写为do
public class UrlPathHelperExt extends UrlPathHelper{
public String getLookupPathForRequest(HttpServletRequest request) {
String url = request.getServletPath();
if(url.equals("/do")) {
url = "/test";
return url;
//return url + "/vnull"; 此时返回地址/test/vnull,但不能访问,因为/do不在路由列表里
}
//此时返回地址/test/vnull,但仍能访问,因为通过spring加载的路由列表找到了/test路由
return url + "/vnull";
}
}