Ⅰ spring mvc 返回json 视图解析器怎么使用
视图解析器是由框架来用的,你要做的只是需要将视图层用你要的形式写出来即可,比如你的页面是jsp,那么你只要将后台返回的数据,传递到响应的jsp页面即可
Ⅱ spring mvc中使用json 怎么配置文件
不用配置文件啊,把传过来的字符串通过你所以来的第三方包解析就行了。
Ⅲ springmvc加json加ajax要怎么配置
加入对springmvc需要jackson支持包的引入<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.3</version></dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.6.3</version></dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.6.3</version></dependency>不引入支持包,在debug下,spring会抛出异常配置spring-servlet.xml<bean class="org.springframework.web.servlet.mvc.annotation."> <property name="messageConverters"> <list> <ref bean="" /> </list> </property> </bean> <bean id="" class="org.springframework.http.converter.json."> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean>具体使用方法:使用注解@ResponseBody可以将结果(一个包含字符串和javaBean的Map),转换成JSON。 使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。 ajax json前端请求示例 jQuery.ajax( { type : 'GET', contentType : 'application/json', url : 'user/list', dataType : 'json', success : function(data) { if (data && data.success == "true") { $('#info').html("共" + data.total + "条数据。<br/>"); $.each(data.data, function(i, item) { $('#info').append( "编号:" + item.id + ",姓名:" + item.username + ",年龄:" + item.age); }); } }, error : function() { alert("error") } }); 后台java controller类@Controller @RequestMapping("/user") public class DemoController { @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody public Map<String, Object> getUserList() { logger.info("列表"); List<UserModel> list = new ArrayList<UserModel>(); UserModel um = new UserModel(); um.setId("1"); um.setUsername("sss"); um.setAge(222); list.add(um); Map<String, Object> modelMap = new HashMap<String, Object>(3); modelMap.put("total", "1"); modelMap.put("data", list); modelMap.put("success", "true"); return modelMap; } }
Ⅳ spring mvc 怎么获取json
首先准备以下 jar包:commons-logging-1.1.3.jarjackson-core-asl-1.9.2.jarjackson-mapper-asl-1.9.2.jarspring-aop-4.0.6.RELEASE.jarspring-beans-4.0.6.RELEASE.jarspring-context-4.0.6.RELEASE.jarspring-core-4.0.6.RELEASE.jarspring-expression-4.0.6.RELEASE.jarspring-web-4.0.6.RELEASE.jarspring-webmvc-4.0.6.RELEASE.jar其中commons-logging-1.1.3.jar,jackson-core-asl-1.9.2.jar,jackson-mapper-asl-1.9.2.jar均可在struts2的工具包中取得导入以上包后,去web.xml中进行配置,配置文件如下:
以上jsp文件中出现了一个JSON.stringify()函数,此函数由jquery提供,作用在于将JSON数据转换为字符串,之所以要这么做,原因在于服务端的@RequestBody只能识别字符串,而不能识别JSON对象
Ⅳ springMvc配置文件中设置JSON数据转换不起作用
3.1 jar包准备Springmvc默认用对json数据进行转换,需要加入jackson的包,如下:3.2 springmvc.xml文件中的配置1) 如果配置文件中配置过注解驱动(<mvc:annotation-driven/>), 则无需多余配置2) 如果没有配置注解驱动, 则需如下配置(不推荐使用这种方式)<!–注解适配器 –> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json."></bean> </list> </property> </bean> 4. Controller的编写 @RequestMapping("/testJson.action") @ResponseBody public Items testJson (@RequestBody Items items) { return items; }对应jsp页面中js的编写function jsonTest () { $.ajax({ type:"post", url:"${pageContext.request.contextPath}/item/testJson.action", contentType:"application/json;charset=utf-8", data:'{"name":"测试商品","price":99.9}', success:function (data) { alert(data.name); } }); }
Ⅵ springmvc接收json格式参数需要什么配置
$("#btSaveTemplate").click(function() { // alert($("#templateName").val()); var data = {"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}}; var data2 = {"templateName":$("#templateName").val()}; $.ajax({ type: "get",//使用get/post方法访问后台 dataType: "json",//返回json格式的数据 url: "lotty/add",//要访问的后台地址 data: data, success: function(msg){//msg为返回的数据,在这里做数据绑定 if(msg == '1'){ alert('操作成功'); location.reload(); } }, error: function(jqXHR, textStatus, errorThrown) { alert("error:" + textStatus + " exception:" + errorThrown); } }); 后台spring确实收到了请求,并且执行了相应的方法,如下: Java代码 @ResponseBody @RequestMapping(value="/add", method=RequestMethod.GET) public String doAdd([color=red][b]String info[/b][/color],Model model) throws Exception; 红色粗体的地方,用String接收是null,改用List和HashMap都不行,后来在SPRING的JAR包中,翻到一个MappingJacksonJsonView,尝试了下,还是空值。之后,我在方法里加了HttpServletRequest参数,郁闷的是:request里面的parameter部分为空 我想可能是SPRING注入处理JSON类的地方出错了,但是这个也不太可能。因为我传最基本的纯key-value结构的JSON数据,后台能成功捕获到(我的做法比较笨,前台有多少个key,controller方法里有多少个对应参数的那种) 这是我SPRING的相关配置:Java代码 <bean id="" class="org.springframework.http.converter.json."/> 然后注入:Java代码 <bean class="org.springframework.web.servlet.mvc.annotation."> <property name="messageConverters"> <list> <ref local=""/> </list> </property> </bean> 到此,实在不知道其他的解决方法了。 我的想法是,在实际应用中如果做批量插入的话,可以一次提交一个大的JSON数据,在后台里解析成JSONObject对象,再逐步取值。试了大半天,没有结果,上来问问大家,SPRING3里面JSON做参数的一些经验。问题补充:amcucn 写道简单点的方法以就是直接将你要传的json数据当成一个字符串提交到后台,后台使用JSONObject相关的方法 可以直接转成对应的MAP对象。然后你就可以处理了。大致的想法就是绕过springmvc本身的json处理类,把你想的"JSON"当成字符串传到后台。也只能这样,看来SPRING3.0.5并没有能够很好的集成JSONObject的解决方案,只是死板地提供了参数对应和VO去封装JSON信息。
Ⅶ 求助一个springmvc返回json字符串的问题
我的springmvc工程中,有的action想让返回到一个jsp页面,有的action是ajax发送的请求,想让返回一个json字符串。但是现在有下面几个问题:1、post请求,使用ajax发请求,返回不了json字符串,总是返回一个jsp页面内容(get请求可以)2、使用ajaxfileupload.js中提供的上传文件ajaxFileUpload方法上传一个图片,想让返回个json字符串来标识结果以及图片ID。但是总是返回一个jsp的页面内容。我的spring配置文件如下:Plain Text code?12345678910111213141516171819202122<bean class="org.springframework.web.servlet.view."><property name="mediaTypes"><map><entry key="html" value="text/html"/><entry key="spring" value="text/html"/><entry key="json" value="application/json"/></map></property><property name="viewResolvers"><list><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/jsp/"/><property name="suffix" value=".jsp"/></bean></list></property><property name="defaultViews"><list><bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/></list></property> </bean> action中的写法:Java code?123456789101112131415161718192021222324252627282930313233343536373839404142@RequestMapping(value = "uploadPreviewPhoto", method=RequestMethod.POST) public ModelAndView uploadPreviewPhoto (HttpSession session, HttpServletRequest request){MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;MultipartFile photo = multipartRequest.getFile("uploadFileName");InputStream is = null;ModelAndView mv = new ModelAndView();if (photo.getSize() > 1048576){mv.addObject("result", "failed");mv.addObject("reason", "上传图片必须小于1M.");return mv;}byte[] photoData = new byte[(int) photo.getSize()];try {is = photo.getInputStream();is.read(photoData);} catch (IOException e) {mv.addObject("result", "failed");mv.addObject("reason", "文件读取失败");return mv;}finally{if (is != null){try {is.close();} catch (IOException e) {mv.addObject("result", "failed");mv.addObject("reason", "服务异常");return mv;}}}mv.setViewName("login/uploadAvatar");mv.addObject("result", "success");session.setAttribute("photoData", photoData);return mv;}js中的写法:JavaScript code?1234567891011121314151617function ajaxFileUpload (){$.ajaxFileUpload ({url :'photo/uploadPreviewPhoto.do',type:"POST",secureuri :false,accept:"application/json",fileElementId :'uploadFileName',success : function (data, status){// 此处的data是个HTMLObject,我其实想要个json字符串document.getElementById("previewimg").src=path + "photo/getPreviewPhoto.do?width=0&height=0";},error: function (data, status, e){alert(e);}})return false;}我把请求后缀换成了.json,这样spring就知道是要解析成json了。其他地方继续用.do
Ⅷ 在什么情况下springmvc.xml 的配置文件里面需要加入json转换器
你使用的情况下,一般我们ajax的使用,responseBody就要用到了。
Ⅸ 在spring配置文件中配置json转换器时给我报错是什么原因呢请求大神帮忙。。。急。。。 报错问题如下:
引用相关的 .jar~~
Ⅹ Spring5.0 使用 @ResponseBody 返回 Json ,类型转换异常,应该用什么方法处理
在使用 SpringMVC 的时候,我们可能需要将一个对象从 View 传递给 Controller 。而当这个 Object 只是一些简单的 String , int 或者 boolean 类型的成员变量时,SpringMVC 能自动将 View 层的 JSON 包含的 String 类型转换为 Object 成员变量相应的类型。但是当这个 Object 包 Date 类型的成员变量的时候, SpringMVC 在将 String转换成 Date 类型时,就会出错,报异常。但是我们又需要使用 Date 类型的时候,其实 Spring 给我们提供了简单的操作方式可以完成这个任务的。SpringMVC 提供了一个注解 @DateTimeFormat 。可以将 View 传过来的 String类型转换为 Date 类型。具体使用方式很简单,直接在成员变量上加入注解就可以了,同时还可以指定 format 的格式,如下所示:public class Person {private String name;//直接在date类型上加入注解,同时指定格式样式@DateTimeFormat( pattern = "yyyy-MM-dd" )private Date birthday;//setterAndGetter}至此,不要以为完事大吉了,你还需要完成以下两个步骤才可以。第一需要加入 joda 的 jar 包。因为在 @DateTimeFormat 注解中使用到了 joda 包中的相关东西,所以缺少这个包也是会报异常的。如果使用的直接导入 jar 包的话,去下载 joda-Jar 导入即可,如果使用的是 Maven 管理项目的 jar ,那么在配置文件文件中加入依赖:<dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.3</version></dependency>第二需要在 SpringMVC 配置 xml 文件中(一般是 dispatchServlet.xml 文件)中加入配置: <mvc:annotation-driven /> 。这一句配置是一种简写,其实是给 spring 容器中注入了两个 Bena ,分别是: 和 。 @DateTimeFormat 注解的内部同样需要使用到前面注入的两个 bean 去处理,所以缺少这个配置, Spring 容器中没有对应的 bean 去处理注解同样也会报错。至此,所有的步骤都完成了,可以跑了。接下来我们跑跑测试一下,测试过程:首先需要一个表单 :<form action="test" method="post"><input type="text" name="name"><input type="text" name="birthday"><input type="submit" name="提交"></form>用一个 Controller 接收:@RequestMapping( "/test" )public ModelAndView test(HttpServletRequest request,@ModelAttribute Person person) {ModelAndView view = new ModelAndView();System.out.println(person.toString());view.setViewName("/test/data");return view;}好了,总结一下整个过程,其实就 3 步:1 、 在 Date 类型的属性上加入 @DateTimeFormat 注解2、 加入 joda 相关的包3、 在 SpringMVC 配置文件中加入 <mvc:annotation-driven />