• Spring web MVC(入门)


    1、什么是MVC(一种思想)

    Model View Controller : Model—模型  View—视图  Controller—控制器

    2、Spring MVC是一种实现(我们现在学的是Spring web,Spring mvc过时了)

    View属于前端问题我们后端人员不必太过于关注

    3、学习Spring web MVC 

    (1)建立连接(当一个类上有多个注解时没有先后顺序)

    使用@RequestMapping注解(浏览器和程序进行映射)可以作用在类上和方法上

    @RestController负责检查程序有无@RequestMapping注解

    修改任何代码都需要重新运行(路径的/可加可不加,最好加上):

    (1.1)方法路径

    1. @RestController
    2. public class user {
    3. @RequestMapping("/good")
    4. public String good(){
    5. return "good";
    6. }
    7. }

    (1.2)类路径(我们需要加类路径在加方法路径)

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/good")
    5. public String good(){
    6. return "good";
    7. }
    8. }

    (1.3)路径也可以写多层

    @RequestMapping("/good/goo")

    (2)请求和响应(利用psotman来发送请求测试,可以切换post和get等方式)

    (2.1)上传一些二进制的文件,图片等

    (2.2)指定请求方式(get,post等)

    (2.3)传递参数

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/r1")
    5. public String r1(String name){
    6. return "接收到的参数 name:"+name;
    7. }
    8. }

    (2.4)要用包装类型,int不行

    (2.5)传递多个参数(参数请求不分先后顺序)

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/r1")
    5. public String r1(String name,Integer age){
    6. return "接收到的参数 name:"+name+",age:"+age;
    7. }
    8. }

    (2.6)参数太多我们可以封装成一个对象

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/r1")
    5. public String r1(userinfo user){
    6. return user.toString();
    7. }
    8. }
    1. package com.example.demo;
    2. public class userinfo {
    3. private String name;
    4. private Integer id;
    5. private Integer age;
    6. public String getName() {
    7. return name;
    8. }
    9. public void setName(String name) {
    10. this.name = name;
    11. }
    12. public Integer getId() {
    13. return id;
    14. }
    15. public void setId(Integer id) {
    16. this.id = id;
    17. }
    18. public Integer getAge() {
    19. return age;
    20. }
    21. public void setAge(Integer age) {
    22. this.age = age;
    23. }
    24. @Override
    25. public String toString() {
    26. return "userinfo{" +
    27. "name='" + name + '\'' +
    28. ", id=" + id +
    29. ", age=" + age +
    30. '}';
    31. }
    32. }

    我们封装成对象时可以用基本类型

    (2.7)参数重命名(利用@RequestParam)

    前端传入name我们后端可以用自己定义的名字username

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/r1")
    5. public String r1(@RequestParam("name") String username){
    6. return username;
    7. }
    8. }

    (2.8)利用@RequestParam之后我们的参数成必传参数了,不传就会报错,我么可以用一个代码来解决

    (2.9)传数组(两种传递方式)

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/r1")
    5. public String r1(String [] arr){
    6. return Arrays.toString(arr);
    7. }
    8. }

    (2.10)传递集合(需要利用@RequestParam注解)此时必传参数,可以利用上述方法解决这个必传参数问题

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/r1")
    5. public String r1(@RequestParam("list") List list){
    6. return list.toString();
    7. }
    8. }

    此时必传参数,可以利用上述方法解决这个问题

    但是此时还会报空指针问题,我们此时需要在我们的代码上继续解决问题

    1. @RestController
    2. @RequestMapping("/user")
    3. public class user {
    4. @RequestMapping("/r1")
    5. public String r1(@RequestParam(value = "list",required = false) List list){
    6. if(list!=null) {
    7. return list.toString();
    8. }
    9. return "list为空";
    10. }
    11. }

  • 相关阅读:
    单商户商城系统功能拆解23—用户标签
    云计算等保测评
    【C】喝汽水,找单身狗问题
    GIT命令只会抄却不理解?看完原理才能事半功倍!
    2023年行云绽放&傲冠股份厨艺比拼团建活动圆满结束
    EventLoop
    华为OD机试 - 用户调度问题(Java 2023 B卷 100分)
    Android学习笔记 69. 文本和滚动视图
    【C语言】预处理详解
    postman拦截浏览器请求
  • 原文地址:https://blog.csdn.net/m0_69134284/article/details/136578708