`
jayung
  • 浏览: 59121 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring mvc 获取所有的controller和url映射关系

 
阅读更多

有时候需要根据url反查controller,如果能获取所有的url,则不用跟据url去代码里搜了,方便开发人员、调试人员或交接人。

关键对象:RequestMappingHandlerMapping 

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;
import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

@Controller
public class MappingController {

	@Autowired
	private RequestMappingHandlerMapping requestMappingHandlerMapping;

	@RequestMapping(value = "/mappings")
	public String list(Model model) {
		List<HashMap<String, String>> urlList = new ArrayList<HashMap<String, String>>();

		Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
		for (Map.Entry<RequestMappingInfo, HandlerMethod> m : map.entrySet()) {
			HashMap<String, String> hashMap = new HashMap<String, String>();
			RequestMappingInfo info = m.getKey();
			HandlerMethod method = m.getValue();
			PatternsRequestCondition p = info.getPatternsCondition();
			for (String url : p.getPatterns()) {
				hashMap.put("url", url);
			}
			hashMap.put("className", method.getMethod().getDeclaringClass().getName()); // 类名
			hashMap.put("method", method.getMethod().getName()); // 方法名
			RequestMethodsRequestCondition methodsCondition = info.getMethodsCondition();
			String type = methodsCondition.toString();
			if (type != null && type.startsWith("[") && type.endsWith("]")) {
				type = type.substring(1, type.length() - 1);
				hashMap.put("type", type); // 方法名
			}
			urlList.add(hashMap);
		}
		model.addAttribute("list", urlList);
		return "/console/system/mappingList";
	}

}

 然后再在页面上遍历list即可

	<table class="tableList" >
	<tr>
			<th>类名</th>
			<th>方法名</th>
			<th>URL</th>
			<th>类型</th>
	<tr>
		<c:forEach items="${list}" var="mvc" varStatus="status">
		<tr id="${status.index}">
			<td>${mvc.className}</td>
			<td>${mvc.method}</td>
			<td>
				<c:choose>
				<c:when test="${!fn:contains(mvc.url,'}') and (mvc.type=='GET' or mvc.type=='')}">
					<a href="${ctx}${mvc.url}" target="_blank">${mvc.url}</a>
				</c:when>
				<c:otherwise>${mvc.url}</c:otherwise>
				</c:choose>
			</td>
			<td>${mvc.type}</td>
		</tr>
		</c:forEach>
	</table>

 

 

2
1
分享到:
评论
4 楼 bewithme 2016-11-29  
ontext.support.XmlWebApplicationContext:544) - Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'resourcesController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping com.ternnetwork.baseframework.controller.security.ResourcesController.requestMappingHandlerMapping; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.A
3 楼 jayung 2015-09-14  
lcwen_13 写道
只是取了其中一部分映射

没发现啊,那全部的映射要怎么取,请教了
2 楼 lcwen_13 2015-09-05  
只是取了其中一部分映射
1 楼 white_crucifix 2015-09-05  
想法还是不错的。当然IDE也已经提供了。
IntelliJ idea和spring版eclipse,都会列出所有的路由,并关联到对应的controller方法上。

相关推荐

    Spring MVC 入门实例

    9 import org.springframework.web.servlet.mvc.Controller; 10 import org.springframework.web.servlet.ModelAndView; 11 12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet....

    全面掌握Spring MVC:从基础到高级的实践指南

    Spring MVC基于Model-View-Controller(MVC)架构模式,优化了Web应用程序的设计和开发。在Spring MVC中,DispatcherServlet作为前端控制器,负责请求的接收和响应结果的处理。处理器映射器(HandlerMapping)和...

    使用Spring 2.5 基于注解驱动的 Spring MVC详解

    在 Spring 2.5 中,Spring MVC 框架引入了注解驱动功能,使得开发者可以使用注解来配置 Controller,代替传统的基于 XML 的配置方式。这种方式使得 Controller 的开发变得更加灵活和方便。 使用 @Controller 注解 ...

    详解Spring mvc ant path的使用方法

    spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(灵活,可以配置各种东西,但是也造成了很多复杂性),肯定不会只有一种方法来映射URL和 Controller之间的关系,并且在实际上,允许你自己创建映射规则和...

    使用Spring MVC和JSP构建的全栈RSS阅读器Web应用程序(95分以上课程大作业).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    spring mvc 3.2 参考文档

    view-controller (MVC)框架是围绕 DispatcherServlet 设计的,并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view resolution)、 区域设置(locale)和主题解析...

    spring mvc 思维导图

    Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。...

    springmvc demo

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...

    spring_MVC源码

    -- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt; 14. &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; 15. 16. &lt;!-- 对模型视图名称的解析...

    用于获取Spring Bean依赖关系图的工具(高分毕设).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    spring-mvc-showcase:演示Spring MVC Web框架的功能

    Spring MVC展示柜 通过小而简单的示例演示Spring MVC Web框架的功能。 在回顾了这个展示之后,您应该对Spring MVC可以做什么有一个很好的了解,并了解它的易用性。 包括项目代码以及支持的幻灯片显示和屏幕投射。 ...

    Java之Spring Boot详解

    接下来我们比较一下Spring mvc和 Spring Boot的开发过程 Spring mvc (1)导入 spring mvc 的相关依赖包 (2)在 web.xml 文件中配置 Spring mvc 的前端控制器 (3)创建一个 spring mvc 的配置文件 (4)在 spring...

    高级Spring Boot和Spring Cloud微服务示例 Zuul上的API Swagger2

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    用于将所有Spring xml配置转换为基于Spring java的配置的工具(高分毕设).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Spring-MVC技术体系介绍(三)

    中文叫做一次性控制器,也就像一次性筷子那样用完即丢 并不在Spring的Controller继承架构中,而是一个独立的接口定义 当映射的不是一个model 对象时很有用 Bean的作用域必须是prototype ,他们本身不是线程安全的

    使用Spring in Guice和Guice in Spring的工具(高分项目).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Spring + Spring MVC + SpringData JPA + mysql +jsp实现一个简易的个人博客系统

    • 控制层,Controller,URL路径映射 • UserController类、FriendshipController类、StatusController类、 CommentController类、TimelineController类 • 视图层,用户界面 • login.jsp、status.jsp、comment...

    Spring Boot ( Jetty )、Spring Cloud库、Netflix OSS工具、Docker

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Spring Boot 3和Cloud进行用户注册、余额充值示例

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    使用GraphQL Java Tools和GraphQL Spring Boot Starter参考实现

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

Global site tag (gtag.js) - Google Analytics