Spring MVC 使用 HttpServletResponseWrapper 修改返回结果
2017-11-16 16:45
756 查看
HttpServletResponseWrapper 是什么? ServletResponse 的包装类,相关设计模式 装饰者模式。 运行环境 jdk 1.7 spring boot 整合的web环境 关键代码 Wrapper
1 package com.basic.m.web.config; 2 3 import com.alibaba.fastjson.JSONObject; 4 import org.slf4j.Logger; 5 import org.slf4j.LoggerFactory; 6 import org.springframework.core.annotation.Order; 7 8 import javax.servlet.*; 9 import javax.servlet.annotation.WebFilter; 10 import javax.servlet.http.HttpServletResponse; 11 import java.io.IOException; 12 13 @Order(2) 14 @WebFilter(urlPatterns = "/*", filterName = "responseFilter") 15 public class ResponseFilter implements Filter { 16 private static final Logger logger = LoggerFactory.getLogger(ResponseFilter.class); 17 18 @Override 19 public void init(FilterConfig filterConfig) throws ServletException { 20 logger.info("enter ResponseFilter init method"); 21 } 22 23 @Override 24 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 25 logger.info("enter ResponseFilter doFilter method"); 26 CustomizeResponseWrapper responseWrapper = new CustomizeResponseWrapper((HttpServletResponse) response); 27 chain.doFilter(request, responseWrapper); 28 29 System.out.println(responseWrapper.getTextContent()); 30 31 /* MyResponseWrapper responseWrapper = new MyResponseWrapper((HttpServletResponse) response); 32 chain.doFilter(request, responseWrapper);*/ 33 34 System.out.println(responseWrapper.getTextContent()); 35 36 String content = responseWrapper.getTextContent(); 37 JSONObject resultJson = new JSONObject(); 38 resultJson.put("code", "ok"); 39 resultJson.put("msg", "success"); 40 resultJson.put("result", content); 41 42 response.setContentLength(resultJson.toJSONString().length()); 43 response.setContentType("application/json;charset=utf-8"); 44 ((HttpServletResponse) response).setStatus(203); 45 response.getOutputStream().write(resultJson.toJSONString().getBytes()); 46 } 47 48 @Override 49 public void destroy() { 50 51 } 52 }View Code参考 通过百度和google 零零散散的查询相关代码后自己实现了一个,这里需要特别注意的是网络上搜索出来的大部分结果都是通过重写 getWriter() 方法来写入流。这里我一直搞不明白为什么。因为个人调试时用于都只会进入 getOutputStream() 方法来写入流。
相关文章推荐
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- 引用 Servlet中使用HttpServletResponseWrapper截获返回的页面内容
- Filter中使用 HttpServletResponseWrapper修改response内容
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- 使用java的过滤器filter备忘(HttpServletResponseWrapper)
- SpringMVC——使用RequestDispatcher.include()和HttpServletResponseWrapper动态获取jsp输出内容
- 通过HttpServletResponseWrapper修改response输出流
- 使用HttpServletRequestWrapper在filter修改request参数
- 利用Filter及HttpServletResponseWrapper修改Response的内容(内容更改利用正则表达式)
- 通过HttpServletResponseWrapper获取到返回body
- HttpServletRequestWrapper,HttpServletResponseWrapper在过滤器Filter中的使用
- 使用HttpServletResponseWrapper造成页面响应慢或者不响应解决办法
- SpringMVC——使用RequestDispatcher.include()和HttpServletResponseWrapper动态获取jsp输出内容
- Android--使用Http向服务器发送请求并取得返回结果,下载图片
- 高手不得不会的东西--HttpServletRequestWrapper、HttpServletResponseWrapper,HttpSessionWrapper用法