有时候需要根据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>
相关推荐
这表明我们不仅得到了Spring MVC的相关资源,还获得了Hibernate 3.6.8版本的资料,这是一个流行的Java对象关系映射(ORM)框架,用于简化数据库操作。 1. **Spring MVC**: - **基本概念**:Spring MVC提供了一个...
2. **Model-View-Controller(MVC)架构**: Spring MVC遵循MVC设计模式,将应用程序逻辑分解为模型(Model)、视图(View)和控制器(Controller)三个部分。模型处理业务逻辑,控制器处理用户交互,视图负责展示...
在Spring MVC框架中,URL映射是连接前端请求...综上所述,"Spring简单URL映射例子"展示了Spring MVC如何处理GET请求和URL映射,以及如何从GET参数中获取数据。理解这一核心机制对于开发基于Spring MVC的应用至关重要。
这个"最全最经典spring-mvc教程"应该会详细讲解上述所有概念,并可能通过实例演示如何配置、创建和调试Spring MVC项目。对于想要深入理解和使用Spring MVC的开发者来说,这是一份非常宝贵的资源。通过学习这个教程,...
在 Spring MVC 中,核心类和接口是 DispatcherServlet、HandlerMapping、HandlerAdapter、Controller、ViewResolver、HandlerInterceptor、View 等。 DispatcherServlet 是 Spring MVC 的前置控制器,它负责处理...
首先,Spring MVC的设计模式基于Model-View-Controller(MVC),它将应用程序的业务逻辑、数据和用户界面进行了分离,使得代码更加清晰、易于维护。在Spring MVC中,Controller处理用户的请求,Model存储数据,而...
在Spring MVC中,每个请求都会经过DispatcherServlet,这是一个前端控制器,它会根据请求的URL和配置的映射规则将请求分发到合适的处理器。处理器可以是自定义的Controller类,Controller通过方法注解(如@...
Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发。以下将详细分析Spring MVC的核心知识点。 一、前言:介绍了选择Spring MVC的原因和优势。Spring MVC简单易用,可以快速提高...
1. **依赖注入**:Spring MVC 4.0继续支持Spring框架的核心功能,依赖注入(DI),允许开发者通过配置来管理对象及其依赖关系,降低了代码耦合度,提高了可测试性。 2. **ModelAndView对象**:在处理完请求后,控制...
6. **注解驱动开发**:Spring MVC支持使用注解来简化配置,如@RequestMapping用于映射请求,@RequestParam用于获取请求参数,@PathVariable用于处理URL路径变量。 7. ** ModelAndView**:这个类是用来存储模型数据...
这里,`@Controller` 和 `@RequestMapping` 分别用于声明这是一个控制器类和指定请求的 URL 映射。`hello` 方法处理 `/hello` 的 GET 请求,并返回 `"hello"` 视图名称。 ### DispatcherServlet 启动流程 ...
在Spring MVC中,Model代表业务对象,View负责展示,Controller处理用户请求并协调Model和View。 2. **DispatcherServlet**:Spring MVC的入口点,它是一个前端控制器,接收所有HTTP请求,并根据配置的...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
- **URL映射**:在XML配置文件中,使用`<mvc:annotation-driven>`元素启用基于注解的控制器,或者使用`<bean>`定义`HandlerMapping`和`HandlerAdapter`来配置URL到Controller的映射。 - **视图技术**:通过`<bean>...
Spring MVC 中的 Controller 配置方式主要有注解式和 XML 配置两种。随着 Spring 的发展,注解式配置因其简洁性和易用性成为主流。了解这些配置方式有助于我们更好地理解和使用 Spring MVC 构建 Web 应用。
这个框架基于Spring IoC(Inversion of Control)容器,它提供了Model-View-Controller(MVC)架构模式的实现,使得开发者可以将业务逻辑、数据处理和用户界面分离,从而提高代码的复用性和模块化。 在"Spring MVC ...
Spring MVC提供了很好的RESTful服务支持,通过@RequestMapping的GET、POST、PUT、DELETE等方法映射HTTP动词,以及@PathVariable和@RequestParam处理URL路径变量和查询参数。 10. **上传下载** 使用MultipartFile...
这个"Spring MVC 简单Demo"旨在帮助初学者理解如何设置和运行一个基本的Spring MVC项目。下面,我们将深入探讨Spring MVC的核心概念、工作原理以及如何创建一个简单的示例。 1. **Spring MVC 概述** Spring MVC是...