1. 程式人生 > >獲取SpringMVC中所有RequestMapping對映URL地址

獲取SpringMVC中所有RequestMapping對映URL地址

廢話不多說,直接上程式碼:
public String init(HttpServletRequest request, HttpServletResponse response){
	List<String> uList = new ArrayList<String>();//儲存所有url集合
	WebApplicationContext wac = (WebApplicationContext) request.getAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE);//獲取上下文物件
	RequestMappingHandlerMapping bean = wac.getBean(RequestMappingHandlerMapping.class);//通過上下文物件獲取RequestMappingHandlerMapping例項物件
	Map<RequestMappingInfo, HandlerMethod> handlerMethods = bean.getHandlerMethods();
	for (RequestMappingInfo rmi : handlerMethods.keySet()) {
		PatternsRequestCondition prc = rmi.getPatternsCondition();
		Set<String> patterns = prc.getPatterns();
		for (String uStr : patterns) {
			uList.add(uStr);
		}
	}
}
通過以上程式碼即可獲取SpringMVC對映地址及其其他方法相關屬性。

萬變不離其宗,亦或是通過以下方式獲取。
public void init(HttpServletRequest request,HttpServletResponse response) {
	List<String> uList = new ArrayList<String>();//儲存所有url集合  
	WebApplicationContext wac = (WebApplicationContext) request.getAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE);//獲取上下文物件
	Map<String, HandlerMapping> requestMappings = BeanFactoryUtils.beansOfTypeIncludingAncestors(wac, HandlerMapping.class, true, false);
	for(HandlerMapping handlerMapping : requestMappings.values()) {
		if(handlerMapping instanceof RequestMappingHandlerMapping) {
			RequestMappingHandlerMapping rmhm = (RequestMappingHandlerMapping) handlerMapping;
			Map<RequestMappingInfo, HandlerMethod> handlerMethods = rmhm.getHandlerMethods();
			for(RequestMappingInfo rmi : handlerMethods.keySet()) {
				PatternsRequestCondition prc = rmi.getPatternsCondition();
				Set<String> patterns = prc.getPatterns();
				for (String uStr : patterns)
					uList.add(uStr);
			}
		}
	}
}