zoukankan      html  css  js  c++  java
  • spring mvc接收JSON格式的参数

    1.配置spring解析json的库

      <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.8</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
     

    2.设置spring mvc 的配置文件

    配置中资源解析器,messageConverters属性接收一个list,如果有其他解析器可以依次向其中添加,

    不同的请求content类型spring会选择不同的解析器,解析后的内容会通过特殊的注解传送到spring mvc controller的方法中。

    <beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
            <beans:property name="messageConverters">
                <util:list>
                    <beans:bean id="stringHttpMessageConverter" class="com.weishu.platform.integration.support.spring.ConfigurableStringHttpMessageConverter">
                        <beans:constructor-arg value="UTF-8"/>
                    </beans:bean>
                   
                    <beans:bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
                   
                </util:list>
            </beans:property>
        </beans:bean>

    3.配置spring mvc controller 

    使用注解@RequestBody配置参数为json对象,注意目前spring 配合 Jackson JSON库还不能正确处理泛型,如果将@RequestBody DeviceCommand[] deviceCommands 替换为List<DeviceCommand> deviceCommands ,spring 将不能将json解析为DeviceCommand对象,而是转换为LinkedHasMap对象。

     @RequestMapping(value = "/admin/deviceManagement/update_device_white_list_status", method = RequestMethod.POST)
     @ResponseBody
     public String updateUserWhiteListStatus(Model model, @RequestBody DeviceCommand[] deviceCommands) {
      JSONObject result = new JSONObject();
      try {
       deviceService.changeDeviceWhiteListStatus(Arrays.asList(deviceCommands));
       result.put("success", true);
      } catch (Exception e) {
       result.put("success", false);
       result.put("message", e.getMessage());
       e.printStackTrace();
      }
      return result.toJSONString();
     }

    4.在请求中设置json对应的content类型

      $.ajax({
        url : 'update_device_white_list_status.service',
        dataType : 'json',
        contentType : 'application/json',
        data : $.toJSON(deviceCommands),
        success : function(e) {
         $.messager.progress('close');
         if (e.success) {
          whiteListGrid.datagrid("reload");
          $.messager.alert('成功', '操作成功', 'info');
         
         } else {
          $.messager.alert('请注意', '操作失败:' + e.message, 'error');
         }
        },
        error : function(e) {
         $.messager.progress('close');
         $.messager.alert('请注意', '操作失败:' + e.message, 'error');
        }
       });
  • 相关阅读:
    [轉][Windows] 已啟用Win7遠端桌面,從家中連回去卻無法連線?
    [轉]False SQL Injection and Advanced Blind SQL Injection
    SQL Injection with INFORMATION_SCHEMA (Mysql)
    Exploiting hard filtered SQL Injections
    Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息
    12个月内自学完成4年麻省理工学院计算机科学的33门课程的scotthyoung所谓的超速学习理论&方法(费曼技巧)?
    SQLi filter evasion cheat sheet (MySQL)
    [轉]字符形注入
    [轉]渗透测试必备Firefox全套渗透装
    Phpexcel範例
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5091084.html
Copyright © 2011-2022 走看看