SpringMVC的注解

@RequestMapping

指定请求的路径

  • value :用于指定请求的url。它和path属性的作用是一样的。

  • path :路径

  • method :请求的方法。RequestMethod.GET,RequestMethod.POST

  • params :指定请求中的参数。params = {"username"},请求参数必须有"accountName"

  • headers :用于指定限制请求消息头的条件。headers ={"Accept"} 表示请求头要有Accept参数

@RequestParam

把请求中的指定名称的参数传递给控制器中的形参赋值. testRequestParam(@RequestParam(name = "name",required = true) String username)

  • value:请求参数中的名称

  • required:请求参数中是否必须提供此参数,默认值是true,必须提供

@RequestBody注解

用于获取请求体的内容(注意:get方法不可以)saveUser(@RequestBody String body)

  • required:是否必须有请求体,默认是true

@PathVariable

拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符.

@RequestMapping("/testPathVariable/{id}")
  public String testPathVariable(@PathVariable("id") String id){}
  • value:指定url中的占位符名称

@RequestHeader

获取请求头中的参数

@RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader("Cookie") String header){
        System.out.println(header);
        return "success";
    }

@CookieValue

用于获取指定cookie的名称的值

@RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue("JSESSIONID") String header){
        System.out.println(header);
        return "success";
    }

@ModelAttribute

    /*
        ModelAttribute注解
        作用
            出现在方法上:表示当前方法会在控制器方法执行前执行。
            出现在参数上:获取指定的数据给参数赋值。
        应用场景
            当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。
     */
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("abc") User user){
        System.out.println(user);
        return "success";
    }

    /**
     * ModelAttribute注解
     *  会在RequestMapping注解执行之前执行
     */
    @ModelAttribute
    public void showUser(String uname, Map<String,User> map){
        User user = new User();
        user.setUname(uname);
        user.setAge(18);
        user.setDate(new Date());
        map.put("abc",user);
        System.out.println("showUser方法执行了。。。"+user);

    }

@SessionAttributes

把值存入session中

@Controller
@RequestMapping("sessionAttribute")
@SessionAttributes(names = {"name"})//把name的值存到session域对象中一份
public class SessionAttributeController {

    /**
     * 存值
     * @param model
     * @return
     */
    @RequestMapping("testPut")
    public String testPut(Model model){
        String name = "张三";
        model.addAttribute("name",name);
        System.out.println("put:" + name);
        return "success";
    }

    /**
     * 取值
     * @param modelMap
     * @return
     */
    @RequestMapping("testGet")
    public String testGet(ModelMap modelMap){
        String name = (String) modelMap.get("name");
        System.out.println("get:" + name);
        return "success";
    }

    /**
     * 删除
     * @param status
     * @return
     */
    @RequestMapping("testDel")
    public String testDel(SessionStatus status){
        status.setComplete();
        System.out.println("delete session");
        return "success";
    }
}

@ResponseBody

自动将返回的对象转换成 JSON 格式

    @RequestMapping("/testAjax")
    @ResponseBody
    public User testAjax(@RequestBody User user){
        System.out.println("testAjax方法执行了。。。。");
        System.out.println(user);
        User resUser = new User();
        resUser.setUsername("zjw");
        resUser.setPassword("654321");
        resUser.setAge(19);
        return resUser;
    }

@RequestMapping(value = "/testJson2", produces = {"application/json;charset=UTF-8"}) 表明当一个 HTTP 请求的 URL 匹配 /testJson2 且客户端期望的响应内容为 JSON 格式时,这个方法将被触发。这个方法的输出将是一个 JSON 格式的字符串,且以 UTF-8 编码。

    @ResponseBody
    @RequestMapping(value = "/testJson2" , produces = {"application/json;charset=UTF-8"})
    public String testJson2() throws JsonProcessingException {
        System.out.println("testJson2方法执行了。。。。");
        User resUser = new User();
        resUser.setUsername("zzz");
        resUser.setPassword("654321");
        resUser.setAge(19);
        System.out.println(resUser);
        ObjectMapper objectMapper = new ObjectMapper();
        String userJson = objectMapper.writeValueAsString(resUser);
        return userJson;
    }
posted @ 2020-11-10 20:01  雨中遐想  阅读(121)  评论(0编辑  收藏  举报