Java 重写ServletResponse中的内容
来源:互联网 发布:mac系统可以装ps吗 编辑:程序博客网 时间:2024/06/12 22:19
Java 重写ServletResponse中的内容,Java 修改response中的内容
1. 继承HttpServletResponseWrapper 重新覆盖Response对象
package com.hbzx.interceptor;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;public class UrlResponseWrapper extends HttpServletResponseWrapper {private ByteArrayOutputStream buffer = null;private ServletOutputStream out = null;private PrintWriter writer = null;public UrlResponseWrapper(HttpServletResponse resp) throws IOException {super(resp);buffer = new ByteArrayOutputStream();// 真正存储数据的流out = new WapperedOutputStream(buffer);writer = new PrintWriter(new OutputStreamWriter(buffer));}@Overridepublic ServletOutputStream getOutputStream() throws IOException {return out;}@Overridepublic PrintWriter getWriter() throws UnsupportedEncodingException {return writer;}@Overridepublic void flushBuffer() throws IOException {if (out != null) {out.flush();}if (writer != null) {writer.flush();}}@Overridepublic void reset() {buffer.reset();}public byte[] getResponseData() throws IOException {flushBuffer();return buffer.toByteArray();}public String getContent() throws IOException{flushBuffer();return buffer.toString();}private class WapperedOutputStream extends ServletOutputStream {private ByteArrayOutputStream bos = null;public WapperedOutputStream(ByteArrayOutputStream stream) throws IOException {bos = stream;}@Overridepublic void write(int b) throws IOException {bos.write(b);}@Overridepublic void write(byte[] b) throws IOException {bos.write(b, 0, b.length);}@Overridepublic void write(byte[] b, int off, int len) throws IOException {bos.write(b, off, len);}}}
2. 编写Filter
package com.hbzx.interceptor;import java.io.IOException;import java.io.OutputStream;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang3.StringUtils;import org.springframework.http.MediaType;public class UrlImageFilter implements Filter {@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {UrlResponseWrapper responseWrapper = new UrlResponseWrapper((HttpServletResponse) response);chain.doFilter(request, responseWrapper);String contentType = responseWrapper.getContentType();byte[] content = responseWrapper.getResponseData();if(StringUtils.isNotBlank(contentType) && (contentType.contains(MediaType.APPLICATION_JSON_VALUE) || contentType.contains(MediaType.TEXT_HTML_VALUE))) {String str = new String(content);str = StringUtils.replace(str, "xxxx", "aaaa");content = str.getBytes();}OutputStream out = response.getOutputStream();out.write(content);out.flush();}@Overridepublic void init(FilterConfig arg0) throws ServletException {}}
3. 在web.xml 中配置filter
<filter> <filter-name>urlFilter</filter-name> <filter-class>com.hbzx.interceptor.UrlImageFilter</filter-class></filter><filter-mapping><filter-name>urlFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
阅读全文
0 0
- Java 重写ServletResponse中的内容
- Java-ServletResponse-ServletResponseWrapper
- servletResponse
- ServletResponse
- 【java web】关于ServletResponse.setContentType()
- java中的url重写
- Java中的重写
- java中的方法重写
- Java中的重写 重载
- java中的重载和重写
- Java中的重载和重写
- java中的重写和重载
- java中的重写与重载
- Java中的重写与隐藏
- Java中的重写覆盖问题
- java中的重写与常量
- java中的重载与重写
- java中的重写与重载
- 字符串数组初始化相关问题总结
- 如何查看JAVA程序的汇编代码
- Spring Boot的web开发
- EPC协议
- javabean,pojo,po,vo,dao的定义与不同
- Java 重写ServletResponse中的内容
- JSP与JavaScript配合,实现子窗口向父窗口的值传递
- 实验三 静态路由与动态路由--自我操作
- javascript正则表达式
- Python编程:从入门到实践的动手试一试答案
- 【Angular】angular-animations 动画 BrowserAnimationsModule 详解
- 漫游算法 01
- 专访架构师陈波:微博近几年的架构演进和架构师的技能素养
- 如何优雅的抄袭代码?天下代码一大抄,这才是正确的姿势