springmvc 支持ant风格的路径表达式,我们先了解一下ant风格是什么个东东?
ant匹配url有三种
? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录
1.?只匹配一个字符,比如说/springmvc/?abc/index.jsp 其中?abc 的?是可以给任何一个字符代替。
稍作改动
/springmvc/1abc/index.jsp
/springmvc/eabc/index.jsp
/springmvc/4abc/index.jsp
以上的?发生了改变但是不会影响到请求index.jsp,这样是能正常访问到的。
在稍作改动
/springmvc/12abc/index.jsp
/springmvc/leabc/index.jsp
以上的?发生了改变但是它不是一个字符所以最终它是请求不到index.jsp的。
2.*匹配0或者任意数量的字符,以上类推使用方法差不多就不在这里多讲了。
3.** 匹配0或者更多的目录,比如说/springmvc/**/index.jsp 其中的** 可以是任意字符或者任意访问层数,都能正确的访问到index.jsp。
稍作改动
/springmvc/abc/index.jsp
/springmvc/index.jsp
/springmvc/abc/cba/index.jsp
以上的改变但是不会影响到请求index.jsp,这样是能正常访问到的。
了解完了,下面我们在springmvc上在做一次示范。
1.jar包(所需jar包在第一节中有所表述出来)
2.web.xml配置(主要配置一下 springmvc 的servlert 就可以了 org.springframework.web.servlet.DispatcherServlet)
3.springmvc.xml配置(主要配置一下 注解扫描,和InternalResourceViewResolver解析器配置一下前缀和后缀)
4.编写Controller
package com.home.springmvc.ant; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * 此类是:Springmvc Ant 风格匹配url * ? 匹配一个任意的字符 * * 匹配任意字符 * ** 匹配多层任意字符 * @author hpc * @2017年2月16日下午10:08:46 */ @Controller public class SpringMvcAnt { // ? 匹配一个任意的字符 @RequestMapping("/springmvc/?/antUrl1") public String antUrl3() { System.out.println("? 匹配一个任意的字符"); return "success"; } //* 匹配任意字符 @RequestMapping("/springmvc/*/antUrl2") public String antUrl() { System.out.println("* 匹配任意字符"); return "success"; } //** 匹配多层任意字符 @RequestMapping("/springmvc/**/antUrl3") public String antUrl2() { System.out.println("** 匹配多层任意字符"); return "success"; } }
直接结果展示
1. ?
点击请求 http://localhost/springmvc_1(hello%20world)/springmvc/antUrl3
请求成功,且进入了handler方法,打印了内容
将地址改成http://localhost/springmvc_1(hello%20world)/springmvc/b/antUrl1,也请求成功了,且打印了。
将地址改成http://localhost/springmvc_1(hello%20world)/springmvc/b2/antUrl1,是两个字符所以请求错误,没有打印
2. *
点击请求
请求成功http://localhost/springmvc_1(hello%20world)/springmvc/1*/antUrl2,匹配任意字符所以请求成功,且打印内容。
http://localhost/springmvc_1(hello%20world)/springmvc/dafdsafsa/antUrl2,请求成功,且打印内容。
http://localhost/springmvc_1(hello%20world)/springmvc/dafdsafsa/asdfaf/antUrl2,请求失败,该映射只能是任意符,不能是多层。
3. ** 依上类推,不打解释了。
有不对之处希望大家多多指教。谢谢。