springmvc返回json数据 如何在filter中获取的返回参数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc返回json数据 如何在filter中获取的返回参数?相关的知识,希望对你有一定的参考价值。

@RequestMapping(value = "/noaccess")
public ModelAndView noaccess(HttpServletRequest request, HttpServletResponse response) throws Exception
Map res = new HashMap();
res.put("retMsg", "connect error");
ModelAndView view =new ModelAndView("msg", res);
return view;

返回的是json
"retMsg":"connect error"

filter中:
HttpServletRequest hrequest = (HttpServletRequest)request;
Enumeration el=hrequest.getAttributeNames();
while(el.hasMoreElements())
String name=(String) el.nextElement();
String msg=hrequest.getAttribute(name);

为何获取不到retMsg的值呢?

参考技术A 亲应该说明filter的作用,目测你的retMsg是放在response中,request应该是取不到的。 希望有帮助!追问

但如果是放在response中的,应该如何取得呢?
response.getOutputStream();取得的是一个不可操作的输出流,怎么取得返回参数呢?

追答

贴出filter的部分代码是先执行的,然后再执行public ModelAndView noaccess方法的吧。验证方法:在贴出的2段代码分别设置断点,看看先进入哪个方法。

追问

chain.doFilter(request, response);

HttpServletRequest hrequest = (HttpServletRequest)request;

Enumeration el=hrequest.getAttributeNames();
...
顺序执行肯定是后执行获取返回值这部分代码的,断点也证明了这样一个步骤。
步骤是没问题,但值存到什么地方去了,怎么才能取到?

追答

明白你的问题了,你要先理解request和response,简单讲:request包含请求的信息,response是返回的信息。所以你的filter写法有问题,一般是:处理request-chain.doFilter-处理response。根据你代码的意图是想输出retMsg,可以在noaccess方法调转的页面通过JSTL($personList)查看resMsg的值。

追问

亲,
首先,这里返回的是json数据,没有页面,怎么通过页面获取?
其次,我是需要在代码中拿到返回值进行处理,都到页面去了还怎么处理?

本回答被提问者采纳
参考技术B filter在你调用/noaccess接口之前执行了,当然没有retMsg了追问

filter不是会有一个chain.doFilter(request, response);方法吗?
这里会判断时候有后续filter,如果没有,就会执行servlet啊?
然后在doFilter后获取返回值,应该是能拿到才对啊?

难道这里的Controller不是和servlet同样的原理?

SpringMVC返回JSON数据


1.在Controller类中添加


  //查看用户信息 ?json
 //params="json"的意思是访问view这个方法的时候,必须有一个参数json
 @RequestMapping(value="/{username}",method=RequestMethod.GET,params="json")//params="json":需要在URL增加
 @ResponseBody//返回对象的注解
 public User view(@PathVariable String username){
  return userList.get(username);
 }

以上是关于springmvc返回json数据 如何在filter中获取的返回参数?的主要内容,如果未能解决你的问题,请参考以下文章

springmvc如何返回json串和返回map的区别

springmvc怎么返回json数据报406

SpringMVC返回JSON数据

SpringMVC返回JSON数据以及文件上传过滤静态资源

springmvc返回json数据的工具类

SpringMVC返回Json