多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## RequestMapping 用于建立请求URL和处理请求方法之间的对应关系.以下 ~~~ @Controller @RequestMapping(path = "/user") public class HelloController { @RequestMapping(path = "/hello", params = {"username"}, method = {RequestMethod.POST}, headers = {"Accept"}) public String hello() { System.out.println("hello springMVC"); return "success"; } } ~~~ 解释: 访问路径:/user/hello params:必须包含username参数. method:请求方式为post. headers:必须包含Accept请求头. ## @RequestParam 作用:吧请求中置地你那个名称的参数给控制器中的形参赋值. 属性:value:请求参数中的名称.required:请求参数中是否必须提供此参数,默认true,不提供将报错. ~~~ @RequestMapping(path = "/annotation") public String testRequestParam(@RequestParam(name = "name", required = true) String username) //将表单中name为"name"的赋值给username,并且必须传递 { System.out.println(username); return "success"; } ~~~ ## @RequestBody 作用:用于获取请求体内容,直接使用得到的是key&vakue结构的数据. 属性:required:是必须有请求体,默认是true.当取值为true时,get请求方式会报错.如果取值是false,get请求得到的是null. ~~~ @RequestMapping(path = "/annotation") public String testRequestParam(@RequestBody String body) { System.out.println(body); return "success"; } ~~~ 结果: ``` name=jack&age=20 ``` ## @PathVariable 作用:用于绑定URL中的占位符.URL占位符是spring3.0之后加入的.是spring支持rest风格URL的一个重要标志. 属性:value:用于指定URL中占位符名称.required:是否必须提供占位符. ``` /annotation/10 ``` ~~~ @RequestMapping(path = "/annotation/{uid}") public String testRequestParam(@PathVariable(name = "uid") Integer id) //PathVariable的值和占位符的值一致 { System.out.println(id); return "success"; } ~~~ ## @RequestHeade 作用:用于获取请求消息头. 属性:value:提供消息头名称.required:是否必须有此消息头. ~~~ @RequestMapping(path = "/annotation") public String testRequestParam(@RequestHeader(value = "Accept") String accept) { System.out.println(accept); return "success"; } ~~~ ## @CookieValue 作用:用于获取cookie的值. 属性:value:.. required:是否必须有此值. ![](https://box.kancloud.cn/b66881eda9c878a4589164c07178a018_2522x124.png) ~~~ @RequestMapping(path = "/annotation") public String testRequestParam(@CookieValue(value = "name") String name) { System.out.println(name); return "success"; } ~~~ ## @ModelAttribute 作用:该注解是springMVC4.3版本以后加入的.它可以用于修饰方法和参数. 出现在方法上,表示当前方法会在控制器执行之前,先执行.它可以修饰没有返回值的方法,也可以修饰有具体翻番至的方法. 出现在参数上,获取指定的数据给参数赋值. 属性:value:用于获取数据的key.key可以是POJO的属性名称,也可以是map结构的key. ### 作用于方法 ~~~ @RequestMapping(path = "/annotation") public String testRequestParam(User user) //这里获取到了经过@ModelAttribute方法的user { System.out.println(user); return "success"; } /** * 该方法会先执行 */ @ModelAttribute public User test(String username) { User user = new User(); user.setUsername(username); user.setAge(20); user.setDate(new Date()); return user; } ~~~ ### 作用于参数 ~~~ @RequestMapping(path = "/annotation") public String testRequestParam(@ModelAttribute("abc") User user) //这里通过"abc"这个key获取到参数 { System.out.println(user); return "success"; } /** * 该方法会先执行 */ @ModelAttribute public void test(String username, Map<String, User> map) { User user = new User(); user.setUsername(username); user.setAge(20); user.setDate(new Date()); map.put("abc", user); } ~~~ ## SessionAttributes 作用:用于多次执行控制器方法间的参数共享. 属性:value:用于指定存入的属性名称.type:用于指定存入的数据类型. ~~~ @Controller @SessionAttributes(value = {"msg"}) //把msg存入到session域中 public class HelloController { @RequestMapping(path = "/annotation") public String testRequestParam(Model model) { //将键值对存入到model中,底层帮我们存入到request域中了 model.addAttribute("msg", "hello world"); return "success"; } @RequestMapping(path = "/get") public String get(ModelMap modelMap) { System.out.println(modelMap.get("msg")); return null; } @RequestMapping(path = "/delete") public String delete(SessionStatus status) { status.setComplete(); //删除session return null; } } ~~~ jsp: ~~~ ${requestScope.msg} ${sessionScope.msg} ~~~