欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

一个根据URI定位到spring mvc映射代码工具类,urimvc,可以方便是根据URI定位

来源: javaer 分享于  点击 41409 次 点评:208

一个根据URI定位到spring mvc映射代码工具类,urimvc,可以方便是根据URI定位


可以方便是根据URI定位到springmvc的controller代码,```java@Controller@RequestMapping("/admin/util")public class SystemController { private static final Logger log = LoggerFactory.getLogger(SystemController .class);

@RequestMapping(value = "/findUriMapMethod.do")@ResponseBodypublic 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 &amp;&amp; !"".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

相关栏目:

用户点评