Servlets Servlet 3.1异步I/O。准备读取多少?
对于异步读取,您可以执行以下操作:Servlets Servlet 3.1异步I/O。准备读取多少?,servlets,asynchronous,java-ee-7,Servlets,Asynchronous,Java Ee 7,对于异步读取,您可以执行以下操作: @WebServlet(urlPatterns="*.do", asyncSupported=true) public class TestServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOExcep
@WebServlet(urlPatterns="*.do", asyncSupported=true)
public class TestServlet
extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
final AsyncContext aContext = req.startAsync();
final ServletInputStream input = req.getInputStream();
ReadListener readListener = new ReadListener() {
@Override
public void onDataAvailable()
throws IOException {
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[1024];
int read = -1;
/* ------> */ while (input.isReady() && (read = input.read(buffer)) != -1) {
sb.append(b, 0, read);
}
}
@Override
public void onAllDataRead() {
aContext.complete();
}
@Override
public void onError(Throwable t) {
t.printStackTrace();
aContext.complete();
}
};
input.setReadListener(readListener);
}
}
现在,方法isReady()
如何知道要读取1024字节?如果准备的字节较少,则方法read()
将被阻止?如果没有,我们为什么要求做好准备
多谢各位