SpringMvc的请求-获得请求参数

客户端请求参数的格式是: name=value&name=value.....

服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数:

基本类型参数

POJO类型参数

数组类型参数

集合类型参数

获得基本类型参数

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

获得POJO类型参数

获得数组类型参数

获得集合数据类型参数

复制代码
import java.util.List;

public class Vo {
    private List<User> userList;

    @Override
    public String toString() {
        return "Vo{" +
                "userList=" + userList +
                '}';
    }

    public List<User> getUserList() {
        return userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }
}


    @RequestMapping("/quick11")
    @ResponseBody//告诉SPring框架, 不进行视图跳转, 直接进行数据响应
    public void save11(Vo vo){
        System.out.println(vo);
    }


<body>
    <form action="${pageContext.request.contextPath}/user/quick11" method="post">
<%--        要表明第几个User对象的name和age--%>
        <input type="text" name="userList[0].username"><br/>
        <input type="text" name="userList[0].age"><br/>
        <input type="text" name="userList[1].username"><br/>
        <input type="text" name="userList[1].age"><br/>
        <input type="text" name="userList[2].username"><br/>
        <input type="text" name="userList[2].age"><br/>
        <input type="text" name="userList[3].username"><br/>
        <input type="text" name="userList[3].age"><br/>
        <input type="submit" value="提交">
    </form>
</body>

直接访问会出现找不到资源的情况需要对静态资源访问权限开放

第一种开放资源的访问权限 第二种交给原始容器去匹配寻找静态资源

运行时汉字出现乱码需要在WEB.XML配置全局过滤的filter

复制代码
<!--    配置全局过滤的filter-->
    <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>

参数绑定注解@requestParam

获得Restful等个的参数

自定义类型转换器

复制代码
//①
public class DataConverter implements Converter<String, Data> {
    @Override
    public Data convert(String source) {
        //将日期字符串转换为日期对象 然后返回
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Data data = null;
        try {
            Date date = format.parse(source);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        return data;
    }
}


//②
<!--    声明转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.itheima.converter.DataConverter"/>
            </list>
        </property>
    </bean>
</beans>


//③
<!--    mvc的注解驱动-->
    <mvc:annotation-driven conversion-service="conversionService"/>

获得Servlet相关API

获得请求头信息

相关推荐
咩咩啃树皮5 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
灯澜忆梦6 小时前
GO_并发编程---定时器
开发语言·后端·golang
鱟鲥鳚6 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
-银雾鸢尾-6 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-6 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白7 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司8 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地9 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun3141599 小时前
TCP超时重传机制是为了解决什么问题?
java
段一凡-华北理工大学9 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化