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>

 

最后是效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM