SpringMVC常用注解

1 @Controller
在SpringMVC中,@Controller用于标记一个类,将其注册到Spring上下文, 负责处理由DispatcherServlet分发的请求,并将处理结果封装成一个Model返回给View进行展示。
@Controller注解需要被Spring所认识,还需要在配置文件中增加以下配置:

// 通过该配置,Spring会扫描com.spring.controller包下的所有注解
<context:component-scan base-package=“com.spring.controller”/>

2 @RequestMapping
@RequestMapping是将请求url映射到处理逻辑上,可用于类或方法上,该注解有六个属性:

value:指定请求的url;
method:指定请求的method类型, GET、POST等;
consumes:指定处理请求的提交内容类型(Content-Type),如application/json;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
params: 指定request中必须包含某些参数值是,才让该方法处理;
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求
@RequestMapping(“/mvc/?/getView”) 支持多种匹配符:

?:匹配文件名的一个字符,
*:匹配文件名的所有字符
**:匹配多层路径

@Controller //控制器,类似于struts的Action
@RequestMapping("/mvc/*") // 父request请求url
public class FirstController {
@RequestMapping("/getView")
public String getView(){
return “home”;
}

@RequestMapping 标记的处理器方法,可以直接在方法上给定HttpServlet 对象的参数申明(主要包括HttpServletRequest 、HttpServletResponse 和HttpSession),然后在方法体里面直接使用。

3 @RequestParam
@RequestParam 主要功能是辅助控制层获取到请求中的业务参数,其形式为public String getName(@RequestParam(“id”) String userId),另外,@RequestParam能够将请求中的参数转换成函数定义中的形参形式。

@RequestParam 通过Request.getParameter() 获取到的String可直接转换为简单类型,所能处理的Content-Type 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

4 @PathVariable
@PathVariable 将请求URL中的模板变量映射到方法参数上,即具备从URL中获取动态参数的能力,参数名称不一致时可参看如下方式:

@RequestMapping(value = “/getAddressByName/{name}”, method = RequestMethod.POST)
@ResponseBody
public String getAddressByName(@PathVariable(“name”) String userName){
if (userName.equalsIgnoreCase(“zhangsan”)) {
return “shanghai”;
} else {
return “anhui”;
}
}

5 @RequestBody、@ResponseBody
@RequestBody 功能是读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,将数据转换到形参指定的类型上,与@RequestParam不同,该注解处理的是 非application/x-www-form-urlencoded编码的内容。

@ResponseBody 将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

@RequestMapping("/setPerson")
@ResponseBody
public Person setPerson(@RequestBody Person person) {
System.out.println(JSON.toJSONString(person));
person.setName(“zhangsan”);
person.setSex(“female”);
person.setAddress(“上海”);
return person;
}

6 @RequestHeader、@CookieValue
@RequestHeader 可以将请求Request中的header部分绑定到方法形参上;
@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上;

@RequestMapping(value = “/getHeaderAndCookie”, method = RequestMethod.POST)
@ResponseBody
public String getHeaderAndCookie(@RequestHeader(“Host”) String header, @CookieValue(“name”) String cookie) {
return “header:” + header + “, cookie:” + cookie;
}

7 @ModelAttribute
SpringMVC 使用@ModelAttribute 在不同方法之间通过Model来共享数据,主要有两种使用方式,一种是标注在方法上,一种是标注在 Controller 方法参数上:

@ModelAttribute作用在方法上时,表明该方法会向Model添加一个属性,在当前Controller各方法之间共享,并且会在该Controller的所有@RequestMapping标注的方法执行前调用;
@ModelAttribute作用在方法参数上时,表明该参数可以在Model中检索到,并提取属性值注入到自定义的方法形参上;
注:@ModelAttribute标记的方法会在每个@RequestMapping标记的方法执行前调用,因此需要谨慎使用。

@Controller
public class MyController {

@ModelAttribute("stringValue")
public String setName(){
    System.out.println("执行 setName 方法");
    return "zhangsan";
}

@ModelAttribute("userAge")
public int setAge(){
    System.out.println("执行 setAge 方法");
    return 10;
}

@RequestMapping(value = "/getAge", method = RequestMethod.GET)
public void getAge(@ModelAttribute("stringValue") String name, @ModelAttribute("userAge") int age){
    System.out.println("name:" + name + ", age:" + age);
}
}

执行结果为:

执行 setName 方法
执行 setAge 方法
name:zhangsan, age:10

8 @SessionAttributes
@SessionAttributes 只能标记在Controller类上,指明将Model中的哪些属性是放到session中,可用于在多个请求之间传递参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值