本篇文章给大家谈谈SpringMVC,在普通请求中强制JSON响应,以及springmvc请求的知识点,同时本文还将给你拓展5.学习springmvc响应json数据、asp.net-mvc-3–MV
本篇文章给大家谈谈Spring MVC,在普通请求中强制JSON响应,以及spring mvc 请求的知识点,同时本文还将给你拓展5.学习springmvc响应json数据、asp.net-mvc-3 – MVC 3 json请求应该在异常时接收json响应、JSON – Spring MVC:如何将json数据发布到spring MVC控制器、Spring 3.0使用Jackson消息转换器进行JSON响应等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Spring MVC,在普通请求中强制JSON响应(spring mvc 请求)
- 5.学习springmvc响应json数据
- asp.net-mvc-3 – MVC 3 json请求应该在异常时接收json响应
- JSON – Spring MVC:如何将json数据发布到spring MVC控制器
- Spring 3.0使用Jackson消息转换器进行JSON响应
Spring MVC,在普通请求中强制JSON响应(spring mvc 请求)
我使用的是Spring 3.0.6,我有一个控制器用于将文件上传到服务器.我正在使用脚本使用XmlHttpRequest上传支持它的浏览器,而其他浏览器提交(隐藏)多部分表单.但问题是,当提交表单时,它会发送以下标题:
Accept text/html,application/xhtml+xml,*/*
我认为由于此标头,标有@ResponseBody的Controller回复响应已转换为XML而不是JSON.有没有办法在不破解表单提交请求的情况下解决这个问题?
正如其他人所说,杰克逊需要走上你的阶级路径.
5.学习springmvc响应json数据
一.配置不过滤静态资源文件:用来访问webapp中js,css,images文件
1.修改springmvc.xml
1 <!--配置前端控制器,用于设置哪些资源不拦截-->
2 <mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 -->
3 <mvc:resources location="/images/" mapping="/images/**"/> <!-- 图片 -->
4 <mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
2.jsp:
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2
3 <html>
4 <head>
5 <title>response</title>
6 <script src="js/jquery.min.js"></script>
7 <script>
8 //页面加载,绑定点击事件
9 $(function () {
10 $("#btn").click(function () {
11 alert("hello btn");
12 });
13 });
14 </script>
15 </head>
16 <body>
17
18 <a href="user/testString">testString</a> <br>
19 <a href="user/testVoid">testVoid</a> <br>
20 <a href="user/testModelAndView">testModelAndView</a> <br>
21 <a href="user/testForwardOrRedirect">testForwardOrRedirect</a> <br>
22
23 <button id="btn">发送ajax的请求</button>
24 </body>
25 </html>
展示:
二.客户端发送json请求给服务器端
jsp:
1 <script>
2 //页面加载,绑定点击事件
3 $(function () {
4 $("#btn").click(function () {
5 // alert("hello btn");
6
7 //发送ajax请求
8 $.ajax({
9 //编写json格式数据,设置属性值
10 url:"user/testAjax",
11 contentType:"application/json;charset=UTF-8",
12 data:''{"username":"哈哈","password":"123","age":30}'',
13 dataType:"json",
14 type:"post",
15 success:function (data) {
16 //data服务器响应的json的数据,进行解析
17 }
18 })
19 });
20 });
21 </script>
方法:
1 /**
2 * 模拟Ajax异步请求响应,RequestBody 获得请求体数据
3 * @param body
4 */
5 @RequestMapping("/testAjax")
6 public void testAjax(@RequestBody String body){
7
8 System.out.println("testAjax执行了...");
9
10 System.out.println(body);
11 }
执行结果:
三.服务器返回json给客户端
首先需要修改pom.xml导入jackson的jar包用于解析和封装json数据:
1 <dependency>
2 <groupId>com.fasterxml.jackson.core</groupId>
3 <artifactId>jackson-databind</artifactId>
4 <version>2.9.0</version>
5 </dependency>
6 <dependency>
7 <groupId>com.fasterxml.jackson.core</groupId>
8 <artifactId>jackson-core</artifactId>
9 <version>2.9.0</version>
10 </dependency>
11 <dependency>
12 <groupId>com.fasterxml.jackson.core</groupId>
13 <artifactId>jackson-annotations</artifactId>
14 <version>2.9.0</version>
15 </dependency>
jsp:
1 <script>
2 //页面加载,绑定点击事件
3 $(function () {
4 $("#btn").click(function () {
5 // alert("hello btn");
6
7 //发送ajax请求
8 $.ajax({
9 //编写json格式数据,设置属性值
10 url:"user/testAjax",
11 contentType:"application/json;charset=UTF-8",
12 data:''{"username":"哈哈","password":"123","age":30}'',
13 dataType:"json",
14 type:"post",
15 success:function (data) {
16 //data服务器响应的json的数据,进行解析
17 alert(data.toString());
18
19 alert(data.username);
20 alert(data.password);
21 alert(data.age);
22 }
23 })
24 });
25 });
26 </script>
方法:
1 /**
2 * 模拟Ajax异步请求响应,RequestBody:获得请求体数据,ResponseBody:服务器响应数据
3 *
4 * @param user
5 */
6 @RequestMapping("/testAjax")
7 public @ResponseBody User testAjax(@RequestBody User user) {
8
9 System.out.println("testAjax执行了...");
10
11 //客户端发送ajax请求的数据,通过导入jackson的jar包将json数据转换为JavaBean对象user
12 System.out.println(user.toString());
13
14 //模拟数据库查询
15 user.setUsername("小美");
16 user.setAge(55);
17
18 //服务器返回给客户端数据
19 return user;
20 }
展示:
asp.net-mvc-3 – MVC 3 json请求应该在异常时接收json响应
寻找现有的解决方案或如何建立自己的一些信息.
解决方法
public class MyErrorHandlerAttribute : Filterattribute,IExceptionFilter { public void OnException(ExceptionContext filterContext) { filterContext.ExceptionHandled = true; filterContext.Result = new JsonResult { Data = new { success = false,error = filterContext.Exception.ToString() },JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } }
可以在Global.asax中注册为全局过滤器.然后简单地查询一些动作:
$.getJSON('/someController/someAction',function (result) { if (!result.success) { alert(result.error); } else { // handle the success } });
JSON – Spring MVC:如何将json数据发布到spring MVC控制器
我在将jsp数据从jsp发布到控制器时遇到问题.我每次尝试都会收到ajax错误错误请求.我是JSON的新手,我真的不知道我做错了什么.我搜索并尝试了一些我可以在这个网站找到的样本,但我仍然有问题.
在我的控制器中:
@RequestMapping (method = RequestMethod.POST,headers ={"Accept=application/json"},value = "/form")
public String postJournalEntry (@RequestParam ("json") String json,Model model) {
System.out.println(json);
return "successfullySaved";
}
在我的jsp中:
$("#btnPostGlEntry").click(function () {
var glEntries = '{"glEntries":[{"generalLedgerId":"1"},{"accountId":"4"},{"amount":"344.44"},{"description":"Test Entry"},{"debit":"Yes"}]}';
$.ajax({
type: "POST",contentType: "application/json",dataType: "json",url: contextpath + "/generalLedger/journalEntries/form",data : JSON.stringify(glEntries),success: function(data) {
alert("Success!!!");
},error: function (jqXHR,textStatus,errorThrown) {
alert(jqXHR + " : " + textStatus + " : " + errorThrown);
}
});
});
注意:我甚至不确定我的控制器中的功能是否正确.我认为我的控制器和我的ajax是错误的.请帮忙.
.... method(@RequestBody MyClass data){ ... }
但是,如果您希望您的方法接受JSON作为String而不是这样做:
.... method(@RequestBody String json){ ... }
所以,基本上,如果你发布JSON,这意味着JSON不是一个参数,它是请求的主体.最后你必须使用@RequestBody注释,而不是@RequestParam.
你可以在这里找到Spring Mvc和JSON的精彩视频教程:sites.google.com/site/upida4j/example
Spring 3.0使用Jackson消息转换器进行JSON响应
如何解决Spring 3.0使用Jackson消息转换器进行JSON响应?
你需要以下内容:
- 设置注解驱动的编程模型:将
<mvc:annotation-driven />
在spring.xml - 将jaskson jar(Maven artifactId为
org.codehaus.jackson:jackson-mapper-asl
)放在classpath中。 - 用作以下用途:
@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST })
public @ResponseBody Foo method(@Valid Request request, BindingResult result){
return new Foo(3,4)
}
这对我有用。
请注意,
1.@ResponseBody
适用于返回类型,而不是方法定义。
2. 你需要@RequestMapping
注释,以便Spring可以检测到它。
解决方法
我将我的messageconverter配置为Jackson的
class Foo{int x; int y}
并在控制器中
@ResponseBody
public Foo method(){
return new Foo(3,4)
}
从该即时消息期望从服务器返回JSON字符串{x:‘3’,y:‘4’},而无需任何其他配置。但是收到对我的ajax请求的404错误响应
如果使用@ResponseBody注释该方法,则将返回类型写入响应HTTP正文。该返回值将使用HttpMessageConverters转换为声明的方法参数类型。
我错了吗 ?还是我自己使用序列化器将我的response对象转换为Json字符串,然后将该字符串作为响应返回(我可以正确地进行字符串响应),还是应该进行其他配置?像为Foo类添加注释
这是我的conf.xml
<bean id="jacksonMessageConverter">
<bean>
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
关于Spring MVC,在普通请求中强制JSON响应和spring mvc 请求的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于5.学习springmvc响应json数据、asp.net-mvc-3 – MVC 3 json请求应该在异常时接收json响应、JSON – Spring MVC:如何将json数据发布到spring MVC控制器、Spring 3.0使用Jackson消息转换器进行JSON响应的相关知识,请在本站寻找。
本文标签: