Insight springmvc 根据request-path look up handler method 后缀问题

原创 2016年09月06日 17:41:32

request-path后缀问题:xxx.action,xxx.json怎样look up 处理xxx 请求的method?

...

Determine handler for the current request. 这个过程描述是这样的:

1.Tries all handler mappings in order. 

2.No choice but to go through all mappings...

3.Checks if any of thepatterns match the given request *原来是这样的*

4.Look up the best-matching handler method for the current request.

详见源码:
private String getMatchingPattern(String pattern, String lookupPath) {
    if (pattern.equals(lookupPath)) {
        return pattern;
    }
    // ...
    boolean hasSuffix = pattern.indexOf('.') != -1;
    if (!hasSuffix && this.pathMatcher.match(pattern + ".*", lookupPath)) {
        return pattern + ".*";
    }
    // ...
    return null;
}

private static List asList(String... patterns) {
    return (patterns != null ? Arrays.asList(patterns) : Collections.emptyList());
}
...

总结:

springmvc 针对没有声明但是有后缀的请求,会进行类正则匹配

原则:不抛弃、不放弃每一个request。

...

需要改进的地方:

每一次不在声明中的request-path,springmvc 都会解析匹配处理。

如果像spring 其他的设计,第一次发现匹配成功,追加到urlmap cache(fix size)性能会更好。

...

设计参考:

对于程序的容错、兼容性处理,可以采用try,best-matching 的设计。

...

附带:

spring 返回json 数据的实现,除了response.getWriter()、@ResponseBody 外,还可以配置MappingJacksonJsonView 来实现。

能匹配到MappingJacksonJsonView,前提是mediaType = application/json。

springmvc 也可以配置根据file extensions 转换 mediaType 的功能。

eg:

application/xmlapplication/json

这样,如xxx.json 的请求,默认mediaType = application/json。

版权声明:本文为博主原创文章,未经博主允许不得转载。

2014/3/10 SpringMVC中DispatcherServlet理解

一:笔者对于Spring MVC配置文件这块遇到了些问题,之前都是用的别人搭好的环境 感悟一: 1.对于一个Http请求,MVC会寻找DispatcherServlet这个类,所以需要先如下配置,在w...
  • weiweiai123456
  • weiweiai123456
  • 2014年03月10日 14:55
  • 7421

spring-boot开发:使用内嵌容器进行快速开发及测试

一、简述一下springBoot微框架 1、springBoot微框架是什么? 大家都知道,在使用spring框架进行应用开发时需要很多*.xml的初始化配置文件,而springBoot就是用来简化新...
  • eguid_1
  • eguid_1
  • 2016年05月31日 09:11
  • 2386

由浅入深写java分布式(4)基于注解 dubbo 一个app同时存在consumer和provider自启动失败的问题,以dubbo和spring注解加载顺序的问题

问题描述: 将提供者和消费者写再同一个项目,要么提前启动一个纯的提供者app。否则会rpc调用失败。 解决过程: 通过dubbo admin观察要么再linux上只启动成功消费者 要么再...
  • kkgbn
  • kkgbn
  • 2017年02月18日 19:46
  • 2041

(十七)JQuery框架一定要在angularJS之前加载

这是因为angular.element()这个API并不能支持类似jquery的选择器,也就是说angular.element()并不支持selector。最好引入JQuery框架,因为jQuery框...
  • aitangyong
  • aitangyong
  • 2015年08月31日 14:33
  • 5000

Request 数据到handler method 参数数据的绑定所用到的注解及使用

引言: Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解 对@RequestMapping进行地址映射讲解之后,该篇主要讲解r...
  • haixingcha
  • haixingcha
  • 2017年04月17日 08:43
  • 153

Springmvc的handler method参数绑定常用的注解

转自:http://blog.longjiazuo.com/archives/1149 1、 简介: handler method参数绑定常用的注解,我们根据他们处理的Reques...
  • he90227
  • he90227
  • 2016年10月12日 16:18
  • 1329

低头族,Look Up!

从你的手机上抬起头来,世界从此不同……
  • foruok
  • foruok
  • 2015年05月22日 07:38
  • 3938

OpenCV 2 学习笔记(16): 利用查找表(Look-up table)改善图片质量,增加图像对比度

本节是上一节的延伸,代码见: 查找表可以将一个像素值转换成另一个像素值得对照表。它可以是一对一或者多对一(原像素对于新像素)。所以他是一维的,对于规则的灰度图像,它有256个元素。表中的每一个元素...
  • u010525655
  • u010525655
  • 2013年09月03日 21:05
  • 3179

Weblogic报错:javax.naming.NameNotFoundException: While trying to look up jdbc in /app.;

先把问题踢出来:
  • lanhaics
  • lanhaics
  • 2014年04月23日 16:51
  • 1937

解决出现The FastCGI Handler was unable to process the request: 258 (0x80070102)的问题 等问题

10-02-04 11:10 微软去年底发布了II6的FastCGI模块,今天将服务器上的PHP支持改成了FastCGI,目前运行稳定.FastCGI的IIS模块可以让 流行的应用框架在I...
  • spl0000
  • spl0000
  • 2011年01月23日 13:15
  • 57827
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Insight springmvc 根据request-path look up handler method 后缀问题
举报原因:
原因补充:

(最多只允许输入30个字)