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

获得请求头信息

相关推荐
小羊没烦恼!6 小时前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里6 小时前
java中的继承和多态的区别
java
小羊没烦恼!6 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕6 小时前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码7 小时前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖7 小时前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时7 小时前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读7 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
vipxieliang7 小时前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
C语言小火车8 小时前
C/C++ 为什么需要编译器?
开发语言·c++