- 浏览: 152233 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
守望麦穗:
楼主好, 我按着你的步骤查找问题 ,到第二步,也没有自定义U ...
Spring Security3边学边写(N)会话管理和并行控制 -
sb33060418:
Notify 写道楼主,但是配置<concurrency ...
Spring Security3边学边写(N)会话管理和并行控制 -
Notify:
楼主,但是配置<concurrency-control ...
Spring Security3边学边写(N)会话管理和并行控制 -
409421884:
你好,我也在做这个功能,但sessionRegistry这个东 ...
Spring Security3边学边写(N)会话管理和并行控制 -
sb33060418:
左眼的彼岸 写道sb33060418 写道左眼的彼岸 写道谢谢 ...
Spring Security3边学边写(N)会话管理和并行控制
实现springmvc返回json内容。
1.指定视图类型
新增JsonController类,代码如下:
类中指定了使用MappingJackson2JsonView视图,该视图会将view中的各个对象转换为json的属性返回,并指定响应ContentType为application/json;charset=UTF-8。
重新部署后,访问http://localhost:8080/testSpringWeb/json/y返回内容为:
{"status":"y","info":"success"}
2.配置默认ResponseBody转换器
如果项目中大量使用ajax请求和json格式,并考虑以后可能更改返回格式,就不需要在每个方法中去指定视图名称,直接配置默认的ResponseBody转换器即可。
在servlet-context.xml中配置如下:
使用MappingJackson2HttpMessageConverter作为默认解析器。
JsonController中新增方法如下:
控制器Controller只需返回业务模型Model提供的数据map即可,视图View会自动处理。
重新部署后,访问http://localhost:8080/testSpringWeb/json/n可以看到结果:
{"status":"n","info":"failure"}
个人感觉这种方式更适合mvc三层分离的设计。
3.引用静态资源
因在web.xml中配置了springmvc的servlet拦截/下所有请求,因此对静态资源的访问也会被springmvc拦截,不能直接访问。需要映射静态资源至某个地址。
在servlet-context.xml中配置如下:
该配置会将/resources/目录映射成/resources/**地址,因此对/resources/**的访问会直接进入web工程的/resources/目录下查找并返回。
添加jquery.js至/resources/js目录,访问http://localhost:8080/testSpringWeb/resources/js/jquery.js可看到js文件内容。
4.访问ajax+json
附带记录下html页面使用jquery库访问ajax并读取json数据。
在src\main\webapp目录下新建json.jsp,代码如下:
访问后成功后进入done回调函数,弹出对话框提示:
done:[object Object]:y
出错则进入fail回调提示:
fail:[object Object]:error:Not Found
5.jsonp支持
如果web项目需要提供jsonp方式访问,springmvc也可以支持。
新建JsonpController类如下:
访问http://localhost:8080/testSpringWeb/jsonp会返回json:
{"status":"y"}
访问http://localhost:8080/testSpringWeb/jsonp?callback=yes会返回jsonp:
yes({"status":"y"});
附带页面访问jsonp方法,新建jsonp.jsp:
四种访问jsonp的方式:
访问http://127.0.0.1:8080/testSpringWeb/jsonp.jsp可看到弹出提示:
iframe.callback:y
document.callback:status=y
ajax.jsonp:y
ajax.callback:status=y
ajax.done:y
1.指定视图类型
新增JsonController类,代码如下:
package com.sunbin.test.testSpring.web.controller; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.json.MappingJackson2JsonView; import com.sunbin.test.testSpring.service.TestService; import org.springframework.stereotype.Controller; @Controller @RequestMapping(value = "/json") public class JsonController { @Autowired public TestService testService; @RequestMapping(value = "/y", method = { RequestMethod.GET }) public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub ModelAndView view = new ModelAndView(new MappingJackson2JsonView()); view.addObject("status", "y"); view.addObject("info", "success"); return view; } }
类中指定了使用MappingJackson2JsonView视图,该视图会将view中的各个对象转换为json的属性返回,并指定响应ContentType为application/json;charset=UTF-8。
重新部署后,访问http://localhost:8080/testSpringWeb/json/y返回内容为:
{"status":"y","info":"success"}
2.配置默认ResponseBody转换器
如果项目中大量使用ajax请求和json格式,并考虑以后可能更改返回格式,就不需要在每个方法中去指定视图名称,直接配置默认的ResponseBody转换器即可。
在servlet-context.xml中配置如下:
<!-- @ResponseBody --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> </list> </property> </bean>
使用MappingJackson2HttpMessageConverter作为默认解析器。
JsonController中新增方法如下:
@RequestMapping(value = "/n", method = { RequestMethod.GET }) @ResponseBody public Map testJson(HttpServletRequest request, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub Map map = new HashMap(); map.put("status", "n"); map.put("info", "failure"); return map; }
控制器Controller只需返回业务模型Model提供的数据map即可,视图View会自动处理。
重新部署后,访问http://localhost:8080/testSpringWeb/json/n可以看到结果:
{"status":"n","info":"failure"}
个人感觉这种方式更适合mvc三层分离的设计。
3.引用静态资源
因在web.xml中配置了springmvc的servlet拦截/下所有请求,因此对静态资源的访问也会被springmvc拦截,不能直接访问。需要映射静态资源至某个地址。
在servlet-context.xml中配置如下:
<mvc:resources location="/resources/" mapping="/resources/**" />
该配置会将/resources/目录映射成/resources/**地址,因此对/resources/**的访问会直接进入web工程的/resources/目录下查找并返回。
添加jquery.js至/resources/js目录,访问http://localhost:8080/testSpringWeb/resources/js/jquery.js可看到js文件内容。
4.访问ajax+json
附带记录下html页面使用jquery库访问ajax并读取json数据。
在src\main\webapp目录下新建json.jsp,代码如下:
<%@ page language="java" pageEncoding="utf-8"%> <%@ page contentType="text/html ; charset=UTF-8"%> <html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src ="resources/js/jquery.js"></script> <script> $(window).load(function(){ $.ajax({ url: 'http://localhost:8080/testSpringWeb/json/y', dataType: 'json' }).done(function (result) { //TODO alert("done:"+result+":"+result.status); }).fail(function (result, textStatus, info) { //TODO alert("fail:"+result+":"+textStatus+":"+info); }); }) </script> </head> <body> </body> </html>
访问后成功后进入done回调函数,弹出对话框提示:
done:[object Object]:y
出错则进入fail回调提示:
fail:[object Object]:error:Not Found
5.jsonp支持
如果web项目需要提供jsonp方式访问,springmvc也可以支持。
新建JsonpController类如下:
package com.sunbin.test.testSpring.web.controller; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.http.converter.json.MappingJacksonValue; import org.springframework.stereotype.Controller; @Controller public class JsonpController { @RequestMapping(value = "/jsonp", method = { RequestMethod.GET }) @ResponseBody public Object jsonp(HttpServletRequest request, HttpServletResponse response, String callback) throws Exception { // TODO Auto-generated method stub Map map = new HashMap(); map.put("status", "y"); // 如果不存在callback这个请求参数,说明不是跨域请求,直接返回结果json if (callback == null || callback.length() == 0) { return map; } else { // 存在callback参数,则需要支持jsonp调用,并设置回调函数 MappingJacksonValue value = new MappingJacksonValue(map); value.setJsonpFunction(callback); return value; } } }
访问http://localhost:8080/testSpringWeb/jsonp会返回json:
{"status":"y"}
访问http://localhost:8080/testSpringWeb/jsonp?callback=yes会返回jsonp:
yes({"status":"y"});
附带页面访问jsonp方法,新建jsonp.jsp:
<%@ page language="java" pageEncoding="utf-8"%> <%@ page contentType="text/html ; charset=UTF-8"%> <html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="resources/js/jquery.js"></script> <!-- jquery方法一:不指定回调函数名,jquery随机生成 --> <script> $(window).load(function(){ $.ajax({ url: 'http://127.0.0.1:8080/testSpringWeb/jsonp', dataType: 'jsonp', success:function (result) { //TODO alert("ajax.jsonp:"+result.status); } }); }) </script> <!-- jquery方法二:指定回调函数名 --> <script> $(window).load(function(){ $.ajax({ url: 'http://127.0.0.1:8080/testSpringWeb/jsonp', dataType: 'jsonp', jsonpCallback: 'ajaxCallback', contentType: 'application/jsonp;charset=UTF-8', }).done(function (result) { //TODO alert("ajax.done:"+result.status); }).fail(function (result, textStatus, info) { //TODO alert("ajax.fail:"+result+":"+textStatus+":"+info); }); }) function ajaxCallback(result) { //alert(result); for(var i in result) { alert("ajax.callback:"+i+"="+result[i]);//循环输出a:1,b:2,etc. } } </script> </head> <body> <!-- 通过创建script标签访问 --> <script type="text/javascript"> function documentCallback(result) { //alert(result); for(var i in result) { alert("document.callback:"+i+"="+result[i]);//循环输出a:1,b:2,etc. } } var JSONP=document.createElement("script"); JSONP.type="text/javascript"; JSONP.src="http://localhost:8080/testSpringWeb/jsonp?callback=documentCallback"; document.getElementsByTagName("head")[0].appendChild(JSONP); </script> <!-- 通过iframe访问 --> <iframe src="javascript:'<script>function iframe(o){alert(\'iframe.callback:\'+o.status);}</script><script src=http://127.0.0.1:8080/testSpringWeb/jsonp?callback=iframe></script>'"></iframe> </body> </html>
四种访问jsonp的方式:
- document创建script标签,src为jsonp地址
- 创建iframe,src为jsonp地址
- 使用jquery新建ajax请求,callback为匿名函数。jquery将自动生成随机的callback名如jQuery191015429333912171872_1494838463136
- 使用jquery新建ajax请求,指定jsonpCallback参数
访问http://127.0.0.1:8080/testSpringWeb/jsonp.jsp可看到弹出提示:
iframe.callback:y
document.callback:status=y
ajax.jsonp:y
ajax.callback:status=y
ajax.done:y
发表评论
-
spring mvc(六)实现REST接口GET/POST/PUT/DELETE
2017-05-23 16:31 8192基于springmvc实现restful样式的api接口。 ... -
spring mvc(五)CRUD及PUT/DELETE参数
2017-05-22 17:34 3949使用springmvc实现基于页面的增删改查,只要对Contr ... -
spring mvc(三)注解
2017-05-15 15:19 595注解实现spring mvc的Controlle、servic ... -
spring mvc(二)注入spring bean
2017-05-12 18:52 2082向Controller中注入spring管理的service、 ... -
spring4学习(三)在非Spring类中获取Bean
2017-05-05 18:19 6713在不是spring管理的对象、无法直接取得Applicatio ... -
spring4学习(二)注解配置
2017-05-05 17:41 808使用注解实现spring配置。 个人感觉适合在小团队开发或模块 ... -
spring4学习(一)基础配置
2017-05-05 17:13 811记录下Spring4的基础用法。 环境:Myeclipse10 ... -
spring mvc(一)HelloWorld
2017-05-09 11:27 615记录下SpringMvc4的用法。 环境:Myeclipse1 ... -
Spring Security3边学边写(N)会话管理和并行控制
2013-10-09 13:05 13029在开发系统认证授权时,经常会碰到需要控制单个用户重复登录次数或 ... -
spring3+struts2+mybatis3框架搭建
2013-07-12 01:08 0spring3.2.3 struts2.3.14.2 myba ... -
[转]SpringMVC访问静态资源
2013-07-10 12:40 6681本文转自 http://www.cnblogs.com/fan ... -
Spring Security3边学边写(三)数据库存储角色、权限信息
2013-07-09 01:17 01.创建表 2.创建pojo类 3.创建security相 ... -
Spring Security3边学边写(二)数据库存储用户信息及自定义页面
2013-07-09 01:13 01.创建表 2.创建pojo类 3.配置 修改src/ap ... -
Spring Security3边学边写(一)第一步
2013-07-07 10:55 0之前做过的web系统,认 ...
相关推荐
对于响应,我们可以返回一个对象或集合,Spring MVC会自动将其转换为JSON并设置合适的HTTP响应头。例如,我们可以在控制器方法中返回一个`List<User>`,客户端将收到一个包含用户列表的JSON数组。 5. **自定义JSON...
在Spring MVC框架中,开发Web应用时经常需要将对象转换为JSON格式的数据并返回给客户端。然而,在处理敏感数据时,我们可能希望对这些数据进行脱敏,即隐藏或替换某些字段,以保护用户隐私或者确保数据安全性。本文...
4. **控制器方法的编写**:在 Spring MVC 的控制器类中,我们可以定义处理 HTTP 请求的方法,并使用 `@RequestBody` 和 `@ResponseBody` 注解来接收和返回 JSON 数据。例如: ```java @RequestMapping(value = "/...
在Spring MVC 3中,对JSON的支持是其重要的特性之一,它使得前后端数据交互更加便捷,尤其在如今的Web应用中,JSON已经成为数据传输的标准格式。本篇将深入探讨Spring MVC 3对JSON的支持以及解决常见错误的方法。 ...
1. **创建Controller**:定义Spring MVC的控制器类,使用`@RequestMapping`注解映射URL,并使用`@ResponseBody`返回JSON数据。 2. **配置Jackson**:在Spring配置文件中启用Jackson并配置其属性,如日期格式化。 3. ...
最近在整spring mvc 返回json的配置,网上搜集整理了一下,觉得蛮有用的就共享出来,三个必备json包并附spring mvc 返回json的配置,此包有两个版本json包,一个2.6一个2.2
当返回类型为@RequestBody或@ResponseBody时,Spring MVC会自动将返回的对象转换为JSON,发送到客户端。 三、源代码分析 1. pom.xml:项目依赖管理文件,包含了Spring MVC、Jackson库和其他相关依赖。例如,添加...
总有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
这个项目提供的示例工程应该包含了一个工作流程的完整实例,从Ajax请求到Spring MVC的处理,再到JSON响应的返回,帮助开发者理解并掌握这一技术栈的使用。通过深入研究和实践,你将能够熟练地在自己的项目中应用这些...
在Spring MVC中,为了将Java对象转换成JSON格式并返回给客户端,我们需要依赖于JSON库。在提供的信息中,提到了`jackson-all-1.9.x.jar`系列的包,这是Jackson库的一个早期版本。Jackson是一个非常流行的JSON处理库...
本示例提供了一个完整的返回JSON数据的接口的Spring MVC Demo,帮助开发者理解如何在Spring MVC应用中实现JSON序列化和反序列化。 首先,我们需要了解JSON的基本结构。JSON是一种轻量级的数据交换格式,它基于...
总的来说,解决Spring MVC3返回JSON数据中文乱码的问题,关键在于正确设置字符编码。无论是使用Java的PrintWriter直接写入UTF-8编码的数据,还是先将数据编码为GBK后写入到ServletOutputStream中,又或者是在框架...
8. **错误处理**:当JSON序列化或反序列化失败时,Spring MVC会自动抛出异常并返回一个错误响应。为了提供更友好的错误信息,可以配置异常处理器或者自定义错误视图。 总结起来,Spring MVC对JSON的支持主要依赖于...
在Spring MVC框架中,我们经常需要处理JSON数据,这些数据可能包含null值。在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用...
本文将深入探讨Spring MVC中JSON处理的实现流程,包括接收JSON参数和返回JSON响应。 1. **接收JSON参数** 当前端(如浏览器)向服务器发送JSON数据时,Spring MVC 提供了多种接收方式。一种是通过`...
以上是关于“spring mvc + spring + mybatis+json整合”的详细说明,这个整合方案是构建Web应用程序的常用技术栈,能够实现高效、灵活且可维护的开发。通过理解并掌握这些知识点,开发者可以更自如地开发和维护复杂...
除此之外,教程可能还会涵盖Spring MVC的RESTful API设计,如何创建JSON响应,以及使用Spring Boot快速构建Spring MVC应用。Spring Boot简化了配置,提供了预配置的依赖,使得开发者能更快地启动项目。 错误处理和...
在本文中,我们将深入探讨“Spring MVC JSON学习”这一主题,重点关注如何在Spring MVC应用中处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁性和易读性而被广泛应用。 ...
在Spring MVC框架中,开发人员经常需要处理不同的数据交换格式,如XML和JSON,以便与客户端进行交互。这两种格式在Web应用中广泛用于传输数据,因为它们轻量级且易于解析。下面我们将深入探讨如何在Spring MVC中生成...
在本教程中,我们将深入探讨如何使用Spring MVC框架构建一个返回JSON格式数据的服务器。首先,这个项目涉及的技术栈包括Spring MVC、JDBC、JSON以及Gson。Spring MVC是Spring框架的一部分,它允许我们构建RESTful ...