SpringMVC获取请求数据/参数

SpringMVC获取请求参数

获取基本数据类型

SpringMVC在获取基本数据类型时,会根据参数名进行自动注入(参数名和请求参数名一致)


获取POJO类型

SpringMVC在获取POJO类型时,会根据属性名进行自动注入(POJO的属性名和请求参数名一致),支持级联赋值


获取数组类型

也是参数名和请求参数一致就能够自动注入

@RequestMapping("/getParams3")
@ResponseBody
public void getParams3(String[] strs){
    System.out.println(Arrays.asList(strs));
}

请求URL:http://localhost:8080/getParams3/?strs=str1&strs=str2&strs=str3


获取集合类型

第一种获取集合的方式:封装成一个VO对象

@RequestMapping("/getParams4")
@ResponseBody
public void getParams4(VO vo){
    System.out.println(vo);
    return "success";
}
<form action="${pageContext.request.contextPath}/user/getParams4" method="post">
    <input type="text" name="userList[0].username">
    <input type="text" name="userList[0].age">
    <input type="text" name="userList[1].username">
    <input type="text" name="userList[1].age">
    <input type="submit" value="提交">
</form>

VO对象

public class VO {

    private List<User> userList;

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

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

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

第二种获取集合的方式:ajax请求

1.编写获取请求的方法(在参数前面加上@RequestBody注解)

@RequestMapping("/getParams5")
@ResponseBody
public void getParams5(@RequestBody List<User> userList){
    System.out.println(userList);
}

2.编写ajax.jsp通过ajax请求资源

<html>
<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>
</head>
<body>
<script>
    let userList = new Array();
    userList.push({username: "张三", age: 18});
    userList.push({username: "李四", age: 28});

    $.ajax({
        type: "POST",
        url: "${pageContext.request.contextPath}/user/getParams5",
        data: JSON.stringify(userList),	//传递Json数据
        contentType: "application/json;charset=utf-8"
    });
</script>
</body>
</html>

3.要开放静态资源的访问,否则就访问不到jQuery文件
因为我们配置了内部资源视图解析器,如果不开放静态资源访问,那么SpringMVC在搜索资源时也会加上前缀和后缀

静态资源访问要配合注解驱动来使用,配置了静态资源访问就要配置注解驱动

<!--手动开启某一目录的静态资源访问-->
<!--<mvc:resources mapping="/js/**" location="/js/"/>-->
<!--开放静态资源的访问-->
<mvc:default-servlet-handler/>

解决post请求乱码问题

在web.xml中配置

<!--配置全局过滤器,解决post请求乱码问题,配置在最前面-->
<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>
    <init-param>
        <param-name>forceRequestEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

获取Restful风格的参数

Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等。

彻底理解webservice SOAP WSDL(Restful风格取代了WebServices)
理解本真的 REST 架构风格
深入浅出 REST

//localhost/user/getParams6/张三
@RequestMapping(value = "/getParams6/{username}", method = RequestMethod.GET)
@ResponseBody
public void getParams6(@PathVariable(value = "username", required = true) String username){
    System.out.println(username);
}

如何发送PUT和DELETE请求?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值