【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