Spring MVC使用JSON和XML的序列化的例子_Spring MVC返回Json数据的方法
2014-10-01 19:06:27  By: dwtedx

介绍

本文介绍了在Spring MVC中支持JSON和XML序列化的REST服务的应用程序

有两种流行的序列化方法与REST服务、JSON和XML的工作、以下是在Eclipse的Project Explorer中实例Maven项目

在“com.song.data.model”包实现了MVC应用程序的数据模型;

在“com.song.web.controller.api”包实现了MVC应用程序的控制器;

在“com.song.web.filter.NocacheFilter”类实现一个Servlet过滤器,禁止对网页内容的客户端和代理缓存;

在“index.jsp的”是作为REST服务的测试客户端JSP页面

这个Web应用程序已经在Windows Java1.7 Tomcat 7和Spring4.0.7.RELEASE环境下进行了测试

这个例子的开发环境是Eclipse的Java EE的IDE中的Web开发人员、服务版本2


在“NocacheFilter”的Servlet过滤器

在许多情况下、它是用来关闭浏览器和代理缓存的web应用程序、NocacheFilter类实现一个Servlet过滤器、禁用缓存

package com.song.web.filter;
    
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
    
public class NocacheFilter implements Filter {
    public void doFilter(ServletRequest request,
            ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        
        HttpServletResponse httpResponse = (HttpServletResponse)response;
        httpResponse.setHeader("Cache-Control", "no-cache, no-store,
			must-revalidate");
        httpResponse.setHeader("Pragma", "no-cache");
        httpResponse.setDateHeader("Expires", 0);
        
        chain.doFilter(request, response);
    }
    public void destroy() {}
    public void init(FilterConfig fConfig) throws ServletException {}
}


MVC的控制器

MVC的Controller类“StudentController”被实现为以下几点

package com.song.web.controller.api;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.song.data.model.Student;
import com.song.data.model.Course;

@Controller
public class StudentController {
    
    @ResponseBody
    @RequestMapping(value = "/getstudent/{id}/{name}",
        method = RequestMethod.GET,
        produces={"application/json", "application/xml"})
    public Student getStudent(HttpServletRequest request, 
		HttpServletResponse response,
            @PathVariable("id") final int id,
            @PathVariable("name") final String name) {
        // Create a new student object and return it
        SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");
        Student student = new Student(id, name, dateFormatter
			.format(new Date()));
        
        List<Course> cources = student.getCourses();
        cources.add(new Course("Math", 15));
        cources.add(new Course("Politics", 100));
        
        return student;
    }
    
    @ResponseBody
    @RequestMapping(value = "/echostudent",
        method = RequestMethod.POST,
        produces={"application/json", "application/xml"},
        consumes={"application/json", "application/xml"})
    public Student echoStudent(@RequestBody Student student,
            HttpServletRequest request, HttpServletResponse response) {
        // Just echo the same student back
        return student;
    }
}
大家可以看到Controller里面的方法是输出Json数据的、那么大家在前台就可以获取使用了

最后给大家献上源代码的下载链接: http://dwtedx.com/download.html?bdkey=s/1gdrbL6r 密码: h4ur

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+