Skip to content

Commit 22a9fec

Browse files
committed
test HttpServletResponseWrapper
1 parent ab7879d commit 22a9fec

File tree

6 files changed

+108
-6
lines changed

6 files changed

+108
-6
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
[gitee源](https://gitee.com/netbuffer/javaee-demo)
55

66
* /TestServlet 测试javaee监听器
7-
* [cors-filter跨域设置](http://software.dzhuvinov.com/cors-filter-installation.html)
7+
* [cors-filter跨域设置](http://software.dzhuvinov.com/cors-filter-installation.html)
8+
* 通过filter修改http response `ModifyHttpResponseFilter`

pom.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
<packaging>war</packaging>
1111

1212
<name>javaee-demo Maven Webapp</name>
13-
<!-- FIXME change it to the project's website -->
14-
<url>http://www.example.com</url>
13+
<url>https://github.com/netbuffer/javaee-demo</url>
1514

1615
<properties>
1716
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -23,7 +22,7 @@
2322
<dependency>
2423
<groupId>junit</groupId>
2524
<artifactId>junit</artifactId>
26-
<version>4.11</version>
25+
<version>4.13.2</version>
2726
<scope>test</scope>
2827
</dependency>
2928
<dependency>
@@ -59,6 +58,11 @@
5958
<artifactId>java-property-utils</artifactId>
6059
<version>1.14</version>
6160
</dependency>
61+
<dependency>
62+
<groupId>com.alibaba</groupId>
63+
<artifactId>fastjson</artifactId>
64+
<version>1.2.78</version>
65+
</dependency>
6266
</dependencies>
6367

6468
<build>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package cn.netbuffer.filter;
2+
3+
import cn.netbuffer.filter.wrapper.ModifyHttpResponseWrapper;
4+
import com.alibaba.fastjson.JSON;
5+
import com.alibaba.fastjson.JSONObject;
6+
7+
import javax.servlet.*;
8+
import javax.servlet.annotation.WebFilter;
9+
import javax.servlet.http.HttpServletResponse;
10+
import java.io.IOException;
11+
12+
@WebFilter(filterName = "ModifyHttpResponseFilter", urlPatterns = {"/json/*"})
13+
public class ModifyHttpResponseFilter implements Filter {
14+
15+
@Override
16+
public void init(FilterConfig filterConfig) throws ServletException {
17+
}
18+
19+
@Override
20+
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
21+
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
22+
ModifyHttpResponseWrapper modifyHttpResponseWrapper = new ModifyHttpResponseWrapper(httpServletResponse);
23+
System.out.println("-----------------before ModifyHttpResponseFilter------------------");
24+
filterChain.doFilter(servletRequest, modifyHttpResponseWrapper);
25+
System.out.println("-----------------after ModifyHttpResponseFilter------------------");
26+
JSONObject jsonObject = JSON.parseObject(modifyHttpResponseWrapper.getResult());
27+
jsonObject.put("msg", "wrapper[" + jsonObject.getString("msg") + "]");
28+
HttpServletResponse response = (HttpServletResponse) modifyHttpResponseWrapper.getResponse();
29+
response.setContentType("application/json; charset=UTF-8");
30+
response.getWriter().write(jsonObject.toJSONString());
31+
}
32+
33+
@Override
34+
public void destroy() {
35+
}
36+
37+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package cn.netbuffer.filter.wrapper;
2+
3+
import javax.servlet.http.HttpServletResponse;
4+
import javax.servlet.http.HttpServletResponseWrapper;
5+
import java.io.CharArrayWriter;
6+
import java.io.IOException;
7+
import java.io.PrintWriter;
8+
9+
public class ModifyHttpResponseWrapper extends HttpServletResponseWrapper {
10+
11+
private PrintWriter cacheWriter;
12+
private CharArrayWriter bufferWriter;
13+
14+
public ModifyHttpResponseWrapper(HttpServletResponse response) {
15+
super(response);
16+
bufferWriter = new CharArrayWriter();
17+
cacheWriter = new PrintWriter(bufferWriter);
18+
}
19+
20+
@Override
21+
public PrintWriter getWriter() throws IOException {
22+
return cacheWriter;
23+
}
24+
25+
/**
26+
* 获取原始的HTML页面内容。
27+
*
28+
* @return
29+
*/
30+
public String getResult() {
31+
return bufferWriter.toString();
32+
}
33+
34+
@Override
35+
public void setContentType(String type) {
36+
super.setContentType(type);
37+
}
38+
39+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package cn.netbuffer.servlet;
2+
3+
import com.alibaba.fastjson.JSONObject;
4+
import javax.servlet.ServletException;
5+
import javax.servlet.annotation.WebServlet;
6+
import javax.servlet.http.HttpServlet;
7+
import javax.servlet.http.HttpServletRequest;
8+
import javax.servlet.http.HttpServletResponse;
9+
import java.io.IOException;
10+
11+
@WebServlet(name = "jsonServlet", urlPatterns = {"/json"})
12+
public class JSONServlet extends HttpServlet {
13+
14+
@Override
15+
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16+
JSONObject data = new JSONObject();
17+
data.put("success", true);
18+
data.put("msg", "invoke success for " + this.getClass().getName());
19+
System.out.println("get json=" + data);
20+
response.getWriter().write(data.toString());
21+
}
22+
23+
}

src/main/java/cn/netbuffer/servlet/PostServletTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package cn.netbuffer.servlet;
22

3-
import cn.lcfms.utils.Vardump;
4-
53
import javax.servlet.ServletException;
64
import javax.servlet.annotation.WebServlet;
75
import javax.servlet.http.HttpServlet;

0 commit comments

Comments
 (0)