????????項目中已經導入了Jackson依賴,可以先調用Jackson的JSON轉換的相關方法,將對象或集合轉換成JSON數據,然后通過HttpServletResponse將JSON數據寫入到輸出流中完成回寫,具體步驟如下。
????????1、修改文件DataController.java,在DataController類中新增showDataByJSON()方法,用于將對象轉換成JSON數據并寫入輸出流中完成回寫。
@RequestMapping("showDataByJSON")
public void showDataByJSON(HttpServletResponse response) {try { ObjectMapper om = new ObjectMapper();User user = new User();user.setUsername("heima"); user.setPassword("666");String ujson = om.writeValueAsString(user);response.getWriter().print(ujson);} catch (IOException e) { e.printStackTrace(); }}
????????2、啟動chapter12項目,在瀏覽器中訪問地址http://localhost:8080/chapter12/showDataByJSON。訪問地址后,執行了showDataByJSON()方法,方法執行后將User對象的數據轉換成JSON格式的數據輸出到請求頁面中了。
一、@ResponseBody注解的使用范圍
????????@ResponseBody注解可以標注在方法和類上,當標注在類上時,表示該類中的所有方法均應用@ResponseBody注解。如果需要當前類中的所有方法均應用@ResponseBody注解,也可以使用@RestController注解。
二、@ResponseBody注解的2個使用要求
??????? 使用@ResponseBody注解,項目至少需要符合2個要求,分別如下所示。
???? 項目中有轉換JSON相關的依賴。???? 可以配置轉換JSON數據的消息類型轉換器。??????? 針對上述兩個要求,chapter12項目都已經滿足,項目的pom.xml文件中引入了Jackson相關的依賴,可以用于轉換JSON;Spring MVC的配置文件中配置的<mvc:annotation-driven />元素默認注冊了Java數據轉JSON數據的消息轉換器。
????????接下來通過一個案例演示使用@ResponseBody注解回寫JSON格式的對象數據和集合數據,案例具體實現步驟如下。
1、修改文件DataController.java,在DataController類中新增getUser()方法,用于返回JSON類型的User信息;新增addProducts()方法用于返回JSON類型的Product列表信息。
@RequestMapping("showDataByJSON")public void showDataByJSON(HttpServletResponse response) {try {ObjectMapper om = new ObjectMapper();User user = new User();user.setUsername("heima");user.setPassword("666");String ujson = om.writeValueAsString(user);response.getWriter().print(ujson);} catch (IOException e) {e.printStackTrace();}}
? ? ? ? 2、創建一個商品添加頁面product_add.jsp,在product_add.jsp中創建一個表格,用于顯示用戶信息和添加商品信息。product_add.jsp的部分代碼如下所示。
<script type="text/javascript">// 添加商品function addProducts() {var url="${pageContext.request.contextPath }/addProducts";$.get(url,function (products) {//將處理器返回的商品列表信息添加到表格中for (var i=0;i<products.length;i++) {
$("#products").append("<tr><td>"+products[i].proId+"</td><td>“+products[i].proName+”</td></tr>"); } }) }
</script>