SpringMVC——获得请求参数


简介

  服务器获取请求参数,有时还需数据封装。

  SpringMVC可以接受如下类型参数:

    基本类型参数

    POJO类型参数  

    数组类型参数

    集合类型参数

  此外需servlet的Api,可以直接在参数中写入类名。

    获取请求头

获得基本类型参数

  Controller中的业务方法的参数名称与请求参数name一致。参数值会自动映射匹配

@RequestMapping("save6")
@ResponseBody
// responseBody 代表不进行页面跳转。直接响应数据
public void save6(String userName,int age ){
    System.out.println("userName: "+userName+"  age:"+age);
}

获得POJO参数

  Controller中业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配

http://127.0.0.1:8080/Spring04_03/user/save6?username=zhangsan&age=19
@RequestMapping("save7")
    @ResponseBody
    public void save7(User user){
        System.out.println(user);
    }

获得数组类型参数

  Controller中的业务方法的数组名称与请求参数name一致。参数值会自动映射匹配

 @RequestMapping("save8")
    @ResponseBody
    public void save8(String[] strs){
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }
    }

获得请求头

  1. @RequestHead()

    参数:

      Value:请求头

      requeired:是否必须

    位置:修饰参数

    作用:该注解修饰的参数获取请求头值

   2. @CookieValue

    参数:

      Vlaue:cookie名

      required:是否必须

    位置:修饰参数

    作用:该注解修饰的参数哦获取cookie值

  使用

    // 获取Cookie
    @RequestMapping("save13")
    @ResponseBody
    public void save13(@CookieValue(value = "JSESSIONID",required = false) String JSESSIONID){
        System.out.println("JSESSIONID: "+JSESSIONID);
    }
    
    // 获取请求头
    @RequestMapping("save12")
    @ResponseBody
    public void save12( @RequestHeader(value = "User-Agent",required = false) String user_agent ){
        System.out.println("user_agent: "+user_agent);
    }

获得集合类型参数

RestFul风格

获取静态资源

  因为SpringMVC的特性

    DispatcherServlet进行urlpattern / 匹配所有请求路径。匹配后根据@Controller内的方法映射找到对应资源。

    而静态资源没有在@Controller内没有配置,所以会找不到

    需要:找不到的静态资源由tomcat查找

@RequestParam:当请求参数名与Controller业务方法参数名称不一致时。需要通过@RequestParam注解显示的绑定

  参数:

    value:与请求参数名称相同

    required:此指定参数是否必须包含。默认为true。提交时没有该参数报错。可改为false

    defaultVaule:默认值赋值

public void save10(@RequestParam("userName") String name, int age ){
        System.out.println("name: "+name+"  age:"+age);
    }

post请求乱码问题

  因为没有filter设置:request.srtCharacterEncoding("utf-8"),所以post请求乱码


    CharacterEncodingFilter
    class>org.springframework.web.filter.CharacterEncodingFilterclass>
    
      encoding
      UTF-8
    
  
  
    CharacterEncodingFilter
    /*
  

加入Spring内置的encodingFilter即可