
文章插图
@Controller
标识一个该类是Spring MVC controller处理器 , 用来创建处理http请求的对象.
1@Controller2public class TestController {3 @RequestMApping("/test")4 public String test(Map<String,Object> map){56 return "hello";7 }8}@RestController
Spring4之后加入的注解 , 原来在@Controller中返回json需要@ResponseBody来配合 , 如果直接用@RestController替代@Controller就不需要再配置@ResponseBody , 默认返回json格式 。
1@RestController2public class TestController {3 @RequestMapping("/test")4 public String test(Map<String,Object> map){56 return "hello";7 }8}@Service
用于标注业务层组件 , 说白了就是加入你有一个用注解的方式把这个类注入到spring配置中
@Autowired
用来装配bean , 都可以写在字段上 , 或者方法上 。
默认情况下必须要求依赖对象必须存在 , 如果要允许null值 , 可以设置它的required属性为false , 例如:@Autowired(required=false)
@RequestMapping
类定义处: 提供初步的请求映射信息 , 相对于 WEB 应用的根目录 。
方法处: 提供进一步的细分映射信息 , 相对于类定义处的 URL 。
用过RequestMapping的同学都知道 , 他有非常多的作用 , 因此详细的用法
我会在下一篇文章专门讲述 , 请关注公众号哦 , 以免错过 。
@RequestParam
用于将请求参数区数据映射到功能处理方法的参数上
例如
1public Resp test(@RequestParam Integer id){2 return Resp.success(customerInfoService.fetch(id));3 }这个id就是要接收从接口传递过来的参数id的值的 , 如果接口传递过来的参数名和你接收的不一致 , 也可以如下
1public Resp test(@RequestParam(value=https://www.isolves.com/it/cxkf/yy/JAVA/2019-08-07/"course_id") Integer id){2 return Resp.success(customerInfoService.fetch(id));3 }其中course_id就是接口传递的参数 , id就是映射course_id的参数名
@ModelAttribute
使用地方有三种:
1. 标记在方法上 。
标记在方法上 , 会在每一个@RequestMapping标注的方法前执行 , 如果有返回值 , 则自动将该返回值加入到ModelMap中 。A.在有返回的方法上:
当ModelAttribute设置了value , 方法返回的值会以这个value为key , 以参数接受到的值作为value , 存入到Model中 , 如下面的方法执行之后 , 最终相当于 model.addAttribute("user_name", name);假如 @ModelAttribute没有自定义value , 则相当于
model.addAttribute("name", name);
1@ModelAttribute(value=https://www.isolves.com/it/cxkf/yy/JAVA/2019-08-07/"user_name")2 public String before2(@RequestParam(required = false) String name, Model model) {3 System.out.println("进入了2:" + name);4 return name;5 }B.在没返回的方法上:
需要手动model.add方法
1 @ModelAttribute2 public void before(@RequestParam(required = false) Integer age, Model model) {3 model.addAttribute("age", age);4 System.out.println("进入了1:" + age);5 }我们在当前类下建一个请求方法:
1@RequestMapping(value=https://www.isolves.com/it/cxkf/yy/JAVA/2019-08-07/"/mod") 2 public Resp mod( 3 @RequestParam(required = false) String name, 4 @RequestParam(required = false) Integer age,5 Model model){ 6 System.out.println("进入mod"); 7 System.out.println("参数接受的数值{name="+name+";age="+age+"}"); 8 System.out.println("model传过来的值:"+model); 9 return Resp.success("1");10 }在浏览器中输入访问地址并且加上参数:
http://localhost:8081/api/test/mod?name=我是小菜&age=12
最终输出如下:
1进入了1:402进入了2:我是小菜3进入mod4参数接受的数值{name=我是小菜;age=12}5model传过来的值:{age=40, user_name=我是小菜}2. 标记在方法的参数上 。
标记在方法的参数上 , 会将客户端传递过来的参数按名称注入到指定对象中 , 并且会将这个对象自动加入ModelMap中 , 便于View层使用.我们在上面的类中加入一个方法如下1@RequestMapping(value=https://www.isolves.com/it/cxkf/yy/JAVA/2019-08-07/"/mod2") 2 public Resp mod2(@ModelAttribute("user_name") String user_name,3 @ModelAttribute("name") String name, 4 @ModelAttribute("age") Integer age,Model model){ 5 System.out.println("进入mod2"); 6 System.out.println("user_name:"+user_name); 7 System.out.println("name:"+name); 8 System.out.println("age:"+age); 9 System.out.println("model:"+model);10 return Resp.success("1");11 }
推荐阅读
- 图解Linux中的挂载原理
- 黄花菜原来就是传说中的忘忧草 黄花菜忘忧草
- 茶叶中的香槟 关于大吉岭红茶的介绍
- 苍耳酒方的功效与作用
- 病假工资能否低于最低工资标准?工伤保险赔付中的“本人工资”是什么?12333告诉你
- 尿常规中的“+”号都代表什么意思?
- 乌木——木材中的王者 什么叫乌木
- 太极阴阳诀太极九诀中的至高法诀
- 太极阴阳拳养生拳法中的精品
- python中的线程与线程池
