SpringMvc的参数请求类型

文章目录

  • 一、SpringMVC的请求参数类型?
  • 二、具体使用
    • 1.基本数据类型
    • 2.POJO数据类型
    • 3.数组类型
    • 4.集合类型
  • 三、配置全局乱码过滤器
  • 四、参数绑定注解
  • 五、Restful风格参数的获取
    • 1.概念
    • 2.HTTP协议的操作方式
    • 3.实例
  • 六、自定义类型转换器
    • 1.定义转换器类实现Converter接口
    • 2.在配置文件中声明转换器
    • 3.引用转换器
  • 七、获取请求头
  • 八、文件上传
    • 1.文件上传客户端三要素
    • 2.原理
    • 3.单文件上传步骤
    • 4.文件存储
    • 5.多文件上传
  • 总结


一、SpringMVC的请求参数类型?

1.基本数据类型

2.POJO类型

3.数组类型

4.集合类型

二、具体使用

1.基本数据类型

Controller的方法参数的参数名要和请求参数名相同,参数值自动映射
代码如下(示例):
SpringMvc的参数请求类型_第1张图片


2.POJO数据类型

(传统方式):getParamterMap得到map集合
要求请求参数中的参数名对应类方法中的setter方法后通过javaBean封装。
代码如下(示例):
SpringMvc的参数请求类型_第2张图片


3.数组类型

代码如下(示例):
SpringMvc的参数请求类型_第3张图片


4.集合类型

method1:
获得集合时候要将集合参数包装到POJO当中
搭建VO类,封装集合中的数据类型

代码如下(示例):
SpringMvc的参数请求类型_第4张图片

method2(当客户端发起Ajax请求):

当客户端发起Ajax请求时,可以ContentType的类型为json类型,那
么在方法参数位置加上@RequestBody可以直接收集集合数据,无需在使用POJO封装。

代码如下(示例):
SpringMvc的参数请求类型_第5张图片
SpringMvc的参数请求类型_第6张图片
问题(静态资源无法访问):

前端控制器的配置:

 
    DispatcherServlet
    /
  

控制器会将jquery作为访问的路径,自然找不到对应的mapping。

解决思路:

1.开放静态资源


2.权限交付
当spring-mvc匹配不到对应的地址后就将权限交给原始的容器去寻找(当前使用的是tomcat)



三、配置全局乱码过滤器

配置filter:


  
    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
  
  
    characterEncodingFilter
    /*
  

四、参数绑定注解

前提:当请求参数与Controller业务方法对应的参数名称不相同时,需要通过@RequestParam注解显示绑定

代码如下(示例):

SpringMvc的参数请求类型_第7张图片
@RequestParam参数:

1.value:请求参数名称

2.required:指定请求参数是否必要,默认为true,当请求没有该参数时会报错。

3.defaultValue:当没有该参数时,使用默认参数


五、Restful风格参数的获取

1.概念

Restful是一种架构风格,而并不是标准,只是提供了一种设计原则和约束条件,使得设计风格更加简洁有层次感,更易于缓存机制。

2.HTTP协议的操作方式

1.GET:用于获取资源

2.Post:用于新建资源

3.PUT:用于更新资源

4.DELETE:用于删除资源

3.实例

代码如下(示例):
SpringMvc的参数请求类型_第8张图片


六、自定义类型转换器

1.定义转换器类实现Converter接口

代码如下(示例):

SpringMvc的参数请求类型_第9张图片

2.在配置文件中声明转换器


    
        
            
                
            
        
    

3.引用转换器


    

七、获取请求头

1.使用@RequestHeader可以获得请求头信息,相当于web阶段的request.getHeader(name)。

2.@CookieValue用于获取Cookie信息


八、文件上传

1.文件上传客户端三要素

① 表单项type=“file”

② 表单提交方式为Post

③ 表单的enctype属性值必须为multipart/form-data

描述
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
text/plain 空格转换为 “+” 加号,但不对特殊字符编码。

2.原理

① 当表单修改为多部分表单时request.getParameter将失效

② 请求体的正文内容变成了多部分形式

3.单文件上传步骤

① 导入fileupload和io的坐标

   
      commons-fileupload
      commons-fileupload
      1.3.1
    

    
      commons-io
      commons-io
      2.4
    

② 配置文件上传解析器


    
        
        
    

③ 编写文件上传编码

 @RequestMapping("/main8")
    public void save8(String name , MultipartFile filename){
        System.out.println(filename);
    }

注:MultipartFile对应的对象名要和文件请求的name相同

4.文件存储

MutipartFile中存在方法transferTo,只需传递File对象即可保存上传的文件。

 @RequestMapping("/main8")
    public void save8(String name , MultipartFile filename) throws IOException {
        System.out.println(filename);
        String originalFilename = filename.getOriginalFilename();
        filename.transferTo(new File("xxxxxxxxxx"));
    }

5.多文件上传

MultipartFile数组作为参数即可。


总结

以上为spring-mvc的请求参数的基本内容,对于集合数据类型需要重点掌握。细节性知识点,例如:开启静态资源访问(mvc:resource),全局乱码过滤器(filter)等也需要重点掌握。

你可能感兴趣的:(java,spring)