亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

SpringMVC項目中獲取所有URL到Controller Method的映射

2019-11-14 20:59:33
字體:
來源:轉載
供稿:網友
SPRingMVC項目中獲取所有URL到Controller Method的映射

Spring是一個很好很強大的開源框架,它就像是一個容器,為我們提供了各種Bean組件和服務。對于MVC這部分而言,它里面實現了從Url請求映射控制器方法的邏輯處理,在我們平時的開發工作中并不需要太多的理會這個Url是怎么和控制器中的方法建立映射的,一切都由Spring MVC幫我們搞定了。

但是我今天在做SDK工程的時候,突然產生一個想法:能否把我項目中的所有Url和Method的映射信息打印出來?以便我一眼就看出我已經完成了那些API接口開發,這些方法需要什么參數。就像下圖所示:

image_thumb5

有了想法就要用行動,第一步肯定是要去看看別人是否已經解決了這個問題啦。查了半天的資料,倒是發現有幾個相似的問題,但都沒有滿意的答案,只好自己調試Spring,跟蹤它的處理步驟,終于讓我發現了一個可行的辦法,不多說,直接貼代碼:

1、首先建立一個類來保存我想要的東東

private class RequestToMethodItem    {        public String controllerName;        public String methodName;        public String requestType;        public String requestUrl;        public Class<?>[] methodParmaTypes;        public RequestToMethodItem(String requestUrl, String requestType, String controllerName, String requestMethodName, 
Class<?>[] methodParmaTypes)        {            this.requestUrl = requestUrl;            this.requestType = requestType;            this.controllerName = controllerName;            this.methodName = requestMethodName;            this.methodParmaTypes = methodParmaTypes;        }    }

2、然后就是收集信息創建對象啦

@RequestMapping(value = "/index", method = RequestMethod.GET)    public ModelAndView index(HttpServletRequest request)    {        ServletContext servletContext = request.getsession().getServletContext();        if (servletContext == null)        {            return null;        }        WebapplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);        //請求url和處理方法的映射        List<RequestToMethodItem> requestToMethodItemList = new ArrayList<RequestToMethodItem>();        //獲取所有的RequestMapping        Map<String, HandlerMapping> allRequestMappings = BeanFactoryUtils.beansOfTypeIncludingAncestors(appContext, 
HandlerMapping.class, true, false);        for (HandlerMapping handlerMapping : allRequestMappings.values())        {            //本項目只需要RequestMappingHandlerMapping中的URL映射            if (handlerMapping instanceof RequestMappingHandlerMapping)            {                RequestMappingHandlerMapping requestMappingHandlerMapping = (RequestMappingHandlerMapping) handlerMapping;                Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingHandlerMapping.getHandlerMethods();                for (Map.Entry<RequestMappingInfo, HandlerMethod> requestMappingInfoHandlerMethodEntry : handlerMethods.entrySet())                {                    RequestMappingInfo requestMappingInfo = requestMappingInfoHandlerMethodEntry.getKey();                    HandlerMethod mappingInfoValue = requestMappingInfoHandlerMethodEntry.getValue();                    RequestMethodsRequestCondition methodCondition = requestMappingInfo.getMethodsCondition();                    String requestType = SetUtils.first(methodCondition.getMethods()).name();                    PatternsRequestCondition patternsCondition = requestMappingInfo.getPatternsCondition();                    String requestUrl = SetUtils.first(patternsCondition.getPatterns());                    String controllerName = mappingInfoValue.getBeanType().toString();                    String requestMethodName = mappingInfoValue.getMethod().getName();                    Class<?>[] methodParamTypes = mappingInfoValue.getMethod().getParameterTypes();                    RequestToMethodItem item = new RequestToMethodItem(requestUrl, requestType, controllerName, requestMethodName, 
methodParamTypes);                    requestToMethodItemList.add(item);                }                break;            }        }        return new ModelAndView("index").addObject("MethodList", requestToMethodItemList);    }

這一步我需要說明一下,我這里只用了“RequestMappingHandlerMapping”中的映射信息,其實還有另外三個HandlerMapping,如果想要獲取項目中所有的映射信息,肯定是一個都不能放過了。調試的 信息如下:

image_thumb7

