【03】SpringMVC--常用注解

【03】SpringMVC笔记–常用注解

一、注解介绍

名称作用
@Controller标记一个类是Controller
@RequestMapping将http请求映射到MVC和RES控制器的处理方法上
@RequestParam用于将制定的请求参数赋值给方法中的形参(
@PathVariable可以将URL中动态参数绑定到控制器处理方法的入参中
@RequestHeader可以将请求头信息数据映射到处理的方法上
@CookieValue用于将请求的Cookie信息映射到处理的方法参数上
@ModelAttribute将请求参数绑定到Model对象上
@SessionAttributes可以让参数在多个请求中共享。(只能声明在类上,不能声明在方法上
@SessionAttribute接收HttpSession对象中的值
@ResponseBody用于将Controller方法返回的对象,通过HttpMessageConverter转换为指定格式后,写入到Resopnse对象的body数据区。(响应json数据
@RequestBody用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到Controller方法的参数上

二、使用示例

1)@RequestParam

这个注解可以用来解决 页面请求参数 和 方法接收参数 名称 不一致的问题

<a href="anno/testRequestParam_02?name=apple"></a>
/**
     * 使用@RequestParam注解,
     * 解决请求参数和方法参数名称不一致问题
     * 属性:name
     * 指的是请求参数的名称,然后赋值给被注解的方法参数
     *
     */
    @RequestMapping("/testRequestParam_02")
    public String testRequestParam_02(@RequestParam(name = "name") String username) {
        System.out.println("testRequestParam_02....");

        System.out.println(username);
        return "success";
    }

2)@PathVariable

作用:用于绑定url中的占位符。例如:请求url中/delete/{id},这个{id}就是url占位符。 url支持占位符是spring3.0之后加入的。是springmvc支持rest风格URL的一个重要标志。

属性:

  • value:用于指定ur1中占位符名称。
  • required:是否必须提供占位符。
<!-- 现写法:不用“?”,直接"/"+参数值" -->
<a href="anno/testPathVariable/10"></a>
@RequestMapping("/testPathVariable/{sid}")
public String testPathVariable(@PathVariable(name = "sid") String id) {
    //
    System.out.println(id);
    return "success";
}

3)@RequestHeader

作用:通过属性value:获取指定的请求头值。然后赋值给方法参数

<a href="anno/testRequestHeader"></a>
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value = "Accept") String header) {
    
    System.out.println("Accept:" + header);
    return "success";
}

4)@CookieValue

作用:获取value指定名称的cookie值

<a href="anno/testCookieValue"></a>
    @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookieValue) {
    	
        System.out.println(cookieValue);
        return "success";
    }


5)@ModelAttribute

作用:将请求参数绑定到Model对象上

把返回值绑定到Model对象上去

  1. 带返回值
    /**
     * 带返回值的
     * @param uname
     * @return
	*/
     @ModelAttribute public User getUserBefore_01(String uname){
     System.out.println("getUserBefore....");

     //假设先获取uname,然后查询出一个User,
     User user = new User();
     user.setUname(uname);
     user.setAge(12);
     user.setBirthday(new Date());

     System.out.println(user);
     //第一种:返回user
     return user;
     }
     
  1. 不带返回值的
````/**
     * 不带返回值的,使用一个map
     */
    @ModelAttribute
    public void getUserBefore_02(String uname, Map<String, User> map) {
        System.out.println("getUserBefore....");

        //假设先获取uname,然后查询出一个User,
        User user = new User();
        user.setUname(uname);
        user.setAge(12);
        user.setBirthday(new Date());

        System.out.println(user);
        //第一种:返回user
        map.put("aaa", user);
    }

6)@SessionAttributes

把value数组中的值,作为键名存入session

注解在类上面

  1. 把一个User对象存入session
//将一个键名为“user"的对象存入session
@SessionAttributes(value = {"user"})
@Controller
@RequestMapping("/anno")
public class AnnoController {  
    
    @RequestMapping("/testSessionAttribute")
    public String testSessionAttribute(Model model) {
        System.out.println("存入user到session....");

        User user = new User();
        user.setUname("Yangx");
        user.setAge(12);
        user.setBirthday(new Date());
        //底层存入request域中
        model.addAttribute("user", user);

        System.out.println(user);
        return "success";
    }
}
  1. 取出session中的User对象(通过ModelMap
    @RequestMapping("/getSessionAttribute")
    public String getSessionAttribute(ModelMap modelMap) {
        System.out.println("取出user");

        User user = (User) modelMap.get("user");

        System.out.println(user);
        return "success";
    }
  1. 删除session域中所有的数据(通过SessionStatus
    @RequestMapping("/delSessionAttribute")
    public String delSessionAttribute(SessionStatus status) {

        System.out.println("删除session数据...");
        status.setComplete();
        
        return "success";
    }  
}

7)@RequestBody

作用:用于读取Request请求的body部分数据,然后把相应的数据绑定到Controller方法的参数上

@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body) {

    System.out.println(body);
    return "success";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值