【JavaWeb】如何越过SpringMVC直接返回内容

 

来自前同事问的一个问题,因为项目里面的SpringMVC会封装好一个固定的JSON响应规范:

可以看见,data属性下面,又会有一层data,

数据的消费方提出要求,只需要里面data的数据,外面的JSON规范不需要发过来

 

说实话我也不太清楚每个项目是怎么配置这个响应JSON的,

可能有个拦截器,在某一个jar包里面配置好了,你也不太可能取改JAR包来实现

所以相对简单的办法是采取最原生的JavaWeb的响应API来实现

 

一般项目会提供一个BaseController,写Web接口会要求你直接继承这个类,也可以不继承

@RestController
@RequestMapping("${sys.path}/room/service")
public class EServiceController extends BaseController

我这个项目的类的内容就这些:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package cn.ymcd.comm.base;

import cn.ymcd.comm.base.log.LogFactory;
import cn.ymcd.comm.base.log.YmcdLogger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;

public abstract class BaseController {
    protected YmcdLogger _logger = LogFactory.getLogger(this.getClass());
    @Autowired
    protected HttpServletRequest request;
    @Autowired
    protected HttpServletResponse response;

    public BaseController() {
    }
}

根据类的成员可以看出来,提供了一个日志打印

请求对象和响应对象,要越过配置好的JSON规范,可以直接使用这个响应对象进行字符输出

如果不继承这个类也很简单,直接在自己的Controller类里面配置就好了

    @Autowired
    protected HttpServletResponse response;

 

然后使用Response的Writer写String数据即可,JSON数据可以由Fastjson转换

https://www.cnblogs.com/shuilangyizu/p/9750428.html

 

posted @ 2022-03-16 22:42  emdzz  阅读(73)  评论(0编辑  收藏  举报