目录
1.@RequestMapping("")
2.RequestMapping用在类上
3.如果有两个控制器拦截了同一个请求,
4.RequestMapping method属性, 不匹配报405
5.RequestMapping restful风格占位符传递参数
6.RequestMapping value 的通配符 不匹配报400
7.RequestMapping params 参数中必须有某个或没有参数
8.requestmapping headers 请求头中必须有某个或没有参数
9.@requestheader
11.@requestparam注解
1.RequestMapping用在方法上
表示拦截什么值的请求,有点像servlet的@webservlet注解,都是拦截特定的请求
package org.hxut.zyk.com.hxut.zyk.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//设置为ioc容器类
@Controller
@RequestMapping("/target")
public class Hellocontroller {
//拦截只写了一个/的请求 http://localhost:8080/Springmvc_demo1_war_exploded/
@RequestMapping("/")
public String firstpage()
{
return "index";
}
//拦截/target请求 http://localhost:8080/Springmvc_demo1_war_exploded/target
@RequestMapping("/target")
public String Gettarget()
{
return "target";
}
}
http://localhost:8080/Springmvc_demo1_war_exploded/target 即可访问target.html页面
表示要加上/后的内容才可以访问 http://localhost:8080/Springmvc_demo1_war_exploded/target/target 可以访问target页面
package org.hxut.zyk.com.hxut.zyk.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//设置为ioc容器类
@Controller
//在类上,表示要加上/后的内容才可以访问 http://localhost:8080/Springmvc_demo1_war_exploded/target
@RequestMapping("/target")
public class Hellocontroller {
//拦截只写了一个/的请求 http://localhost:8080/Springmvc_demo1_war_exploded/
@RequestMapping("/")
public String firstpage()
{
return "index";
}
@RequestMapping("/target")
public String Gettarget()
{
return "target";
}
}
则会报错,即添加了controller的类中,有两个方法,他们@requestmapping注解的value值相同。
设置匹配的请求类型 ,post ,get ,delete 之类的,默认是都可以,
@RequestMapping(value = "/employee/{id}",method = RequestMethod.GET) 只接收get请求
@GetMapping(value = "/targe?3") 要求必须为get请求
普通风格 /delete?id=1
restful风格 /delete/1
控制器
@RequestMapping(value ={ "/target5/{username}/{pwd}"})
// @PathVariable注解的作用是将username从路径中拿出来,并赋值给变量uname
// @PathVariable注解的作用是将pwd从路径中拿出来,并赋值给变量pwd
public String disaplayrestful(@PathVariable("username") Integer uname,@PathVariable("pwd") String pwd) {
System.out.println(uname);
System.out.println(pwd);
return "target";
}
value={"/a?a/testant"} 任意的单个字符
value={"/abba/testant"}错误
value={"/aca/testant"}正确
value={"/aaa/testant"} 正确
value={"/a*a/testant"} 任意的多个字符
/aaaaaaaaa/testant"正确
"/aba/testant" 正确
"/aa/testant" 错误
value={"test/**/tesatext"}只要a和b 能匹配上,不管** 中写了什么,都可以访问
test/asfdsfasdf/sfdsfd/testant 正确
传过来的参数一定要带有,或者不带有某个参数 不匹配报400
params={"username"} 一定要带有username 参数
{"!username"} 一定不带有username 参数
{"username"=admin} 有username参数,且值必须是admin
{"username"!=admin}有username参数,且值不能是admin 或者 没有username参数
{"username","psw"} 必须有username和psw
@requestMapping(value = "/target3", params = {"username!=1234"}) 只有请求中有username这个参数,而且值不等于1234才可以访问本界面
请求头某个信息的必须为规定值,
@GetMapping(headers = {"Host=localhost:8080"}) 必须是localhost且是8080端口
这种键值对的是请求头
9.一个控制方法可以拦截多个请求
@RequestMapping(value = {"/target", "/target2"},method = {RequestMethod.GET})
public String disaplaytarget() {
return "target";
}
要求请求头中必须有某个参数
要求cookie中必须有某个参数
@RequestParam(value = "s",required = true,defaultValue = "defaultvalue1")
value 用于获取请求地址中名为s的参数
required 该参数是否是必须的
default 默认值 当没有传递这个参数,而且 required为true时,给这个变量赋值
requestparam注解
@RequestMapping(value = {"requestparam_zhujie"})
public String get_requestparam_zhujie(
// value 指定为形参赋值的请求参数的参数名
// required 设置是否必须传输此请求,默认为true,若没有设置defalut,且没有传输该参数,会报400,只传参数名,没有参数值,不报错
// defaultValue 当value所指定的请求参数没有传输时,使用默认值
@RequestParam(value = "uunamed",required = true,defaultValue = "zyk")
String uname,
@RequestParam(value = "s",required = true,defaultValue = "default")
String upwd,
String[] hobbis2,
@RequestHeader(value="Host")
String address)
{ System.out.println("requestparam获取注解");
System.out.println("获取uname"+uname);
System.out.println("没有传这个值,应该使用注解设置的default"+upwd);
System.out.println(Arrays.toString( hobbis2));
return "test_param";
}
例子:params = {"username!=1234"}, headers = {"Host=localhost:8080"}) 请求一定是/targe?3 ?是任意格式字符 且一定要是get请求,要么有params参数,且值不是1234,要么没有该参数,请求头的host一定是本机