package servlet_tests;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.AsyncContext;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.Thread.*;
/*
This is an implementation of Servlet3.0-i18n-24
*/
public class TestAsyncServletGB2312 extends HttpServlet {
String strValue = "\u7b80\u4e2d\u6d4b\u8bd5";
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
req.setCharacterEncoding("GB2312");
resp.setContentType("text/html;charset=GB2312");
PrintWriter out = resp.getWriter();
out.println("");
out.println("
AsyncContext Test");
out.println("");
out.println("");
out.println("\n"+
"\n"+
"req.startAsync() |
---|
\n"+
"
");
out.println("resp.getCharacterEncoding(): " + resp.getCharacterEncoding() + "
" + "
");
out.println("start Servlet_1: " + strValue + "
");
out.flush();
// Start async operation
AsyncContext ctx = req.startAsync();
new Thread(new Executor(ctx)).start();
out.println("complete Servlet_1, starting Servlet_2 ..." + "
" + "
");
out.flush();
}
public class Executor implements Runnable {
private AsyncContext ctx = null;
public Executor(AsyncContext ctx)throws IOException, ServletException{
this.ctx = ctx;
}
public void run(){
try {
//Wait two seconds, to simulate the execution of business method
Thread.sleep(2000);
PrintWriter out = ctx.getResponse().getWriter();
out.println("Servlet_2: "+ strValue + "
");
out.println("complete Servlet_2");
out.println("");
out.flush();
ctx.complete();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}