@RequestMapping的用途:
- 在SpringMVC中的众多Controller以及每个Controller的众多方法,请求是通过RequestMapping映射到具体的处理方法上
@RequestMapping既可以定义在类上也可以定义在方法上
请求映射的规则是:
类上面的@RequestMapping.value + 方法上面的@RequestMapping.value。
五种映射
- 标准URL映射
- Ant风格的URL映射* **
- 占位符映射 @requestMapping (show/{userid}/{name} ) 方法中(@pathVariable(“ userid”) String id)
- 限制请求方法映射 @requestMapping ( value=“ show2” , method=requestMehtod.POST)
- 限制参数映射 @requestMapping( value=”show3” , params=”abc”) 方法中(@requestParam(“abc”) String abcid)
第一种:标准映射
注意:这里请求url后边.do是在web.xml配置servlet里面进行配置过滤的
@Controller
@RequestMapping(value="he11o2")
public class Hello2 {
@RequestMapping(value=" / show1" )
public ModelAndView test1(){
ModelAndView mv = new ModelAndView( "hello") ;
mv. addobject("msg", "这是第一 个注解程序");
return mv ;
}
}
访问路径:类上面的访问路径+方法上的访问路径
测试路径:I localhost:8080/hello2/show1.do
第二种:Ant风格的URL映射
通配符 | 说明 |
---|---|
? | 匹配任何单字符 |
* | 匹配任意数量的字符 |
** | 匹配更多的目录 |
测试:
在地址栏中分别输入
@RequestMapping("/test/*/show")
/test/a/show.do
/test/abc/show.do
/test/show.do 匹配不到
@RequestMapping("/test/**/show")
hello/test/a/b/c/show.do
hello/test/show.do 匹配到
第三种:占位符映射
Url中可以通过一个或多个{xxxx}占位符映射。大括号里面的值随便写
通过@PathVariable(“xxx”)绑定到方法的入参中。可以获取到值
例如:
@RequestMapping(“/user/{userId}/query")
请求URL:
http://localhost/user/8/query
具体的例子:
注意一点:这个url里面{}里面的变量名字要和下面方法里面的@PathVariable()里面的参数名字保持一致,才能获取到url里面的值
第四种:限制请求方法映射
在Http请求中最常用的请求方法是GET、POST,还有其他的一-些方法,DELET、PUT、HEAD等。
例如:
@RequestMapping(value = "/{userlg}/query"method=RequestMethod GET)
@RequestMapping(value
"/{userld/query",method={RequestMethod. GET,RequestMethod.POST})
示例:
第五种:限定请求参数
可以防止用户把信息注入进来
设定请求的参数来映射URL,例如:
@RequestMapping(value="quern".params="userld
要求请求中必须带有usexId参数。
参数的限制规则如下:
paramg="userId"请求参数中必须包含userId
params=”userId" 请求参数中不能包含userId
paramg="usexid!=1"请求参数包含userId,但其值不能为1也可以不包含userid
baxeme={"userid","name"} 必须包含userId和name参数
示例:
@RequestMapping(value=" / show7" , params="userId")
public ModelAndView test7 (@RequestParam("userId")String userId){
ModelAndView mv = new ModelAndView( "hello");
mv . addobject("msg","限定请求参数userId: "+userId);
return mv;
}
@Reques tMapping( value= "/ show8" , params="!userId")
public ModelAndView test8(){
ModelAndView mv = new ModelAndView( "hello");
mv . add0bject("msg","限定请求参数userId: ");
return mv ;
}
@RequestMapping(value=" /show9" ,params="userId!=1")
public ModelAndView test8(@RequestParam( "userId" )String userId){
ModelAndView mv = new ModelAndView( "hello");
mv . add0bject("msg","限定请求参数userId: "+userId);
return mv;
}