1.  请求映射路径:接口按照“模块名/功能名"规则来定义,模块前辍可以定义在每个功能方法前面,也可以定义到bean最外面,

@Controller

@RequestMapping("/user")  注:模块前辍定义到最外面,只定义一次就行

public class UserController

{

  @RequestMapping("/save")  注:如果类外面没有定义模块前辍,就在这里定义。例:@RequestMapping("/user/save")

  @ResponseBody

  public String save()

  {

    return "";

  }

}

2.  请求参数:两种请求后台处理代码都是一样的,发送的参数名要和后台方法的形参名一致

  如果想让后台方法接收和形参不同名的参数,可以在形参前加注解@RequestParam("发送的参数名")

  ¤  Get请求

  @Controller

  public class UserController

  {

    @RequestMapping("/commonParam")

    @ResponseBody

    public String commonParam(String name ......)  注:name用于接收参数,多个参数接着后面写就是

    {

      return "";

    }

  }

  get请求参数写在请求链接上,用?连接xx=xx形式,多个参数间用&隔开

  ¤  Post请求

  @Controller

  public class UserController

  {

    @RequestMapping("/commonParam")

    @ResponseBody

    public String commonParam(String name ......)  注:name用于接收参数,多个参数接着后面写就是

    {

      return "";

    }

  }

  post请求参数写在body里面,有如下几种类型

    ♦  none

    ♦  form-data        表单,文件

    ♦  x-www-form-urlencoded  表单

    ♦  raw

    ♦  binary

    ♦  GraphQL

  post请求发送中文参数时乱码解决,在ServletContainersInitConfig配置类里面添加过滤器

  public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer

  {

    ..........

    @Override

    protected Filter[] getServletFilters()

    {

      CharacterEncodingFilter filter = new CharacterEncodingFilter();

      filter.setEncoding("UTF-8");

      return new Filter[]{filter};  注:如果有多个过滤器,可以创建好对象,统一添加到数组里。

    }

  }

  ¤  参数种类

    ♦  POJO类型参数

      定义好POJO对象,对象内属性名和发送参数名一样,就能自动封装成对象给接收方法

      public class User

      {

        private String name;

        private int age;

        public String getName(){return name;}

        public void setName(String name){this.name = name;}     

        public int getAge(){return age;}

        public void setAge(int age){this.age = age;}

      }

 

      接收方法

      @RequestMapping("/pojoParam")

      @ResponseBody

      public String pojoParam(User user)

      {

        ........

        return "";

      }

    ♦  嵌套POJO类型参数

      public class Address

      {

        private String city;

        public String getCity(){return city;}

        public void setCity(String city){this.city = city;}

      }

      public class User

      {

        private String name;

        private int age;

        private Address address;

        public String getName(){return name;}

        public void setName(String name){this.name = name;}     

        public int getAge(){return age;}

        public void setAge(int age){this.age = age;}

        public int getAddress(){return address;}

        public void setAddress(Address address){this.address = address;}

      }

      发送参数时user基本属性还是一样,user引用的其它的对象参数用"属性名.属性名=xxx"的方式。例:address.city="beijing"

    ♦  数组类型参数

      接收方法

      @RequestMapping("/arrayParam")

      @ResponseBody

      public String arrayParam(String[] likes)

      {

        ........

        return "";

      }

      发送参数时使用接收方法的形参名发送多个参数。例:likes=game&likes=music&likes=book

    ♦  集合类型参数

      接收方法

      @RequestMapping("/listParam")

      @ResponseBody

      public String listParam(@RequestParam List<String> likes)

      {

        ........

        return "";

      }

      发送参数时使用接收方法的形参名发送多个参数。例:likes=game&likes=music&likes=book

    ♦  json类型参数

      pom.xml文件里添加json坐标

      <dependency>

        <groupId>com.fasterxml.jackson.core</groupId>

        <artifactId>jackson-databind</artifactId>

        <version>2.9.0</version>

      </dependency>

      发送参数时选择类型body>raw>JSON

      SpringMvcConfig中添加注解@EnableWebMvc实现json数据自动转换的支持

      接收方法

      @RequestMapping("/listParamForJson")

      @ResponseBody

      public String listParamForJson(@RequestBody List<String> likes)

      {

        ........

        return "";

      }

3.  日期类型参数传递

  spring默认支持字符串转换日期类型的支持格式为yyyy/mm/dd。如果发送的参数不是这样,接收方法需要加注解做转换

  接收方法

  @RequestMapping("/dataParam")

  @ResponseBody

  public String dataParam(Data data, @DataTimeFormat(pattern="yyyy-mm-dd hh:mm:ss") Data data1)

  {

    ......

    return "";

  }

  根据不同格式,注解参数对应调整

4.  响应页面

  接收方法

  @RequestMapping("/toJumpPage")

  public String toJumpPage()

  {

    return "page.jsp";

  }

5.  响应文本数据

  

接收方法

  @RequestMapping("/toText")

  @ResponseBody

  public String toText()

  {

    return "response text";

  }

6.  响应json数据

  @RequestMapping("/toJsonPOJO")

  @ResponseBody

  public String toJsonPOJO()

  {

    User user = new User();

    user.setName("aaa");

    user.setAge(12);

    retutn user;

    return "response text";

  }