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

获得请求头信息

相关推荐
雨中飘荡的记忆1 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌3 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊5 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang5 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang6 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解6 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing10 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean11 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9712 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55121 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java