標籤:
Spring MVC 3.0 返回JSON資料的幾種方法:
1. 直接 PrintWriter 輸出
2. 使用 JSP 視圖
3. 使用Spring內建的支援
// Spring MVC 配置
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> </list> </property></bean>
// WEB-INF/lib 中添加 jackson-mapper-asl-1.6.4.jar jackson-core-asl-1.6.4.jar
// Controller 中 使用:@ResponseBody 標註方法,該方法返回 Java對象(支援複雜物件),MappingJacksonHttpMessageConverter 會將對象轉換為 JSON 輸出
4. 自訂 // 以下是實現方法,僅僅是個示範 // 配置 BeanNameViewResolver
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="1" /></bean><bean id="jsonView" class="test.TestJsonView" />
// 實現 TestJsonView
public class TestJsonView extends AbstractView { @Override protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Gson gson=new Gson();
PrintWriter out = response.getWriter();
if (model.size() == 1) {
out.print(gson.toJson(model.values().iterator().next()));
} else {
out.print(gson.toJson(model));
} }}
// 配置 View
<bean id="jsonView" class="test.TestJsonView" />
// Controller 中可以這樣寫:
ModelAndView mav = new ModelAndView("jsonView");// mav.addObject ...return mav;
5. 使用 spring-json.jar
// 就是第4種方法,但是強大的多。。。
Springmvc 配置json輸出的幾種方式