路径匹配原则(Path Matching) Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache
Ant的样式路径,Apache
Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)
这些可以组合出很多种灵活的路径模式
Table
Ant Wildcard Characters
Wildcard |
Description |
|
? |
匹配任何单字符 |
|
* |
匹配0或者任意数量的字符 |
|
** |
匹配0或者更多的目录 |
|
Table Example Ant-Style Path Patterns
Path |
Description |
|
/app/*.x |
匹配(Matches)所有在app路径下的.x文件 |
|
/app/p?ttern |
匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern |
|
/**/example |
匹配(Matches) /app/example, /app/foo/example, 和 /example |
|
/app/**/dir/file. |
匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java |
|
/**/*.jsp |
匹配(Matches)任何的.jsp 文件 |
|
HandlerMapping
一 个WEB应用程序基本上都要依赖于URL与请求处理器之间的映射,Spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(译者:灵活,可以配置各种东西,但是也造成了很多复杂性),肯定不会只有一种方法来映射URL和 Controller之间的关系,并且在实际上,允许你自己创建映射规则和实现,而不仅仅依赖URL映射。
Spring提供了URL的映射处理, 并且处理路径模式的顺序和方法并没有限定到任何的接口上。Spring MVC的默认实现org.springframework.web.servlet.handler. AbstractUrlHandlerMapping, 会以最长符合路径模式来匹配一个路径。
例如:给定一个请求是 /app/dir/file.jsp 并且现在存在两个路径匹配模式/**/*.jsp 和/app/dir/*.jsp, 那么,URL会匹配那个模式呢?最后的那个模式/app/dir/*.jsp,会因为最长(has more characters)的原则被匹配,它比/**/*.jsp拥有更多的字符.注意的是,这个原则并没有在任何高级别的接口中指定,但却是一种实现细节。
!!下面看一下默认的两个HandlerMapping
BeanNameUrlHandlerMapping
默 认的映射策略实现是org.springframework.web. servlet.handler.BeanNameUrlHandlerMapping类. 这个类要求任何有可能处理请求的Bean都要起一个以反斜杠(/)字符开头的名称或者别名,这个名称或者别名可以是符合URL Path匹配原则中的任何名字。
Listing A Controller Mapped by a Bean Name
xml 代码
- <bean name="/home"
- class="com.apress.expertspringmvc.flight.web.HomeController">
- <property name="flightService" ref="flightService" />
- </bean>
■注意:你不能使用id这个属性来指定任何的URL路径,因为在XML规格定中禁止(/)字符来指定XML的id,不过你可以在一个Bean定义中同时拥有id和name属性
BeanNameUrlHandlerMapping 的缺点
它 非常便于使用的同时,也拥有一些缺点。它不能影射一个Prototype的Bean.换句话说,当使用 BeanNameUrlHandlerMapping时, 所有的请求处理类只能是单例的(singletons) . 一般来说,Controllers 都是按照单例建立的,所以这个并不是一个很严重的问题.还有,我会在后面的章节中介绍Controller,只会有很少类型的Controller需要是 prototypes.
■注释: Prototype bean 是一种非单例(non-singleton)的bean. 任何一次调用ApplicationContext的getBean()方法时都会返回一个新的Bean实例更多的信息请参照<<Pro Spring>>.
BeanNameUrlHandlerMapping的另外一个问题存在于在你的应用程序中 应用拦截(interceptor). 因为请求的映射(handler mapping )和Bean(beans imapping)的映射给绑定在一起了,没有分开,这样就不可能在Controller和拦截之间创建复杂的关系。如果有复杂的请求映射需求,你可以用 SimpleUrlHandlerMapping 来代替BeanNameUrlHandlerMapping. SimpleUrlHandlerMapping作为BeanNameUrlHandlerMapping的另外一种选择, SimpleUrlHandlerMapping直指BeanNameUrlHandlerMapping的两大软肋.它可以映射 prototype类型的请求处理器,并且它允许你为处理器(handlers)和拦截器(interceptors)之间创建复杂灵活的映射
路 径的映射算法与BeanNameUrlHandlerMapping是 使用相同的基础组件,所以这个模式依然是映射URL到请求处理器的(request handler) ,你简单的在ApplicationContext中声明一下,就可以使用SimpleUrlHandlerMapping了. DispatcherServlet会根据类型找到的,并且不会创建默认的映射器了(BeanNameUrlHandlerMapping).意思就是, 如果你想两个都用,那么就要全部声明一下在ApplicationContext里.
■提示 DispatcherServlet会链式处理请求的(译者:依次处理请求,可以参照过滤器和GOF中的责任链模式),这样允许按照你的要求处理映射,映射处理器(Handler mappings )实现了Orderedr接口.
分享到:
相关推荐
《Leaflet Ant Path:在地图上绘制动态轨迹》 在Web GIS开发中,Leaflet是一个广泛应用的开源JavaScript库,用于创建交互式地图。Leaflet库以其轻量级、易用性和丰富的插件生态而受到开发者们的青睐。"leaflet-ant-...
本篇文章将详细探讨“leaflet-ant-path”这个插件以及它在Leaflet中的应用。 “leaflet-ant-path”是一个专门为Leaflet设计的插件,它提供了动态路径效果,能够模拟汽车、火车轨道、飞机航线等物体的移动轨迹。这种...
Ant colony algorithm, path planning
leaflet中动态路线资源
总之,理解并熟练运用Spring MVC中的Ant Path匹配规则,可以帮助开发者构建高效且可扩展的MVC应用程序,提高URL路由的灵活性和可维护性。在开发过程中,可以根据业务需求,灵活设计URL模式,确保请求能够准确地被...
传单蚂蚁路径创建带有“蚂蚁路径”动画通量的传单折线正在安装通过NPM: npm install --save leaflet-ant-path通过纱线: yarn add leaflet-ant-path通过凉亭: bower install leaflet-ant-path或仅此源代码要求单张...
蚁群算法用于三维路径规划,很经典的实力算法
阿里集团的设计理念,Ant Design 是一个致力于提升『用户』和『设计者』使用体验的中台设计语言。它模糊了产品经理、交互设计师、视觉设计师、前端工程师、开发工程师等角色边界,将进行 UE 设计和 UI 设计人员统称...
"Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...
BeanNameUrlHandlerMapping 是 Spring MVC 中的一个默认的映射策略实现,它要求任何有可能处理请求的 Bean 都要起一个以反斜杠(/)字符开头的名称或者别名,这个名称或者别名可以是符合 URL Path 匹配原则中的任何...
- 在Windows上设置Ant通常涉及解压这个ZIP文件,设置ANT_HOME环境变量,并将bin目录添加到PATH环境变量中。 4. **使用Ant** - 用户可以通过命令行工具运行Ant,例如使用"ant clean compile"命令来清理并编译项目...
org.apache.tools.ant.types.Path org.apache.tools.ant.BuildLogger org.apache.tools.ant.Diagnostics org.apache.tools.ant.FileScanner org.apache.tools.ant.TaskAdapter org.apache.tools.ant....
ant ant下载 ant配置ant ant下载 ant配置ant ant下载 ant配置
AntPathMatcher是Spring框架中用于路径匹配的一个工具类,其核心功能是提供了对Ant风格路径模式的匹配。所谓Ant风格的路径模式,是借鉴自Apache Ant构建工具的一种路径表达方式,它允许使用特定的通配符来进行模式...
开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6...
在path 变量中添加 %ANT_HOME%\bin; 如果没有path变量,则新建一个。 3、验证ant环境配置。开始-->运行-->输入cmd,打开dos命令窗口。最后,在命令行下输入:ant -version,如果能显示版本号,就代表ant环境...
- **路径元素(Path Element)**:Ant中的`<path>`元素用于定义类路径或文件路径,可以包含多个目录和文件。 3. **Ant常用任务** - **javac任务**:用于编译Java源代码,可以设置源和目标兼容性级别,以及处理...
<pathelement location="path/to/ant-contrib-1.0b2.jar"/> ``` 然后我们可以在构建脚本中使用`for`任务: ```xml <path> **/*.java"/> </path> <echo>Processing @{file} <!-- 其他处理每个文件...