3、取到數據后就展示唄,借助Thymeleaf,很容易就實現了展示,效果就是第一張圖。

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head>    <title>Spring Thyme Seed Starter Manager</title>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>    <link rel="stylesheet" type="text/CSS" media="all" href="../../css/stsm.css" th:href="@{/css/stsm.css}"/>    <title>請求方法列表</title></head><body><div style="margin: 0;padding: 0;text-align: center"><h1>請求方法列表</h1></div><div>    <ul>        <li th:each="method:${MethodList}">            <h3 th:text="${method.methodName}"></h3>            <p th:text="'所屬控制器:'+${method.controllerName}"></p>            <p th:text="'請求URL:'+${method.requestUrl}"></p>            <p th:text="'請求方式:'+${method.requestType}"></p>            <div>                <p>方法參數列表:</p>                <ul>                    <li th:each="param:${method.methodParmaTypes}">                        <p th:text="${param}"></p>                    </li>                </ul>            </div>        </li>    </ul></div></body></html>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产不卡在线观看| 欧美大片欧美激情性色a∨久久| 91久久精品国产91久久性色| 欧美中文在线观看| 日韩免费高清在线观看| 欧美大片第1页| 亚洲精品自在久久| 亚洲精品一区二区三区不| 欧美激情网站在线观看| 国产精品女人久久久久久| 亚洲天堂av在线免费观看| 黄色成人av在线| 91免费高清视频| 国产成人精品优优av| 91精品国产综合久久男男| 国产精品亚洲综合天堂夜夜| 国产欧美一区二区三区在线| 国产精品午夜国产小视频| 亚洲视频欧美视频| 色偷偷噜噜噜亚洲男人| 国产97在线观看| 俺也去精品视频在线观看| 亚洲精品在线看| 欧美性猛交xxxx黑人| 欧美在线观看日本一区| 亲子乱一区二区三区电影| 57pao国产成人免费| 91综合免费在线| 国产精品扒开腿做爽爽爽男男| 尤物99国产成人精品视频| 国产成人精品久久亚洲高清不卡| 91亚洲精品一区二区| 国内精品久久影院| 亚洲色图狂野欧美| 91精品国产91久久久久| 色视频www在线播放国产成人| 欧美日韩电影在线观看| 亚洲综合自拍一区| 国产噜噜噜噜久久久久久久久| 成人综合网网址| 欧美性猛xxx| 成人精品福利视频| 岛国av在线不卡| 亚洲色图五月天| 这里只有精品视频| 亚洲精品电影在线观看| 欧美日韩在线观看视频| 国产精品久久久久久久久久久久久| 日韩高清不卡av| 久久精品久久久久久国产 免费| 欧美第一黄色网| 青青草国产精品一区二区| 国产精品久久久久久久久久ktv| 97精品视频在线观看| 羞羞色国产精品| 欧美电影免费在线观看| 在线观看日韩www视频免费| 国产亚洲欧美另类中文| 久久久久久国产精品美女| 中文字幕日韩有码| 亚洲精品视频网上网址在线观看| 日韩欧美在线免费观看| 久久91精品国产| 亚洲国产成人精品久久| 91免费综合在线| 欧美韩日一区二区| 精品国偷自产在线| 国产亚洲欧洲高清| 5566日本婷婷色中文字幕97| 国产中文日韩欧美| 色噜噜亚洲精品中文字幕| 精品福利免费观看| 久久久久久久爱| 欧美日韩激情美女| 亚洲精品欧美一区二区三区| 韩国精品美女www爽爽爽视频| 国产91精品久久久久久久| 精品一区二区三区电影| 欧美视频在线免费看| 夜夜嗨av一区二区三区四区| 色婷婷成人综合| 日韩免费不卡av| 欧美大片免费看| 日本高清+成人网在线观看| 在线观看欧美视频| 国产精品日韩专区| 欧美一级视频免费在线观看| 黄网站色欧美视频| 欧美在线亚洲在线| 国内精品久久久久久影视8| 日韩欧美亚洲范冰冰与中字| 久久人人看视频| 亚洲精品一区二三区不卡| 中文字幕日本欧美| 日韩大陆欧美高清视频区| 欧美日韩免费一区| 欧美精品videosex极品1| 欧美国产高跟鞋裸体秀xxxhd| 久久99热精品这里久久精品| 亚洲欧美日韩在线高清直播| 午夜精品一区二区三区在线视频| 欧美日本高清一区| 久久九九全国免费精品观看| 91精品国产自产在线老师啪| 亚洲视频欧美视频| 亚洲国产成人精品久久| 欧美极品少妇xxxxx| 性欧美xxxx交| 国产日韩av在线| 欧美性黄网官网| 成人黄色免费看| 欧美日韩国产丝袜另类| 欧美影院久久久| 日韩av色综合| 丝袜美腿亚洲一区二区| 国产精品视频公开费视频| 日韩一二三在线视频播| 亚洲欧美日韩第一区| 中文国产成人精品| 国产精品日韩欧美综合| 亚洲国产成人精品一区二区| 最近日韩中文字幕中文| 亚洲国产精品成人va在线观看| 黑人巨大精品欧美一区免费视频| 欧美精品久久久久| 色琪琪综合男人的天堂aⅴ视频| 日韩高清不卡av| 国产亚洲欧美一区| 中文字幕av一区二区| www.日本久久久久com.| 欧美日韩综合视频| 国产亚洲综合久久| 国产一区香蕉久久| 日韩免费在线免费观看| 亚洲成人国产精品| 精品国产美女在线| 欧美尺度大的性做爰视频| 国产精品美女网站| 久久九九有精品国产23| 久久精品免费播放| 国产视频在线观看一区二区| 麻豆国产va免费精品高清在线| 精品亚洲国产视频| 最近日韩中文字幕中文| 69影院欧美专区视频| 国产性猛交xxxx免费看久久| 欧美电影第一页| 久久夜精品va视频免费观看| 亚洲aa中文字幕| 久久久国产成人精品| 黑人精品xxx一区一二区| 国产精品69av| 最新国产精品拍自在线播放| 国产精品精品视频一区二区三区| 欧美日本啪啪无遮挡网站| 欧美日韩亚洲精品内裤| 国产精品入口免费视频一| 日韩有码视频在线| 成人国产精品色哟哟| 国产精品极品尤物在线观看| 97婷婷大伊香蕉精品视频| 少妇激情综合网| 亚洲成人精品久久久| 久久久久久国产精品美女|