sitemap.xmlファイルを動的に作成したいと考えています。 コントローラにURLアドレスをすべて取得する必要がある場合は、 どうすればこの問題を解決できますか?SpringでGETメソッドを使用してrequestMapping URLをすべて取得できますか?
私がしたいことは、春にsitemap.xmlを生成することです。
sitemap.xmlには、検索エンジンが自分のサイト でクロールする必要があるすべてのURLが含まれているため、この解決策が必要です。
sitemap.xmlファイルを動的に作成したいと考えています。 コントローラにURLアドレスをすべて取得する必要がある場合は、 どうすればこの問題を解決できますか?SpringでGETメソッドを使用してrequestMapping URLをすべて取得できますか?
私がしたいことは、春にsitemap.xmlを生成することです。
sitemap.xmlには、検索エンジンが自分のサイト でクロールする必要があるすべてのURLが含まれているため、この解決策が必要です。
次のコードはすべてRequestMappingInfo
のインスタンスをタイプとメソッドレベル@RequestMapping
アノテーション@Controller
クラスから抽出します。
// context = ApplicationContext
Map<String, RequestMappingHandlerMapping> matchingBeans = BeanFactoryUtils.beansOfTypeIncludingAncestors(context,
RequestMappingHandlerMapping.class, true, false);
if (!matchingBeans.isEmpty()) {
ArrayList<HandlerMapping> handlerMappings = new ArrayList<HandlerMapping>(matchingBeans.values());
AnnotationAwareOrderComparator.sort(handlerMappings);
RequestMappingHandlerMapping mappings = matchingBeans.get("requestMappingHandlerMapping");
Map<RequestMappingInfo, HandlerMethod> handlerMethods = mappings.getHandlerMethods();
for (RequestMappingInfo requestMappingInfo : handlerMethods.keySet()) {
RequestMethodsRequestCondition methods = requestMappingInfo.getMethodsCondition();
// Get all requestMappingInfos with
// 1) default request-method (which is none)
// 2) or method=GET
if (methods.getMethods().isEmpty() || methods.getMethods().contains(RequestMethod.GET)) {
System.out.println(requestMappingInfo.getPatternsCondition().getPatterns() + " -> produces " +
requestMappingInfo.getProducesCondition());
}
}
}
おそらくエラーページのマッピングを除外する必要があります。 RequestMappingInfo
オブジェクトは、次のような@RequestMapping
以上のアノテーションを定義することを、関連するすべてのマッピング情報が含まれています: - >@RequestMapping(method=RequestMethod.GET)
RequestMappingInfo.getPatternsCondition().getPatterns()
-
RequestMappingInfo.getMethods()
詳細を見る>@RequestMapping(value = "/foo")
RequestMappingInfo
さらにcアーチ。 ViewController構成としても、あなたはSimpleUrlHandlerMapping
タイプのためにフィルタリングする必要があります。
Map<String, SimpleUrlHandlerMapping> matchingUrlHandlerMappingBeans = BeanFactoryUtils.beansOfTypeIncludingAncestors(context,
SimpleUrlHandlerMapping.class, true, false);
SimpleUrlHandlerMapping mappings = matchingUrlHandlerMappingBeans.get("viewControllerHandlerMapping");
System.out.println(mappings.getUrlMap());
はどうもありがとうございました:) – Richard
私は助けることができるうれしいです! – fateddy