菜鸟求Java大神解决一个SpringMVC的一个问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟求Java大神解决一个SpringMVC的一个问题。相关的知识,希望对你有一定的参考价值。

红框里面的方法转化成JSON格式数据是出现异常17:29:57.737 [http-bio-8080-exec-23] DEBUG o.s.w.s.m.a.AnnotationMethodHandlerExceptionResolver - Resolving exception from handler [com.mvc.action.StudentAction@2aa89e44]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation17:29:57.737 [http-bio-8080-exec-23] DEBUG o.s.w.s.m.a.ResponseStatusExceptionResolver - Resolving exception from handler [com.mvc.action.StudentAction@2aa89e44]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation17:29:57.737 [http-bio-8080-exec-23] DEBUG o.s.w.s.m.s.DefaultHandlerExceptionResolver - Resolving exception from handler [com.mvc.action.StudentAction@2aa89e44]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation17:29:57.737 [http-bio-8080-exec-23] DEBUG o.s.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'spring': assuming HandlerAdapter completed request handling17:29:57.737 [http-bio-8080-exec-23] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
在网上也找了但是没有解决。

包也有,xml文件也配置了

<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="cacheSeconds" value="0" />
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>

参考技术A

springMVC提供的异常处理主要有以下几种方式。

几种处理方式为:

1、是直接实现自己的HandlerExceptionResolver。HandlerExceptionResolver是一个接口,springMVC本身已经对其有了一个自身的实现——DefaultExceptionResolver,该解析器只是对其中的一些比较典型的异常进行了拦截处理;

2、是使用注解的方式实现一个专门用于处理异常的Controller——ExceptionHandler。

3、是使用邻接矩阵存放图,邻接矩阵中位于行和列上面点的顺序可以自己定义;

4、是把图中点的名称按照点在邻接矩阵中行或者列上的顺序存放一个数组中;

5、是使用一个数组来标记各个点是否被访问过,数组的大小为图中点的数量;

参考技术B jackson-mapper-asl-xx.xx.jar好像也要的追问

这个包加上也不行

参考技术C 需要一个json帮助类来将showAll()返回的数据转换成json数据后再return。追问

应该不需要帮助类吧,要不然这个@ResponseBody注解就没有作用了

追答

@RequestMapping(value = "/admin/rolesList", method = RequestMethod.GET)
public @ResponseBody
Object rolesList(HttpServletRequest request, HttpServletResponse response, ModelMap model,
RedirectAttributes redirectAttributes, @RequestParam(required = false) String rolesName,
@RequestParam(required = false) String targetType, @RequestParam(required = false) String identityType)
List recordList = roleManager.findRoles(rolesName, targetType, identityType);
String jsonString = JsonUtil.beanListToJson(recordList); //使用JsonUtil帮助类转换,可以在网上找到很帮助类
return JsonUtil.ajaxJson(response, jsonString);

本回答被提问者采纳
参考技术D

 提供下思路给你吧,仔细看报错的log

一条一条看,别说全英文看不懂,一开始大家都这样,耐下心来,不一定全部理解,只要明白是啥意思,比方说这个:

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

找不到可以匹配(接受)的数据,你仔细看你写的代码吧,哪个地方配置漏掉什么了吧

追问

Could not find acceptable representation就这一处错误,关键是其他地方没问题。。。。

追答

最笨的方法debug,一点点的改,一点点的尝试,这个痛苦的过程就是你成长的过程

各位java大神,小弟跪求一个解决的方案:调用外部接口得到返回值--耗时问题

目前遇到的问题是这样的:我取出一个LIst集合,每一条数据构建成一个参数去调用一个外部接口,但是得到接口返回值需要耗时,比如10秒,要是List有上万条数据,那一次循环完得多少个小时了,求怎么解决啊 ,下面是我的伪代码:
For (int i =0;i<list.size();i++)

string returnstr = getResult();//调用外部接口得到返回值,这里可能耗时(比如10秒);
updateDate(returnstr).//根据返回值更新数据库的数据


这样下来得好长时间啊 ,用什么方式解决好呢,求给设计代码啊,小弟跪求,我的分数全给了,大神帮帮啊
用到的技术我也了解 ,关键是不知道怎么用,求代码啊 ,谢谢大侠了

参考技术A 不知道你用的什么语言编写的,但一定有获取系统时间的方法或函数吧?
java中可以这样
long start = Calendar.getInstance().getTime().getTime();
string returnstr = getResult();//调用外部接口得到返回值,这里可能耗时(比如10秒);

long end= Calendar.getInstance().getTime().getTime();
long time = end-start;//这里是毫秒数,根据自己需要转换一下吧

updateDate(returnstr).//根据返回值更新数据库的数据

先看看到底需要多长时间,话说是不是java实现的啊?追问

嗯,就是java实现,能给伪代码吗,谢了,用什么技术呢

追答

先写一个处理线程

package org.zcm.run;
public class MyRequestThread implements Runnable
//构造函数,传入请求路径或者参数,只要满足你的请求条件就行
private String param;
public MyRequestThread(String p)
param = p;


public void run()
String returnstr = getResult(param);//调用外部接口得到返回值,这里可能耗时(比如10秒);
updateDate(returnstr);//根据返回值更新数据库的数据

public String getResult(String param)
//这里写请求的方法,用connect或者client都可以
//这里如果请求比较复杂,或者要求比较严谨的话,建议用httpclient
String req = new String();
return req;

//这个方法要怎么实现你懂的
private void updateDate(String returnstr)
// TODO Auto-generated method stub




大概就是这样了。

然后循环调用
为了线程安全,可以用一些线程池来管理。
public class ListOperate

public static void main(String[] args)
//建立线程池
ExecutorService pool = Executors.newSingleThreadExecutor();
//测试数据
List params = new ArrayList();
params.add("1");
params.add("2");

for(String p:params)
Thread reqThread = new Thread(new MyRequestThread(p));
pool.execute(reqThread);

pool.shutdown();



还有别的线程池,用法查查就有了

参考技术B 多线程并发,使用线程池管理 参考技术C 必须使用多线程了 必须的

以上是关于菜鸟求Java大神解决一个SpringMVC的一个问题。的主要内容,如果未能解决你的问题,请参考以下文章

JAVA WEB工程上线后,外部无法访问求大神帮助

本人java菜鸟一枚,公司最近让负责一个类似钉钉的通用审批工作流引擎的流程接口设计,求大神解救!

求大神解释解释MVC与SpringMVC是啥,

菜鸟问题 eclipse 刚建立的项目 再次导入不进来!求大神指点!!

新手不会用vs2010求大神帮忙如何解决窗体打不开

C#中 ToolStripButton 是干啥用的呀, 我是菜鸟,求大神帮助呀