SpringMVC——获得请求参数

简介

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

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

    基本类型参数

    POJO类型参数  

    数组类型参数

    集合类型参数

  

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

 

    获取请求头

  

包装类型设置参数

  在springmvc接受参数的时候,尽量不要使用基本数据类型

  Optional int parameter 'currpage' is present but cannot be translated into a null value due to being dec

  大意是说 如果参数是非必须的,则会赋值为null,因此参数应该是一个object,它才能接受这个null值。

  而上面代码参数currpage的类型 为 int,它接受不了null值。

    解决方法:

    将int 改为 对象类型 Integer :

 

获得基本类型参数

  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内没有配置,所以会找不到

    需要<mvc:default-servlet-handler/>:找不到的静态资源由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请求乱码

  

 

 

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

加入Spring内置的encodingFilter即可

posted @ 2021-11-21 08:07  remix_alone  阅读(339)  评论(0)    收藏  举报