SpringMVC(四)之requestParam、requestBody、responseBody

RequestParam

A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get方式中queryString的值,也可以处理post方式中 body data的值;

B)用来处理Content-Type:application/x-www-form-urlencoded编码的内容,提交方式GETPOST

C) 该注解有三个属性:

value:参数名字,即入参的请求参数名字;
required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报400错误码;
defaultValue:默认值,表示如果请求中没有同名参数时的默认值;

@RequestMapping("findUserById")
public String findUserById(@RequestParam(defaultValue="1",value="userid",required=true) String id) {
    return "success";
}

形参名称为id,但是这里使用value=”userid”限定接收的参数名为userid,所以页面传递参数的名必须为userid。这里通过required=true限定userid参数为必需传递,如果不传递则报400错误,由于使用了defaultvalue="1"默认值即使不传userid参数它的值为”1”,所以页面不传递userid也不会报错,如果去掉defaultvalue="1"且定义required=true则如果页面不传递userid则会报错。


RequestBody / ResponseBody处理Json数据

RequestBody

该注解常用来处理非Content-Type:application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;

它是通过使用HandlerAdapter配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。

ResponseBody

用来将Java对象转成Json数据,返回页面

示例代码

项目搭建在这篇《SpringMVC之注解以及参数封装》以及介绍过,这里不再介绍

环境:JDK1.8、tomcat8、spring4.3.2、jackson2.6.5
因为Spring和jackson会出现版本兼容问题,我使用的是spring4.3.2和jackson2.6.5

这里写图片描述

springmvc.xml

<!-- 此配置等价于配置了RequestMappingHandlerMapping、RequestMappingHandlerAdapter以及提供json数据格式的支持  -->
<mvc:annotation-driven />

testJson.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script>
</head>
<script type="text/javascript">
    var jsonUser = JSON.stringify({"username":"张三","age":"18","address":"北京"});
    function requestJson(){
        $.ajax({
            type:"post",
            url:'${pageContext.request.contextPath }/user/requestJson.do',
            contentType:"application/json;chartset=utf-8",
            data:jsonUser,
            success:function(data){
                console.log(data);
            }
        });
    }

    function requestPojo(){
        $.ajax({
            type:"post",
            url:'${pageContext.request.contextPath }/user/requestPojo.do',
            data:{
                username:"李四",
                age:"18",
                address:"北京"
            },
            success:function(data){
                console.log(data);
            }
        });
    }
</script>
<body>
    <input type="button" onclick="requestJson()" value="请求json,返回json"/>
    <input type="button" onclick="requestPojo()" value="请求pojo,返回json"/>
</body>
</html>

UserController.java

// 请求json,返回json
@RequestMapping("requestJson")
public @ResponseBody User requestJson(@RequestBody User user) {
    System.out.println("requestJson.do-->" + user);
    return user;
}
// 请求pojo,返回json
@RequestMapping("requestPojo")
public @ResponseBody User requestPojo(User user) {
    System.out.println("requestPojo.do-->" + user);
    return user;
}

结果

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

上一篇:《SpringMVC(三)之数据回显、url模板映射、转发和重定向》
下一篇:《SpringMVC(五)之拦截器》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值