`
hbxflihua
  • 浏览: 660082 次
  • 性别: 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  
挺好的  有借鉴意义

相关推荐

    springmvc所有方法url映射获取

    通过重写dispatcherservlet的一个doservice方法把springmvc的url对应方法打印出来。 所需要做的是: 1,使用本文件作为原先springmvc的xml文件的dispatcherservlet。 2,启动项目,随意发送一个请求,可以在控制台...

    SpringMVC DispatcherServlet重写、自定义拦截器拦截器源码

    SpringMVC DispatcherServlet重写、自定义拦截器拦截器源码

    SpringMVC 入门级几个小demo

    SpringMVC servlet DispatcherServlet ModelAndView Controller @RequestMapping SpringMVC-servlet.xml

    url静态映射及回发处理

    NULL 博文链接:https://whitesmith.iteye.com/blog/730918

    welcome-file-list 与SpringMvc 的 DispatcherServlet

    在SpringMVC中 所有的请求都由dispatcherServlet处理(url-pattern配置的是/),当配置文件中有对静态资源的处理  时候 ,先匹配 welcome-file-list 中的文件,依次查找,找到了就 返回,如果没有找到就继续匹配到...

    浅谈springmvc的DispatcherServlet分析

    本篇文章主要介绍了浅谈springmvc的DispatcherServlet分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    SpringMVC DispatcherServlet组件实现解析

    主要介绍了SpringMVC DispatcherServlet组件实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    springboot2 配置多个DispatcherServlet 处理.do .htm请求,Controller分离,集成druid和mybatis

    Springboot 2.4.4 网上搜到的配置多个DispatcherServlet 都有坑,自己避坑写的一个demo,处理.do .htm请求,Controller分离不会出现一个Controller可以处理.do也处理.htm可自己扩展.action .json等,适合分离前台...

    SpringMVC源码分析.md

    Spring的源码分析 在分析SpringMVC源码之前我想先回顾一下JavaWeb的知识.JavaWeb的核心是Servlet,一个Servlet对应一...SpringMVC通过一个DispatcherServlet拦截所有请求,也就是url为 /** 。 通过拦截所有请求,在内部通

    Spring SpringMVC 简单整合

    SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成...

    springmvc开发资料

    SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成...

    springmvc常用注解标签详解

    springmvc常用注解标签详解,@Controller控制器Controller 负责处理由DispatcherServlet 分发的请求,@RequestMappingRequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有...

    SpringMVC框架架构介绍

    四、spring mvc DispatcherServlet说明 五、spring mvc 双亲上下文的说明 六、springMVC-mvc.xml 配置文件片段讲解 七、spring mvc 如何访问到静态的文件,如jpg,js,css? 八、spring mvc 请求如何映射到具体的...

    Spring框架系列(13) - SpringMVC实现原理之DispatcherServlet的初始化过程.doc

    Spring框架系列(13) - SpringMVC实现原理之DispatcherServlet的初始化过程.doc

    SpringMVCC.txt

    SpringMVC是一个模型 - 视图 - 控制器(MVC)的Web框架建立在中央前端控制器servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。Spring MVC 是 Spring 产品组合...

    SpringMVC执行流程简介1

    1、用户向服务器发送请求,请求被SpringMVC的前端控制器DispatcherServlet截获 2、DispatcherServlet对请求的URL(统一

    springmvc demo

    前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView ...

    SpringMVC工作原理.docx

    SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器...

    SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现1

    如果说将Spring上下关联到Servlet容器中,是SpringMVC框架的第个亮点,那么在请求转发流程中,SpringMVC对各种处理环节编程元素的抽象,就

    SpringMVC教程

    非常棒的SpringMVC教程, 简明 透彻 涵盖了基本工作中都会接触到的知识 每一章都是一个PDF,效果非常清楚 即有Spring2.5的 Controller接口的老版本 也包含新版Spring3.0,3.1 基于注解的MVC配置方法 总之绝对值得下载 ...

Global site tag (gtag.js) - Google Analytics