修复bug,解决重复提交问题
parent
e07b6ec554
commit
f7feb0b1ac
|
@ -0,0 +1,35 @@
|
|||
package com.bwie.Filter;
|
||||
|
||||
import com.bwie.config.XssHttpServletRequestWrapper;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
|
||||
public class XssFilter implements Filter {
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
ServletRequest requestWrapper = null;
|
||||
if(request instanceof HttpServletRequest) {
|
||||
requestWrapper = new XssHttpServletRequestWrapper((HttpServletRequest) request);
|
||||
}
|
||||
//获取请求中的流如何,将取出来的字符串,再次转换成流,然后把它放入到新request对象中。
|
||||
// 在chain.doFiler方法中传递新的request对象
|
||||
if(requestWrapper == null) {
|
||||
|
||||
chain.doFilter(request, response);
|
||||
} else {
|
||||
chain.doFilter(requestWrapper, response);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package com.bwie.config;
|
||||
|
||||
import javax.servlet.ReadListener;
|
||||
import javax.servlet.ServletInputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequestWrapper;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
|
||||
public String _body;
|
||||
|
||||
public XssHttpServletRequestWrapper(HttpServletRequest request) throws IOException {
|
||||
super(request);
|
||||
StringBuffer sBuffer = new StringBuffer();
|
||||
BufferedReader bufferedReader = request.getReader();
|
||||
String line;
|
||||
while ((line = bufferedReader.readLine()) != null) {
|
||||
sBuffer.append(line);
|
||||
}
|
||||
_body = sBuffer.toString();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServletInputStream getInputStream() {
|
||||
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(_body.getBytes());
|
||||
return new ServletInputStream() {
|
||||
@Override
|
||||
public int read() {
|
||||
return byteArrayInputStream.read();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFinished() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReady() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadListener(ReadListener listener) {
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedReader getReader() {
|
||||
return new BufferedReader(new InputStreamReader(this.getInputStream()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package com.bwie.utils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
|
||||
public class HttpServletRequestReader {
|
||||
|
||||
// 字符串读取
|
||||
// 方法一
|
||||
public static String ReadAsChars(HttpServletRequest request) {
|
||||
|
||||
BufferedReader br = null;
|
||||
StringBuilder sb = new StringBuilder("");
|
||||
try {
|
||||
br = request.getReader();
|
||||
String str;
|
||||
while ((str = br.readLine()) != null) {
|
||||
sb.append(str);
|
||||
}
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (null != br) {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue