打印 SpringMVC中所有的接口URL
采用junit test方式
1.配置 simple-test.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="requestMappingHandlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<bean id="requestMappingHandlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
</beans>
2.Junit Test Case
package com.xxx.msa.test; import java.util.Map;
import java.util.Map.Entry;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; public class TestUrl { @Autowired
private static RequestMappingHandlerAdapter handlerAdapter; @Autowired
private static RequestMappingHandlerMapping handlerMapping; @BeforeClass
public static void before(){
ApplicationContext ctx=new ClassPathXmlApplicationContext(new String[]{
"classpath*:config/spring/spring-main.xml",
"classpath*:config/spring/springmvc/springMVC.xml"
,"classpath*:config/spring/simple-test.xml"});
handlerAdapter=(RequestMappingHandlerAdapter) ctx.getBean("requestMappingHandlerAdapter");
handlerMapping=(RequestMappingHandlerMapping) ctx.getBean("requestMappingHandlerMapping");
} @Test
public void testUrls(){
Map<RequestMappingInfo, HandlerMethod> handlerMethods =handlerMapping
.getHandlerMethods(); for (Entry<RequestMappingInfo, HandlerMethod> item : handlerMethods
.entrySet()) {
RequestMappingInfo mapping = item.getKey();
HandlerMethod method = item.getValue(); for (String urlPattern : mapping.getPatternsCondition()
.getPatterns()) {
System.out.println(method.getBeanType().getName() + "#"
+ method.getMethod().getName() + " <-- " + urlPattern); if (urlPattern.equals("some specific url")) {
// add to list of matching METHODS
}
}
} } }
3.结果

4.延伸: 打印出符合markdown语法的表格
改写testUrl()
@Test
public void testUrls(){
System.out.println("------------以下文本复制到符合markdown语法的编辑器中------------\r\r"); Map<RequestMappingInfo, HandlerMethod> handlerMethods =handlerMapping
.getHandlerMethods();
StringBuilder sb=new StringBuilder();
sb.append("[MSA系统][1]").append("\r\n");
sb.append("| 序号 | 类名 | 方法名 | URI |说明|").append("\r\n");
sb.append("| :-----:|:----|:----|:----| :----|").append("\r\n");
int index=1;
for (Entry<RequestMappingInfo, HandlerMethod> item : handlerMethods
.entrySet()) {
RequestMappingInfo mapping = item.getKey();
HandlerMethod method = item.getValue();
sb.append("| ");
for (String urlPattern : mapping.getPatternsCondition().getPatterns()) {
sb.append(index+" |").append(method.getBeanType().getSimpleName()+" |").append(method.getMethod().getName()+" |").append(urlPattern+" |"); if (urlPattern.equals("some specific url")) {
// add to list of matching METHODS
}
index++;
}
sb.append("|\r\n");
}
sb.append("![MSA测量系统][2]").append("\r\n\r\n");
sb.append("[1]:http://baike.baidu.com/link?url=xTbrqN9R1f3b1nayzmLNlWRIV7qP3qg3g50ig14g68kPXIrcrgymGzniaR8Ay7g9kzLkYgPeUcHR_YxgTMESHa").append("\r\n");
sb.append("[2]:http:////img12.360buyimg.com/n0/jfs/t703/314/1199846466/213652/541cad01/5527d639N36f38009.jpg").append("\r\n");
System.out.println(sb); }
markdown语法表格效果
[MSA系统][1]
| 序号 | 类名 | 方法名 | URI |说明|
| :-----:|:----|:----|:----| :----|
| 1 |GageCheckRecordController |create |/GageCheckRecord/create ||
| 2 |GageCheckRecordController |update |/GageCheckRecord/update ||
| 3 |GageCheckRecordController |gageCheckRecordIndex |/GageCheckRecord/list ||
| 4 |GageCheckRecordController |gageCheckRecordExport |/GageCheckRecord/export ||
| 5 |GageController |delete |/Gage/delete/{gageId} ||
| 6 |GageController |CheckConfigUpate |/Gage/CheckConfig/update ||
| 7 |GageController |CheckConfigSwitch |/Gage/CheckConfigSwitch/update ||
| 8 |GageController |gageNew |/Gage/create ||
| 9 |GageController |gageUpdate |/Gage/update ||
| 10 |GageController |findByGageId |/Gage/{gageId} ||
| 11 |GageController |gageLeftList |/Gage/list ||
| 12 |GageController |gageIndex |/Gage/index ||
| 13 |GageController |gageCheckRecordExport |/Gage/export ||
| 14 |GrrAnalysisController |create |/GrrAnalysis/create ||
| 15 |GrrAnalysisController |list |/GrrAnalysis/list ||
| 16 |GrrAnalysisController |getResult |/GrrAnalysis/getResult ||
| 17 |GrrAnalysisController |getInput |/GrrAnalysis/getData ||
| 18 |GrrAnalysisController |saveData |/GrrAnalysis/saveData ||
| 19 |GrrAnalysisController |compute |/GrrAnalysis/compute ||
| 20 |GrrTemplateController |index |/GrrTemplate/index ||
| 21 |GrrTemplateController |createGrrTemplate |/GrrTemplate/create ||
| 22 |GrrTemplateController |deleteGrrTemplate |/GrrTemplate/delete ||
| 23 |GrrTemplateController |getGrrTemplate |/GrrTemplate/get ||
| 24 |IndexController |totest |/test ||
| 25 |IndexController |toindex |/toindex ||
| 26 |LoginController |currentCompanyAccount |/Login/currentCompanyAccount ||
| 27 |LoginController |login |/Login/login ||
| 28 |LoginController |toLogin |/Login/tologin ||
| 29 |LoginController |logout |/Login/logout ||
![MSA测量系统][2] [1]:http://baike.baidu.com/link?url=xTbrqN9R1f3b1nayzmLNlWRIV7qP3qg3g50ig14g68kPXIrcrgymGzniaR8Ay7g9kzLkYgPeUcHR_YxgTMESHa
[2]:http:////img12.360buyimg.com/n0/jfs/t703/314/1199846466/213652/541cad01/5527d639N36f38009.jpg
可以把这些东西记录在 有道云笔记中,也可以放在github中

