SpringMVC之@RequestBody,@ResponseBody,@RequestParam用法

流过昼夜 提交于 2020-04-13 16:17:35

【今日推荐】:为什么一到面试就懵逼!>>>

1.@RequestBody,@ResponseBody

    在使用@RequestBody和@ResponseBody之前需要先配置,一般是JSON数据和实体对象之间的转化,springMVC.xml配置文件需要如下配置:

<mvc:default-servlet-handler />

	<!-- java对象和json之间的转化-->
	<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean id="fastJsonHttpMessageConverter"
				class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>application/json;charset=UTF-8</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

 

Server端:

    @RequestMapping(value = "/ajax",method = RequestMethod.POST)
    @ResponseBody
    public GenericResponse ajax(HttpServletRequest request,@RequestBody User user){
        //..............
        return new GenericResponse(); //返回JSON数据
    }

客户端:

  function httprequest(){
        $.ajax({
            type: "POST",
            url: "/ajax",
            dataType: "json",
            contentType:"application/json",
            data:JSON.stringify(
                 {a:1,b:"test"}),
            success: function(data){
                alert(data.code)
            }
        });
    }

通过@RequestBody注解的对象,可以自动把JSON转化成对象。

 

下面是默认的表单提交方式。

Server端:

//-------------------方式2------------------------------
    @RequestMapping(value = "/ajax",method = RequestMethod.POST)
    @ResponseBody
    public GenericResponse ajax(HttpServletRequest request,int a,String b){
        //..............
        return new GenericResponse(); //返回JSON数据
    }


//-------------------方式2------------------------------

    class Param{
       int a;
       String b;
       ..... getter/setter
    }
    @RequestMapping(value = "/ajax",method = RequestMethod.POST)
    @ResponseBody
    public GenericResponse ajax(HttpServletRequest request,Param param){
        //..............
        int a=param.getA();
        String b=param.getB();
        return new GenericResponse(); //返回JSON数据
    }

客户端:

  function httprequest(){
        $.ajax({
            type: "POST",
            url: "/ajax",
            dataType: "json",
            contentType:"application/x-www-form-urlencode",
            data:({a:1,b:"test"}),
            success: function(data){
                alert(data.code)
            }
        });
    }

关于Controller方法中通过设置参数 获取客户端传送过来的值的几点

1.当POST表单提交方式,Controller 可以在方法中设置对象参数变量来接收客户端传送过来的值

    也可以设置多个参数接收值。

2.当GET表单提交,则只能在Controller方法通过设置多个参数变量获取值。

3.当POST使用JSON方式提交,服务端需要使用@ResponseBody 注解对象参数,来获取客户端值

 

2. @RequestParam(value="aa", required=true)

   注解请求参数,将请求值绑定到方法参数,例如: 

@RequestMapping("testRequestParam")    
public String filesUpload(@RequestParam(value="aa", required=true) String inputStr,   
                                    @RequestParam(value="inputInt", required=false) int inputInt  
                                              ,HttpServletRequest request) {    
               // ......省略  
               return "index";  
}  

    客户端请求: url?aa=xxx&inputInt=xxxx;

 

3.@ModelAttribute 使用详解

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!