`
heweina2007
  • 浏览: 68795 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

Spring MVC中返回json的操作

 
阅读更多

       最近公司来了几个新员工,让我给他们做一些培训。其中就包括Spring MVC。由于自己接触的也不多,所以也常常会碰到一些问题。现在把这些问题记录下来,以免以后遇到问题的时候又找不到解决办法。

       由于我让他们做了一个简版的微博系统,也就出现了对听众的“取消”和“立即收听”的操作,而这一下操作必须使用ajax实现,才能保证页面的局部刷新效果。而这就涉及到了json数据的返回值问题。

说明:代码是在新员工编写的代码上进行修改的,有些地方可能会有些冗余,但是不影响效果,仅供参考。

操作步骤如下:

1、在项目中引入使用json需要的两个jar包:

jackson-core-lgpl-1.8.5.jar和jackson-mapper-asl-1.8.5.jar

2、在Controller的相应方法上加上@ResponseBody,该方法的返回值可以为POJO对象,也可以为Map。

使用Map的实现代码如下:

@RequestMapping(value = "/deleteListen",method = RequestMethod.POST)
	@ResponseBody
	public Map<String, String> deleteListen(HttpServletRequest request,String microblogid, String operatorType){
		User user = (User) request.getSession().getAttribute("user");
		String listenid = user.getMicroblogid();
		Map<String, String> map = new HashMap<String, String>();
		try{
			if("cancel".equals(operatorType)){// 取消操作
				// 从LISTEN表中删除
				listenService.deleteListen(listenid, microblogid);
				// 操作状态变为"立即收听"
				map.put("operatorState", "立即收听");
				// 收听状态变为""
				map.put("tuneState", "");
			}else{// 立即收听操作
				// 添加收听人到LISTEN表中
				listenService.save1Listen(listenid, microblogid);
				// 操作状态变为"取消"
				map.put("operatorState", "取消");
				// 被收听的人收听了当前用户
				if(listenService.isListen(microblogid, listenid)){
					// 收听状态变为"已互听"
					map.put("tuneState", "已互听");
				}else{
					// 收听状态变为"已收听"
					map.put("tuneState", "已收听");
				}
			}
			map.put("result", "success");
		}catch (Exception e) {
			map.put("result", "fail");
		}
		return map;
	}

 使用POJO类的代码如下:

 

@RequestMapping(value = "/deleteListen",method = RequestMethod.POST)
	@ResponseBody
	public Operator deleteListen(HttpServletRequest request,String microblogid, String operatorType){
		User user = (User) request.getSession().getAttribute("user");
		String listenid = user.getMicroblogid();
		Operator operator = new Operator();
		try{
			if("cancel".equals(operatorType)){// 取消操作
				// 从LISTEN表中删除
				listenService.deleteListen(listenid, microblogid);
				// 操作状态变为"立即收听"
				operator.setOperatorState("立即收听");
				// 收听状态变为""
				operator.setTuneState("");
			}else{// 立即收听操作
				// 添加收听人到LISTEN表中
				listenService.save1Listen(listenid, microblogid);
				// 操作状态变为"取消"
				operator.setOperatorState("取消");
				// 被收听的人收听了当前用户
				if(listenService.isListen(microblogid, listenid)){
					// 收听状态变为"已互听"
					operator.setTuneState("已互听");
				}else{
					// 收听状态变为"已收听"
					operator.setTuneState("已收听");
				}
			}
			operator.setResult("success");
		}catch (Exception e) {
			operator.setResult("fail");
		}
		return operator;
	}

 3、页面中ajax的调用方法如下:

 

function operator(obj, microblogid){
			var date = new Date();
			var operatorType = $(obj).text();
			if(operatorType == "取消"){
				operatorType = "cancel";
			}else{
				operatorType = "tune";
			}
			$.ajax({
				url: "<%=path%>/deleteListen",
				type : "post",
				dataType : "json",
				data : "microblogid=" + microblogid + "&operatorType=" + operatorType + "&date=" + date,
				success : function(result) {
					if(result.result == "success"){
						$(obj).text(result.operatorState);
						$(obj).parent().prev().find("a").text(result.tuneState);
					}else{
						alert("操作失败");
					}
				},
				error : function() {
					alert("访问失败");
				}
			});
		}

 页面部分的内容如下:

<c:forEach var="userandlisten" items="${tunelist}" varStatus="count"> 
  <tr>
    <td align="right"><a href="selectBroadcast?microblogid=${userandlisten.listenid }">${userandlisten.username}</a>&nbsp;&nbsp;</td>
    <td align="right" width="80">${userandlisten.remark}&nbsp;</td>
    <td align="left"><a href="remarkName?listenid=${userandlisten.listenid }" id="remark">${userandlisten.addremark}</a></td>
    <td align="right"><a href="listenState?listenid=${userandlisten.listenid }">${userandlisten.describe}</a></td>
	<td align="left">&nbsp;<a href="javascript:void(0);" onclick="operator(this, '${userandlisten.listenid }');">取消</a></td>
  </tr>
</c:forEach>

 需要注意的是:

我并没有在spring的配置文件中加入类似下面的配置,之前在网上查找资料的时候好多人多说需要加上这个配置,但是我没加也是好用的:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJacksonHttpMessageConverter" />
			</list>
		</property>
	</bean>
	<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
	    <property name="supportedMediaTypes">  
	        <list>  
	            <value>application/json;charset=UTF-8</value>  
	            <value>text/html;charset=UTF-8</value>
	        </list>  
	    </property>  
	</bean>  

 但是,我的spring3-servlet.xml中有如下配置:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
		<property name="prefix" value="/WEB-INF/view/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

 这样就OK啦。

 

 相关jar包也上传一下吧。

分享到:
评论

相关推荐

    Spring MVC 学习笔记 九 json格式的输入和输出

    在这个学习笔记中,我们将深入探讨如何在Spring MVC中处理JSON格式的数据,包括输入和输出。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输。 1. **JSON格式简介** ...

    spring MVC 对 ResponseBody返回json数据进行脱敏处理

    在Spring MVC框架中,开发Web应用时经常需要将对象转换为JSON格式的数据并返回给客户端。然而,在处理敏感数据时,我们可能希望对这些数据进行脱敏,即隐藏或替换某些字段,以保护用户隐私或者确保数据安全性。本文...

    spring mvc(整合了json)

    4. **控制器方法的编写**:在 Spring MVC 的控制器类中,我们可以定义处理 HTTP 请求的方法,并使用 `@RequestBody` 和 `@ResponseBody` 注解来接收和返回 JSON 数据。例如: ```java @RequestMapping(value = "/...

    四. Spring MVC 3 支持json及 常见错误解决

    在Spring MVC 3中,对JSON的支持是其重要的特性之一,它使得前后端数据交互更加便捷,尤其在如今的Web应用中,JSON已经成为数据传输的标准格式。本篇将深入探讨Spring MVC 3对JSON的支持以及解决常见错误的方法。 ...

    spring mvc json&&jackson jquery js

    Spring MVC还提供了`@JsonView`注解来控制JSON响应中的数据粒度,以及`@JsonProperty`和`@JsonIgnore`来控制哪些字段应包含在JSON中。 **jQuery和JavaScript** jQuery是一个流行的JavaScript库,简化了DOM操作、...

    Spring3 MVC Ajax with JSON

    在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一功能所需的所有依赖库。以下是关于这...

    三个必备json包并附上spring mvc 返回json的配置

    最近在整spring mvc 返回json的配置,网上搜集整理了一下,觉得蛮有用的就共享出来,三个必备json包并附spring mvc 返回json的配置,此包有两个版本json包,一个2.6一个2.2

    spring-mvc-jsonview源代码

    在Spring MVC中,通过配置JSON视图解析器,我们可以将Java对象转换为JSON格式,以便通过HTTP响应返回给客户端,如AJAX请求。Spring MVC内置了Jackson和Gson等库,可以方便地实现JSON序列化和反序列化。 二、Spring ...

    spring mvc返回json几个包 jackson1.9.13

    总有4个包 jackson-core-asl-1.9.13.jar jackson-core-lgpl-1.9.13 jackson-mapper-asl-1.9.13 jackson-mapper-lgpl-1.9.13

    spring mvc拦截器过滤json中的null值

    接下来,我们将实现一个拦截器来过滤JSON中的null值。在`preHandle`方法中,我们可以读取请求体(request body),将其转换为JSON对象,然后遍历并替换null值为""(空字符串)。 ```java import org.spring...

    Spring MVC返回JSON数据 用到的jar包

    在Spring MVC中,为了将Java对象转换成JSON格式并返回给客户端,我们需要依赖于JSON库。在提供的信息中,提到了`jackson-all-1.9.x.jar`系列的包,这是Jackson库的一个早期版本。Jackson是一个非常流行的JSON处理库...

    spring—mvc -json

    本示例提供了一个完整的返回JSON数据的接口的Spring MVC Demo,帮助开发者理解如何在Spring MVC应用中实现JSON序列化和反序列化。 首先,我们需要了解JSON的基本结构。JSON是一种轻量级的数据交换格式,它基于...

    详解Spring MVC3返回JSON数据中文乱码问题解决

    在Spring MVC3中处理JSON数据的中文乱码问题是一个常见需求,而解决中文乱码的关键在于正确设置字符编码。在当前的IT技术环境下,尤其是在Web开发中,处理数据编码是基本技能之一。当在Web页面上显示中文时,可能会...

    springmvc对json支持

    例如,`@JsonProperty`可以指定哪个字段应该被包括在JSON中,`@JsonIgnore`则忽略特定字段。此外,`@JsonInclude`和`@JsonExclude`控制哪些属性在序列化时应包含或排除,而`@JsonFormat`可以用来指定日期或其他复杂...

    Spring mvc Json处理实现流程代码实例

    本文将深入探讨Spring MVC中JSON处理的实现流程,包括接收JSON参数和返回JSON响应。 1. **接收JSON参数** 当前端(如浏览器)向服务器发送JSON数据时,Spring MVC 提供了多种接收方式。一种是通过`...

    spring mvc json学习

    在这个测试中,`MockMvc`发送一个POST请求,并检查响应状态码以及返回JSON中的`name`字段值。 在实际项目中,我们可能还需要处理JSON数组、分页数据、错误响应等复杂情况。Spring MVC提供了丰富的API和工具来帮助...

    spring mvc + spring + mybatis+json整合

    JSON是Web服务中常见的数据交换格式,Spring MVC通过HttpMessageConverter机制支持JSON数据的序列化和反序列化。通常会使用Jackson或Gson库来处理JSON转换,例如在Controller中,将Java对象转化为JSON响应给前端,...

    spring mvc生成xml或json

    在Spring MVC框架中,开发人员经常需要处理不同的数据交换格式,如XML和JSON,以便与客户端进行交互。这两种格式在Web应用中广泛用于传输数据,因为它们轻量级且易于解析。下面我们将深入探讨如何在Spring MVC中生成...

    最全最经典spring-mvc教程

    另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring JDBC和MyBatis等持久层框架用于数据库操作,以及Spring Data JPA、Hibernate等ORM工具,使得...

    Mastering Spring MVC 4(2015.09)源码

    在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。在这个"Mastering Spring MVC 4(2015.09)源码"中,我们可以深入理解这个框架的核心概念和实际应用。 首先,Spring MVC ...

Global site tag (gtag.js) - Google Analytics