json是一種常見的傳遞格式,是一種鍵值對應的格式。并且數據大小會比較小,方便傳遞。所以在開發中經常會用到json。
首先看一下json的格式:
{key1:value1,key2:value2}每一個建對應一個值,每個鍵值對之間用逗號連接。并且最后一個鍵值對之后沒有逗號,整體需要有大括號括起來。
一般正常的servlet返回json時,會像下面這樣:
response.setContentType("text/JSON;charset=utf-8");response.getWriter().print(gson.toJson(page));response.getWriter().flush();response.getWriter().close();return null;這樣相對來說比較麻煩,也不好封裝。新版spring返回json時,可以通過@ResponseBody直接返回,這點做得很不錯,大概代碼如下:
@Controller@RequestMapping("/json")public class JsonController { @RequestMapping(value="{provinceId}",method = RequestMethod.GET) @ResponseBody public String pagination(@PathVariable String provinceId){ return getJsonData(provinceId); }}訪問方式如下:http://localhost:8080/spring3/action/json/1,有一點需要注意下,那就是訪問spring mvc的controller時中間加了個/action,那是因為DispatcherServlet的映射路徑如果直接使用/*的話,會將相應的jsp屏蔽掉,所以一定得加個前綴以區別jsp與controller.
上面的json中如果有中文的話,會出現亂碼,所以則修改spring-servlet.xml配置文件,修改下AnnotationMethodHandlerAdapter的messageConverters即可,因為其默認采用的iso8895-1的編碼,代碼如下:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="webBindingInitializer"> <bean class="com.mvc.commons.CommonsBindingInitializer" /> </property> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean>
經過這些步驟后,對json的處理就相當方便了。
新聞熱點
疑難解答