Spring MVC可以基于注解的方式来实现控制器或实现Controller接口来实现,但是每次实现Controller接口需要在Spring MVC的配置文件中进行配置,实在太麻烦,所以我们可以使用注解的方式来实现Controller类。
Spring MVC的Controller类其实就相当于Struts的Action类,只不过Controller类中我们可以直接返回视图,不需要和Struts一样配置xml文件来指定返回的视图。
下面总结一下Spring MVC中的常用注解:
-
@Controller
@Controller注解用于指示一个类为控制器,其实就相当于告诉框架,我是一个controller,这样就不需要实现Controller接口了。
-
@RequestMapping
我们在控制器内为每一个请求动作设置的相应处理方法前,都需要加上@RequestMapping注解,来指示这是一个处理请求动作的方法。@RequestMapping还可以用于注解一个控制器类,当用于注解类时,表示所有请求都被映射到value属性所指的路径下。@RequestMapping注解的常见属性有:
1.value 这是@RequestMapping注解的默认属性,所以可以不写,它代表使用@RequestMapping注解的value属性会将URL映射到注解的方法上。
2.method method属性就是用来指示该方法是处理什么请求方式的,有POST或GET方式,如果没有指定,就代表都可以
3.params 这个属性用于指定request中必须包含某些参数值时,才让该方法处理
4.header 这个属性用于指定request中必须包含某些header值时,才让该方法处理
-
@RequestParam
@RequestParam注解用于将请求参数赋值给方法中的形参,例如:
@RequestMapping("login")
public String login(
@RequestParam("username") String username,
@RequestParam("password") String password){
..... //方法内容
return ...;
}
- @PathVariable
@PathVariable 注解可以方便地获取请求URL中的动态参数,例如:
@RequestMapping(value="/path/{userId}")
public String path(@PathVariable Integer userId){
..... //方法内容
return ...;
}
-
@RequestHeader
@RequestHeader注解可以将请求的头信息映射到方法参数上,代码略
-
@CookieValue
@CookieValue注解可以将请求的Cookie数据映射到方法参数上,代码略
- @RequestAttribute
@RequestAttribute注解可以将request作用域中的数据映射到方法参数上,代码略
- @SessionAttribute
@RequestAttribute注解可以将session作用域中的数据映射到方法参数上,代码略
- @SessionAttributes
@SessionAttributes注解可以把方法中的Model中的属性存到Session中,所以该注解只能声明在类上,而不是方法上。
例如:
@SessionAttributes(“user”) //将Model中的user对象存入session中
@SessionAttribute(types={User.class,Dept.class),value={"user","dept"}) //将多个对象存入session