Spring 之 注解实现返回json

下面的部分位于Spring-mvc.xml或者dispatcherServlet-servlet.xml中 (Spring 3.0中ServletName-servlet.xml替代了Spring-mvc.xml)

<!-- 用于将对象转换为 JSON  -->
    <bean id="stringConverter"
        class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/plain;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <bean id="jsonConverter"
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="stringConverter" />
                <ref bean="jsonConverter" />
            </list>
        </property>
    </bean>  

在对应的Controller中

@RequestMapping(value="/login",method=RequestMethod.POST)
    public @ResponseBody User login(String username,String password){
        User user = userService.login(username, password);
        return user;
    }

这里我使用的jackson包:

      (1)jackson-core 2.5.0

      (2)jackson-databind 2.5.0

      (3)jackson-annotations 2.5.0

导入后build path;

警告:若用hibernate等orm工具生成的pojo类,一对一,对多等关系可能会输出无限循环的json:

需要使用在pojo类中导入com.fasterxml.jackson.annotation.JsonIgnore,并为需要屏蔽的类添加@JsonIgnore注解,这样被注解的属性就不会出现在json中了。

第二种示例

@ResponseBody
    @RequestMapping(value = "/login")
    public ModelAndView ajaxLogin(Model model,User user,HttpServletRequest request, HttpSession session){
        String errorMessage=loginCommon(model, user, request, session);
        Map map=new HashMap();
        if(ValueWidget.isNullOrEmpty(errorMessage)){
            map.put(Constant2.AJAX_LOGIN_RESULT, "success");
        }else{
            map.put(Constant2.AJAX_LOGIN_RESULT, "failed");
        }
        map.put("error", errorMessage);
        model.addAttribute("user", null);
        return new ModelAndView(new MappingJacksonJsonView(),map);
    }  

或者

model.addAttribute("user", user1);

运行结果:

时间: 2024-08-08 09:30:28

Spring 之 注解实现返回json的相关文章

Spring MVC使用@ResponseBody返回JSON数据406问题解决方案

其实前面一篇关于zTree返回JSON数据的文章已经有一种解决方案了,但是当我今天在新公司搭建新环境的时候,发现决然又不行了,所以我觉得那应该不是最优的解决方案. 说起来,我以前接触到的一个项目,根本没有配置spring的文件,就直接用@ResponseBody可以返回JSON数据,不知道其中的秘诀在什么地方,搞不懂了. 今天主要提供另一个解决@ResponseBody返回JSON数据,页面抛出406错误的解决方案. 第一步,引入包: <dependency> <groupId>c

spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type

问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json数据报错:no convertter for return value of type 注释掉解决中文乱码的问题之后返回对象json正常 Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWr

idea+springmvc+spring+mybatis+maven整合返回json数据webapi

首先看一张目录结构图: : 创建步骤: 1.创建maven  webapp工程, 创建完后的目录结构为: 2.添加项目依赖(添加jar包) 需要的jar包: spring-webmvc, spring-test, spring-orm, commons-dbcp, mybatis, mybatis-spring, mysql-connector-java, commons-fileupload, jstl,jackson-core, jackson-databind, jackson-mappe

Spring Boot 处理异常返回json

spring boot 老版本处理异常  对于浏览器客户端,返回error数据 对于非浏览器返回json数据, 主要取决于你的请求head 是什么 但是当我们自定义了:  老版本无论请求什么都会返回json异常数据, @ControllerAdvice public class UserExceptionHandler { @ResponseBody @ExceptionHandler(UserNotFoundExits.class) public Map<String, Object> ha

【转】解决spring mvc 中ajax返回json乱码问题

转载自:http://my.oschina.net/u/140421/blog/176625 转载自:http://my.oschina.net/candon/blog/149073?fromerr=I9VBOy62 第一个转载: 在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题.现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会因为我们的各种疏忽从而造成页面ajax请求到的相应数据,如果带有中文

Spring MVC灵活控制返回json的值(自定义过滤字段)

在使用spring MVC开发过程中,为了提高项目执行效率,所以在一些外键字段的实体中会注解"@ManyToOne(fetch = FetchType.LAZY)"以实现延迟加载的效果. 但是,在使用ajax请求数据,当需要返回的序列化数据中包含延迟加载的属性时,会出现错误,延迟加载的属性无法进行序列化.在这个时候,我们需要暂时取消延迟加载,以取到所有需要的数据. 可是,这样又会造成一堆垃圾数据的产生.序列化.传递至前台. 所以需要在控制层进行数据过滤,只序列化需要的数据. 具体过滤方

@ResponseBody注解之返回json

之前写controller,接受参数的时候会用到@ResponseBody注解,之前一直只会使用但是没有真正的了解过这个注解.@ResponseBody加在参数中可以接受到来自前端的json数据,如果加在方法上则可以将方法的返回值(return)json化. 原文地址:https://www.cnblogs.com/whliscoming/p/12575834.html

Spring mvc 注解@ResponseBody 返回内容编码问题

@ResponseBody 在@Controller 类方法中可以让字符串直接返回内容. 其返回处理的类是org.springframework.http.converter.StringHttpMessageConverter,此类默认编码 <span style="font-size:18px;">public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");&

spring mvc 4.1 返回json报406错误的解决办法

浏览器访问,报 The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers. 解决办法,检查springmvc的配置文件中有无 <mvc:annotation-driven />