测试BufferedInputStream的mark()和reset()方法,提交文件时会出现Resetting to invalid mark
这是一段测试代码,在提交文件时会出现Resetting to invalid mark,比如提交一个txt文件。
java.io.IOException: Resetting to invalid mark
java.io.BufferedInputStream.reset(BufferedInputStream.java:370)
org.apache.jsp.request_jsp._jspService(request_jsp.java:57)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
uploap.jsp
<html>
<body>
<form action="request.jsp" method=post ENCTYPE="multipart/form-data">
<input type="FILE" name="boy" size="38">
<br>
<input type="submit" name="g" value="??">
</form>
</body>
</html>
do.jsp
<%@page contentType="text/html; charset=gb2312"%>
<%@page import="java.io.*"%>
<%
int c;
byte fileByte[]=new byte[102400];
BufferedInputStream bis1 = new BufferedInputStream(request.getInputStream());
out.println("<br>test begin!<br>");
if (bis1.markSupported()) out.println("bis1 mark support!<br>");
bis1.mark(0);
out.println("bis1 data:<br>");
while ((c = bis1.read(fileByte,0,10)) != -1) {
out.print("bis1:" + c + ";");
}
out.println("<br>bis1 data end!<br>");
bis1.reset();
BufferedInputStream bis2 = bis1;
if (bis2 != null) out.println("<br>bis2 is not null!<br>");
bis2.mark(0);
out.println("<br>bis2 data:<br>");
while ((c = bis2.read(fileByte,0,10)) != -1) {
out.print("bis2:" + c + ";");
}
bis2.reset();
out.println("<br>test end!<br>");
%>