【重温SSM框架系列】8 - SpringMVC获取请求数据

简介: 【重温SSM框架系列】8 - SpringMVC获取请求数据

1. 获取基本类型参数

在这里插入图片描述

    // 获取基本类型参数
    @RequestMapping("/data1")
    @ResponseBody
    public void data1(String username,String password){
        System.out.println("username: " + username);
        System.out.println("password: " + password);
    }

控制台打印:
在这里插入图片描述

2. 获取POJO类型参数

Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
在这里插入图片描述在这里插入图片描述

    // 获取POJO类型参数
    @RequestMapping("/data2")
    @ResponseBody
    public void data2(User user){
        System.out.println(user);
    }

在这里插入图片描述

3. 获取数组类型参数

Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。
在这里插入图片描述

    // 获取数组类型参数
    @RequestMapping("/data3")
    @ResponseBody
    public void data3(String[] strings){
        for(String string:strings){
            System.out.println(string);
        }
    }

在这里插入图片描述

4. 处理请求数据乱码问题

当post请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤。

在web.xml 中配置如下过滤器:

  <!-- 中文乱码过滤器 -->
  <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>

5. RequestParam注解绑定参数

当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定。
在这里插入图片描述

    // 通过RequestParam绑定参数
    @RequestMapping("/data4")
    @ResponseBody
    public void data4(@RequestParam("name") String username, @RequestParam("pwd") String password){
        System.out.println("username: " + username);
        System.out.println("password: " + password);
    }

在这里插入图片描述注解@RequestParam还有如下参数可以使用:

  • value:与请求参数名称
  • required:此在指定的请求参数是否必须包括,默认是true,提交时如果没有此参数则报错
  • defaultValue:当没有指定请求参数时,则使用指定的默认值赋值

6. 获得Restful风格的参数

在这里插入图片描述在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作。

    // 获取Restful风格的参数
    @RequestMapping("/data5/{username}/{password}")
    @ResponseBody
    public void data5(@PathVariable("username") String username,@PathVariable("password") String password){
        System.out.println("username: " + username);
        System.out.println("password: " + password);
    }

在这里插入图片描述

7. 自定义类型转换器

SpringMVC默认已经提供了一些常用的类型转换器,例如客户端提交的字符串转换成int型进行参数设置。但是不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据就需要自定义转换器。

  1. 创建DateConverter类并实现Converter接口

注意Converter接口导包时,导 org.springframework.core.convert.converter.Converter;

public class DateConverter implements Converter<String,Date> {
    @Override
    public Date convert(String str) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");

        try {
            Date date = format.parse(str);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return null;
    }

}
  1. 配置自定义类型转换器

在spring-mvc.xml中声明自定义转换器

    <!-- 自定义请求参数类型解析器 -->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.wang.converter.DateConverter"/>
            </list>
        </property>
    </bean>

并在注解驱动中引用

<mvc:annotation-driven conversion-service="conversionService"/>
  1. 测试
    // 获取Date数据,并进行类型转换
    @RequestMapping("/data6")
    @ResponseBody
    public void data6(Date date){
        System.out.println("Date: " + date);
    }

在这里插入图片描述
在这里插入图片描述

8. 文件上传

导入ileupload和io依赖包

        <!--文件上传-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

配置文件上传解析器

    <!-- 文件上传解析器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--上传文件总大小-->
        <property name="maxUploadSize" value="5242800"/>
        <!--上传单个文件的大小-->
        <property name="maxUploadSizePerFile" value="5242800"/>
        <!--上传文件的编码类型-->
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

创建fileUp.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>文件上传测试</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/data7" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>
    // 文件上传
    @RequestMapping("/data7")
    @ResponseBody
    public void data7(@RequestParam("file") MultipartFile uploadFile) throws IOException {
        String originalFilename = uploadFile.getOriginalFilename();

        uploadFile.transferTo(new File("D:\\upload\\" + originalFilename));
    }

访问JSP,选择文件并提交
在这里插入图片描述
在这里插入图片描述

9. 多文件上传

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>文件上传测试</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/data8" method="post" enctype="multipart/form-data">
    文件1:<input type="file" name="files"><br>
    文件2:<input type="file" name="files"><br>
    文件3:<input type="file" name="files"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>
    // 多文件上传
    @RequestMapping("/data8")
    @ResponseBody
    public void data8(@RequestParam("files") MultipartFile[] uploadFiles) throws IOException {
        for(MultipartFile uploadFile:uploadFiles){
            String originalFilename = uploadFile.getOriginalFilename();

            uploadFile.transferTo(new File("D:\\upload\\" + originalFilename));
        }
    }

在这里插入图片描述
在这里插入图片描述

目录
相关文章
|
4月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
Java 数据库连接 Maven
SSM框架整合图书管理项目
这篇文章是关于SSM框架整合到图书管理项目的详细教程,涵盖了从Maven项目构建、依赖导入、数据库连接、配置文件编写、实体类和接口实现到SpringMVC整合的完整步骤。
SSM框架整合图书管理项目
|
3月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
40 0
|
4月前
|
Java 数据库
使用ssm框架搭建的图书管理系统
本文介绍了使用SSM框架搭建的图书管理系统,包括图书信息管理、借阅记录管理、公告管理、出入库管理以及用户管理等功能。
使用ssm框架搭建的图书管理系统
|
3月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
6月前
|
前端开发 JavaScript Java
计算机Java项目|SSM智能仓储系统
计算机Java项目|SSM智能仓储系统
|
4月前
|
SQL Java 应用服务中间件
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
这篇文章是关于如何使用SSM框架搭建图书商城管理系统的教程,包括完整过程介绍、常见问题解答和售后服务,提供了项目地址、运行环境配置、效果图展示以及运行代码的步骤。
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
|
5月前
|
存储 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(2)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
76 1
|
6月前
|
前端开发
杨校老师之基于SSM开发的校园点餐配送系统
杨校老师之基于SSM开发的校园点餐配送系统
64 0
杨校老师之基于SSM开发的校园点餐配送系统