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

1.@RequestBody,@ResponseBodyjavascript

    在使用@RequestBody和@ResponseBody以前須要先配置,通常是JSON數據和實體對象之間的轉化,springMVC.xml配置文件須要以下配置:java

<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端:ajax

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

客戶端:spring

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轉化成對象。json

 

下面是默認的表單提交方式。mvc

Server端:app

//-------------------方式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數據
    }

客戶端:ui

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方法中經過設置參數 獲取客戶端傳送過來的值的幾點url

1.當POST表單提交方式,Controller 能夠在方法中設置對象參數變量來接收客戶端傳送過來的值spa

    也能夠設置多個參數接收值。

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 使用詳解

相關文章
相關標籤/搜索