zl程序教程

您现在的位置是:首页 >  后端

当前栏目

一个根据URI定位到spring mvc映射代码工具类详解编程语言

2023-06-13 09:20:23 时间
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", HttpServletRequest.class, HttpServletResponse.class)); } else { uriMapMethod.append(handler.getClass().getName()); break; } catch (HttpRequestMethodNotSupportedException e) { return getHandler(httpServletRequestWrapper, uri, "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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8021.html

cjava