@Controller
指明Spring类的实例是一个控制器,是SpringMVC Controller对象
@RequestMapping
指定哪个类或者方法处理请求动作
修饰方法,映射对应请求,每个请求处理方法可以有多个不同类型的参数,Spring会自动将对象正确的传递给方法
修饰类,所有方法映射为类级别的请求,表示该控制器的所有请求都被映射到value属性指定的路径下
@Controller
@RequestMapping("/user")
public class UserController{
@RequestMapping("/register")
public String register(){...}
@RequestMapping("/login")
public String login(){...}
}
被映射的URL:http://localhost:8080/user/register http://localhost:8080/user/login
支持的属性:
value:默认属性,是唯一属性的时候可以省略属性名,映射一个请求和一种方法 @RequestMapping()value="/user")
method:指定该方法仅仅处理那些HTTP请求方式 @RequestMapping()value="/user",method=RequestMethod.POST)
多个则为@RequestMapping()value="/user",method={RequestMethod.POST,RequestMethod.GET})
consumes:指定处理请求的提交内容类型(Content-type)
@RequestMapping()value="/user",method={RequestMethod.POST,RequestMethod.GET},consumes="application/json")
方法仅处理request Content-type为application/json类型的请求
produces:指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型
@RequestMapping()value="/user",method={RequestMethod.POST,RequestMethod.GET},consumes="application/json",produces="application/json")
方法仅处理request请求中Accept头中包含了application/json的请求,同时指明了返回类型为applicatioin/json
params:指定request中必须包含某些参数值,才会处理
@RequestMapping(value="/hello",params="myParam=myValue")
方法仅处理其中名为myParam,值为myValue的请求
headers:指定request中必须包含某些指定的header值,才会处理
@RequestMapping(value="/hello",headers="Referer=http://....")
方法仅处理request的header中包含了Referer请求头和对应值为http://...的请求
@RequestParam
将指定的请求参数复制给方法中的形参
@RequestMapping("/hello")
public ModelAndView login(@RequestParam("loginname") String loginname, @RequestParam("password") String password){...}
对应的请求:http://localhost:8080/context/login?loginname=amm&password=loveangel
支持的属性:name 绑定的名称,value name属性的别名,required 是否必须绑定 defaultValue 没有传递参数时使用的默认值
@RequestParam(value="loginname",required=true,defaultValue="admin")
@PathVariable
获得请求的URL中的动态参数
只支持一个属性value,类型为String,表示绑定的名称,省略则默认绑定同名参数
@RequestMapping(value="/hello/{id}")
public void hello(@PathVariable Integer id)
对应的请求:http://localhost:8080/context/hello/1 把id变量赋值为1
@RequestHeader
将请求头的数据映射到处理方法的参数上
支持的属性:name,value,required,defaultValue
@ReuqestMapping("/hello")
public void hello(@RequestHeader("User-Agent") String userAgent){...}
自动将请求头中User-Agent的值赋值到userAgent上
@CookieValue
将请求的Cookie数据映射到参数上
@SessionAttributes
只能声明在类上,不能声明在方法上,选择指定Model中那些属性转存到HttpSession对象中
@SessionAttributes("user")
public class aa{public void login(Model model){model.addAttribute("user","a")}}
将model中的user属性转存到HttpSession对象中
@ModelAttribute
将请求参数绑定到Model对象
只支持一个属性name,没有时按默认返回值的类型命名
修饰void返回值方法:先于@RequestMapping修饰的方法调用,可以把请求参数赋值给对应变量(初始化)
修饰有返回值的方法:把返回值存入Model中
修饰参数:把Model中的对应值传入对应参数