一个根据URI定位到spring mvc映射代码工具类
发布时间:2020-12-15 00:15:26 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 可以方便是根据URI定位到spring mvc的controller代码, @Controller@RequestMapping("/admin/util")public class SystemController { private static
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
可以方便是根据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 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读