`
hbxflihua
  • 浏览: 678297 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

重写DispatcherServlet获取springmvc 所有RequestMapping的url

阅读更多

 

1、重写DispatcherServlet

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

@SuppressWarnings("serial")
public class MyDispatcherServlet extends DispatcherServlet {
	
	public static final Set<String> MAPPING_URLS = new HashSet<>();
	
	@Override
	protected void initStrategies(ApplicationContext context) {
		super.initStrategies(context);
		
		Map<String, HandlerMapping> matchingBeans =
				BeanFactoryUtils.beansOfTypeIncludingAncestors(context, HandlerMapping.class, true, false);
		for(HandlerMapping handlerMapping : matchingBeans.values()) {  
	        if(handlerMapping instanceof RequestMappingHandlerMapping) {  
	            RequestMappingHandlerMapping rmhm = (RequestMappingHandlerMapping) handlerMapping;  
	            Map<RequestMappingInfo, HandlerMethod> handlerMethods = rmhm.getHandlerMethods();  
	            for(RequestMappingInfo rmi : handlerMethods.keySet()) {  
	                PatternsRequestCondition prc = rmi.getPatternsCondition();  
	                MAPPING_URLS.addAll(prc.getPatterns());
	            }  
	        }  
	    }  
		System.out.println(">>>>>>>>>>>>>>>>");
		for (String string : MAPPING_URLS) {
			System.out.println(string);
		}
		System.out.println(">>>>>>>>>>>>>>>>");
		
	}
	
}

 

2、在web.xml中配置重写的MyDispatcherServlet

	<!-- MVC Servlet -->
	<servlet>
		<servlet-name>springServlet</servlet-name>
		<servlet-class>com.huatech.web.listener.MyDispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springServlet</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>

 

分享到:
评论
1 楼 ckxlnd 2018-09-14  
挺好的  有借鉴意义

相关推荐

    spring 3.0 应用springmvc 构造RESTful URL 详细讲解

    在这个过滤器中,你可以根据请求的URL进行解析、转换,然后再将请求转发给Spring MVC的DispatcherServlet。 4. **路径变量和请求参数** 在上面的例子中,`@PathVariable`用于获取URL中的动态部分,而`@RequestBody...

    手写springmvc笔记1

    SpringMVC 使用注解来关联请求与处理方法,例如 @RequestMapping 注解用于映射 URL 到特定的控制器方法。例如: ```java @Controller public class UserController { @RequestMapping("/login") public String ...

    SpringMVC4零配置

    SpringMVC4支持创建RESTful API,通过`@PathVariable`、`@RequestParam`等注解处理URL中的动态部分和请求参数。这样可以实现资源导向的API设计,符合HTTP协议的最佳实践。 8. **异常处理** 可以通过`@...

    springmvc入门程序(下载后你不会后悔的)

    ### SpringMVC基础知识详解 #### 一、SpringMVC简介 SpringMVC是Spring框架中的一个模块,专门用于Web应用程序的开发。它继承了Spring框架的一系列优点,并且提供了更为简洁高效的MVC(Model-View-Controller)...

    SpringMVC基于代码的配置方式(零配置,无web.xml)

    2. 自定义路由:SpringBoot允许你通过`@RequestMapping`注解来定义Controller方法的URL映射。此外,`@GetMapping`、`@PostMapping`等注解提供了更具体的HTTP操作映射。 3. 异常处理:SpringBoot提供了一种声明式的...

    springmvc.docx

    - 在 web.xml 中配置 DispatcherServlet 的 url-pattern,决定哪些 URL 请求会被 SpringMVC 处理。 - 在 Controller 方法上使用 @RequestMapping 注解指定 URL 路径。 6. **接收用户参数** - @RequestParam:从...

    springmvc实战应用

    在SpringMVC中,可以通过`@RequestMapping`注解来映射请求URL到控制器方法,同时可以在方法的参数中使用`@RequestParam`注解来接收请求参数。如果是简单类型的数据(如int, String),SpringMVC能够自动将请求参数...

    企业级开发-SpringMVC使用拦截器实现用户登录权限验证实验报告.docx

    此外,还需要在 `web.xml` 文件中配置 SpringMVC 的前端控制器 DispatcherServlet: ```xml &lt;servlet-name&gt;dispatcher &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet &lt;param-name&gt;...

    SpringMVC的知识点总结共7页.pdf.zip

    - `@PathVariable`:获取URL路径变量的值。 - `@RequestParam`:获取请求参数的值。 - `@ModelAttribute`:用于模型绑定,可以将请求参数绑定到Model对象。 5. **拦截器(Interceptor)** - 拦截器可以实现...

    Servlet JSP和SpringMVC初学指南

    SpringMVC的核心组件包括DispatcherServlet、HandlerMapping、ViewResolver等。通过注解驱动,如`@RequestMapping`,可以轻松地定义请求映射,使得代码更简洁。SpringMVC还提供了依赖注入(DI)和面向切面编程(AOP...

    springmvc完整笔记附带说明代码.pdf

    4. 编写控制器类(Controller),使用@RequestMapping注解来映射请求的URL,然后在控制器方法中编写业务逻辑,并使用返回值来定义将视图跳转到哪个页面。 5. 编写JSP页面,用于展示数据或收集用户输入。 在Spring ...

    Spring MVC复习.pdf

    SpringMVC支持多种注解和配置方式,例如@Controller注解用于声明一个类为控制器,@RequestMapping用于映射请求到具体的方法,@RequestParam用于获取请求参数,@ModelAttribute用于绑定数据到模型等。 SpringMVC的...

    springMVC 代码搭建源码

    - 使用@Controller注解标记Controller类,@RequestMapping注解映射请求,@RequestParam获取请求参数。 - @PathVariable用于处理RESTful风格的URL中的动态参数。 - @ModelAttribute可以将请求参数绑定到模型对象,...

    java手写SpringMvc框架

    同时,需要设计一个简单的注解系统,如@Controller、@RequestMapping等,用于标记Controller类和处理方法。 接下来是包扫描过程。在Spring MVC中,我们通常会定义一个配置类,通过@ComponentScan注解指定需要扫描的...

    springmvc-without-webxml.rar

    标题 "springmvc-without-webxml.rar" 暗示了这个压缩包可能包含了一个Spring MVC项目,而且这个项目没有使用传统的`web.xml`部署描述符。在传统的Java Web应用中,`web.xml`是配置应用服务器如何加载和管理Servlet...

    springmvc.zip

    2. **ContextLoaderListener**:这个监听器用于初始化 Spring 的全局上下文(ApplicationContext),其中包含所有服务层和数据访问层的bean。在 `web.xml` 中配置此监听器可以确保 Spring 上下文在 `...

    22道面试常问的SpringMVC面试题!.zip

    可以使用URL重写过滤器,如Tuckey的UrlRewriteFilter,或者Spring Boot的spring-boot-starter-webflux提供的WebFlux功能。 这些面试题涵盖了Spring MVC的基本概念、核心组件、常用功能以及高级特性,对于理解...

    springmvc框架

    过滤器(Filter)在Spring MVC中扮演着预处理和后处理请求的角色,它可以用于身份验证、URL重写、GZIP压缩等多种用途。在Spring MVC中,我们可以通过实现`Filter`接口或者继承`OncePerRequestFilter`类来自定义过滤...

    springmvc_02 高级参数绑定 异常处理 文件上传

    - **处理思路**:异常从最底层(如DAO层)开始抛出,逐层向上传递,最终由前端控制器(DispatcherServlet)处理。前端控制器会调用异常处理器`HandlerExceptionResolver`来处理异常,并给出友好的提示页面。 ##### ...

Global site tag (gtag.js) - Google Analytics