打印 SpringMVC中所有的接口URL的更多相关文章
- 获取SpringMVC中所有RequestMapping映射URL信息
SpringMVC启动的时候,会把接口信息收集在RequestMappingHandlerMapping中,故可以通过这个类,拿到全部的映射信息,Sample代码段如下: @Autowired pri ...
- 在springmvc中,获取Connection接口
ServletContext context = request.getSession().getServletContext();WebApplicationContext wac = WebApp ...
- SpringMVC中url映射到Controller
SpringMVC也是一种基于请求驱动的WEB框架,并且使用了前端控制器的设计模式.前端控制器就是DispatcherServlet控制器,只要满足web.xml文件中的[url-pattern]的规 ...
- 如何在SpringMVC中使用REST风格的url
如何在SpringMVC中使用REST风格的url 1.url写法: get:/restUrl/{id} post:/restUrl delete:/restUrl/{id} put:/restUrl ...
- SpringMVC 中的Interceptor 拦截器
1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> ...
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解
一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...
- 【SpringMVC学习11】SpringMVC中的拦截器
Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- (转)SpringMVC学习(八)——SpringMVC中的异常处理器
http://blog.csdn.net/yerenyuan_pku/article/details/72511891 SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常 ...
随机推荐
- [IR] Compression
关系:Vocabulary vs. collection size Heaps’ law: M = kTbM is the size of the vocabulary, T is the numbe ...
- 受限玻尔兹曼机(RBM)学习笔记(六)对比散度算法
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算 ...
- 网游中的网络编程3:在UDP上建立虚拟连接
目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...
- SQL SERVER 分布式事务(DTC)
BEGIN DISTRIBUTED TRANSACTION指定一个由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务的起始. 语法BEGIN ...
- ChartDirector应用笔记(三)
前言 继上篇文章(Simple bar chart)推出之后,本篇文章继续ChartDirector的使用.在这篇Blog中,博主实现的是soft lighting bar.soft lighting ...
- MVC知识点01
1:母版页都 放在View/Shared里面,而且全部的视图页面都可以去用母板页. **母板的应用要用到嵌套,@RenderBody();将别的网页的内容全部显示在此处,它就相当于一个占位符. 2:架 ...
- 文本对象模型(Document Object Model)
本文内容: 1. 概述 2. DOM中的节点类型 3. DOM节点的选取 4. 存取元素属性 5.DOM元素的增删 6.小结 ★ 概述 文本对象模型(DOM)是一个能够让程序和脚本动态访问和更新文档内 ...
- div与>div区别小结
两者之间的区别:例如div span得到的是div下所有的span元素,而div>span则是取得的div下第一级的span元素. 示例代码如下: <!DOCTYPE html> & ...
- Js中各类型数据到bool的转换
在返回Json字符串给前台时遇到的问题,返回的bool数据总是为TRUE 特意查了一下,发现了Js中各类数据转换到bool型是的结果. 希望能给遇到同样问题的人一点帮助. 数据类型 转换为bool ...
- OAuth2.0 基础概述
web:http://oauth.net/2/ rfc:http://tools.ietf.org/html/rfc6749 doc:http://oauth.net/documentation/ c ...