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

大标 2022年3月16日22:54:05
评论
40

 

来自前同事问的一个问题,因为项目里面的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

 

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
大标
  • 本文由 发表于 2022年3月16日22:54:05
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/script/java/5323.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: