zoukankan      html  css  js  c++  java
  • spring mvc处理json

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
    内部邀请码:C8E245J (不写邀请码,没有现金送)
    国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。 
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------

    一、pom.xml中加入依赖的jar包(在此感谢osc提供的maven仓库)

    <!-- json -->
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-core-asl</artifactId>
      <version>1.9.13</version>
    </dependency>
    
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>

    Jquery/Jquery UI中如下这样调用 

    function openEditDialog(id) {
        $.get("roll/update/" + id + ".json?ts="+ new Date().getTime(), function(data) {
            var t = data['roll'];
            var keys = [ 'id', 'serialNo', 'idNo', 'period', 'realName', 'tel',
                            'email', 'address', 'birth', 'password' ];
            for ( var i = 0; i < keys.length; i++) {
                var key = keys[i];
                $("#" + key).val(t[key]);
            }
    
            $("#roll_dialog").dialog('open');
            $('.ui-button:contains("save")').show();
            $('.ui-button:contains("add")').hide();
        }, "json");
    }

    比如新增用roll/create.json,修改用roll/update/1.json (规则很简单,就是在原有REST风格的url后面拼上.json) 

    Controller中的代码,非常简单,试了一下,以下两种都可以。我会选第1种,更简单! 
    网上写的@ResponseBody啥的都不用。。

    @RequestMapping("update/{id}")
    public void update(Model model, @PathVariable("id") Long id) {
        Lecturer roll = lecturerService.findLecturerById(id);
        model.addAttribute("roll",roll);
    }
    
    @RequestMapping("update/{id}")
    public ModelAndView update(@PathVariable("id") Long id) {
        ModelAndView mv = new ModelAndView();
        Lecturer roll = lecturerService.findLecturerById(id);
        mv.addObject("roll","roll");
        return mv;
    }

    addAttribute/addObject的时候如果不写key比如这里如果不写"roll",则返回的json对象的key是这个对象的类型名(比如这里默认将会是lecturer) 


    最后是mvc.xml的配置(一劳永逸) 

    <bean
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <!-- 设置为true以忽略对Accept Header的支持 -->
        <property name="ignoreAcceptHeader" value="true" />
        <!-- 在没有扩展名时即: "/user/1" 时的默认展现形式 -->
        <property name="defaultContentType" value="text/html" />
        
        <!-- 扩展名至mimeType的映射,即 /user.json => application/json -->
        <property name="mediaTypes">
            <map>
                <entry key="html" value="text/html"/>    
                <entry key="json" value="application/json" />
                <entry key="xml" value="application/xml" />
            </map>
        </property>
        <!-- 用于开启 /userinfo/123?format=json 的支持,false为关闭之,我更喜欢.json的方式,因为可以少敲几次键盘 -->
        <property name="favorParameter" value="false" />
        <property name="viewResolvers">
            <list>
                <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
                    <bean
                        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                        <property name="prefix" value="/WEB-INF/jsp/"></property>
                        <property name="suffix" value=".jsp"></property>
                    </bean>
            </list>
        </property>
        <property name="defaultViews">
            <list>
                <!-- for application/json -->
                <bean
                    class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
            </list>
        </property>
    </bean>

    最后是效果

  • 相关阅读:
    JAVA多线程大总结篇
    JAVA多线程总结01
    Eclipse配置Tomcat
    jdbc注册驱动出现Loading class `com.mysql.jdbc.Driver'. This is deprecated的问题:
    windows10环境下eclipse连接mysql
    mysql忘记密码,如何修改
    c++笔记:虚函数必要但易忘的一些性质
    Mysql 4 —— select 进阶
    Mysql 3 —— 建表
    数据结构实验一:单链表就地翻转
  • 原文地址:https://www.cnblogs.com/AloneSword/p/3419324.html
Copyright © 2011-2022 走看看