一个根据URI定位到spring mvc映射代码工具类
发布时间:2020-05-24 15:55:01 所属栏目:Java 来源:互联网
导读:一个根据URI定位到spring mvc映射代码工具类
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 可以方便是根据URI定位到spring mvc的controller代码,@Controller
@RequestMapping("/admin/util")
public class SystemController {
private static final Logger log = LoggerFactory.getLogger(SystemController .class);
@RequestMapping(value = "/findUriMapMethod.do")
@ResponseBody
public String findUriMapMethod(HttpServletRequest request,HttpServletResponse response) {
final Env env = EnvUtils.getEnv();
final String uri = env.param("uri",request.getRequestURI());
return getHandler(request,uri,"GET");
}
private String getHandler(HttpServletRequest request,final String uri,String method) {
final Env env = EnvUtils.getEnv();
final String fMethod = method;
String[] beanNames = env.getApplicationContext().getBeanNamesForType(RequestMappingHandlerMapping.class);
log.info("RequestMappingHandlerMapping: {}",Arrays.toString(beanNames));
HttpServletRequestWrapper httpServletRequestWrapper = new HttpServletRequestWrapper(request) {
@Override
public String getRequestURI() {
/*String paramUri = super.getParameter("uri");
if(paramUri != null && !"".equals(paramUri.trim())) {
return paramUri;
}*/
return uri;
}
@Override
public StringBuffer getRequestURL() {
return new StringBuffer(super.getRequestURL().toString()
.replace(super.getRequestURI(),uri));
}
@Override
public String getServletPath() {
return super.getServletPath().replace(super.getRequestURI(),uri);
}
@Override
public String getMethod() {
if(fMethod == null || "".equals(fMethod)) {
return super.getMethod();
}
return fMethod;
}
};
StringBuilder uriMapMethod = new StringBuilder();
uriMapMethod.append(httpServletRequestWrapper.getRequestURI()).append(": [");
if(beanNames != null) {
for(String beanName : beanNames) {
log.info("beanName: {} ",beanName);
RequestMappingHandlerMapping mapping = env.getBean(beanName,RequestMappingHandlerMapping.class);
try {
HandlerExecutionChain chain = mapping.getHandler(httpServletRequestWrapper);
if(chain != null) {
Object handler = chain.getHandler();
System.out.println(handler);
if(handler instanceof HandlerMethod) {
HandlerMethod hm = (HandlerMethod)handler;
log.info("{}:{}",hm.getBeanType().getName(),hm);
uriMapMethod.append(hm);
} else if(handler instanceof org.springframework.web.servlet.mvc.Controller) {
org.springframework.web.servlet.mvc.Controller hm = (org.springframework.web.servlet.mvc.Controller)handler;
Class<? extends org.springframework.web.servlet.mvc.Controller> hmClass = hm.getClass();
log.info("{}:{}",hmClass.getName(),hmClass.getDeclaredMethod("handleRequest",HttpServletRequest.class,HttpServletResponse.class));
uriMapMethod.append(hmClass.getDeclaredMethod("handleRequest",HttpServletResponse.class));
} else {
uriMapMethod.append(handler.getClass().getName());
}
break;
}
} catch (HttpRequestMethodNotSupportedException e) {
return getHandler(httpServletRequestWrapper,"POST");
} catch (Exception e) {
log.error("get uri mapping error.",e);
}
/*Map<RequestMappingInfo,HandlerMethod> mapMethods = mapping.getHandlerMethods();
if(mapMethods != null) {
Iterator<Entry<RequestMappingInfo,HandlerMethod>> iter = mapMethods.entrySet().iterator();
while (iter.hasNext()) {
Entry<RequestMappingInfo,HandlerMethod> entry = iter.next();
RequestMappingInfo key = entry.getKey();
HandlerMethod hm = (HandlerMethod)entry.getValue();
Method method = hm.getMethod();
log.info("{} : {}->{}",key.getPatternsCondition(),key,hm);
}
}*/
}
}
return uriMapMethod.append("]").toString();
}
} 来自:http://my.oschina.net/u/565351/blog/372300
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
