SpringMVC路径匹配
SpringMVC支持Ant风格的路径
Ant是Apache下的一个构建(编译、测试、部署等)工具。即Ant风格源于Ant这个构建工具。
关于如何配置SpringMVC的各种配置文件和其中的注解使用可以参考
种类
1、?
:表示任意的单个字符
controller
@RequestMapping("/a?a/testAnt")
public String testAnt(){return "success";
}
index.html
<a th:href="@{/a1a/testAnt}">测试RequestMapping可以匹配Ant风格的路径-->使用?</a>
2、*
:表示任意的0个或多个字符
controller
@RequestMapping("/a*a/testAnt")
public String testAnt(){return "success";
}
index.html
<a th:href="@{/aasaa/testAnt}">测试RequestMapping可以匹配Ant风格的路径-->使用*</a>
注意:?和/代表其他含义,不能正常使用。
3、**
:表示任意的一层或多层目录
controller
@RequestMapping("/**/testAnt")
public String testAnt(){return "success";
}
index.html
<a th:href="@{/aa/aa/testAnt}">测试RequestMapping可以匹配Ant风格的路径-->使用*</a>
注意:在使用时,只能使用//xxx的方式。
SpringMVC支持路径中的占位符
原始风格:
@RequestMapping("/deleteUser?id=1")
REST风格:
@RequestMapping("/deleteUser/1")
SpringMVC路径中的占位符常用RESTful
风格,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping
注解的value属性中通过占位符{xxx}表示传输的数据,再通过@PathVariable
注解将占位符所表示的数据赋值给控制器方法的形参。
RESTful风格
官网:http://www.restfulapi.nl/
概述
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
特点
1、每一个URI代表1种资源;
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
3、通过操作资源的表现形式来操作资源;
4、资源的表现形式是XML或者HTML;
5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
SpringMVC请求路径的REST风格
下面的示例基于SpringMVC框架搭建,可将博客代码复制到自己的编辑器,进行如下的操作。
示例①
启动首页控制器
@RequestMapping("/")
public String firstPage(){return "index";
}
index.html
<a th:href="@{/testPlaceholder/1}">测试@ResultMapping支持路径中的占位符</a>
controller
/*** {}表示的就是展位符* @PathVariable注解只能够用来修饰参数* @param id 解析器需要的内容* @return 返回成功后*/
@RequestMapping("/testPlaceholder/{id}")
public String testPlaceholder(@PathVariable("id") Integer id){System.out.println("id = " + id);return "success";
}
/*id = 1*/
示例②
index.html
<a th:href="@{/testPlaceholder/1/louie}">测试@ResultMapping支持路径中的占位符</a>
controller
@RequestMapping("/testPlaceholder/{id}/{username}")
public String testPlaceholder(@PathVariable("id") Integer id, @PathVariable("username") String username){System.out.println("id = " + id + " username = " + username);return "success";
}
/*id = 1 username = louie*/
注意:
1、如果路径中有占位符,再请求地址中就必须要有代表占位符的那层路径,不然就会报错。
2、@PathVariable中的参数名称需要和占位符中的参数名称一致。
3、如果前端请求业务层的方式为query风格,如:
http://localhost:8080/testPlaceholder?id=1&username=louis
则在代码实现时,只需要名称对应,就会赋值。
@RequestMapping("/testPlaceholder")public String testPlaceholder(Integer id, String username){System.out.println("id = " + id + " username = " + username);return "success";}/*id = 1 username = louie*/