一、请求转发(forward)
浏览器请求访问Servlet1对象,Servlet1对象接到请求后,进行预处理操作,又将请求发送给Servlet2对象,由Servlet2对象响应请求。
- 共享ServletRequest和ServleResponse对象。
- 依赖于javax.servlet.RepusetDispatcher。
ServletContext context = getServletContext();//获得ServletContext对象
RequestDispatcher dispatcher = context.getRequest("/output"); //转发请求给output对象
dispatcher.forward(request,response);
二、包含(include)
将Servlet2的响应结果包含到Servlet1的响应结果中。
- 共享ServletRequest和ServleResponse对象。
- 依赖于javax.servlet.RepusetDispatcher。
PrintWriter out = response.getWriter();//获取响应
out.println("<html><head><title>MainServlet</title></head>");
ServletContext context = getServletcontext();
RequestDispatcher headDispatcher = context.getRequestDispatcher("/header.htm");
headDispatcher.include(request,response);//将header.htm响应加到out中
三、重定向
当浏览器访问Servlet时,response返回状态码302,并使浏览器自动访问特定的地址。
response.sendRedirect("/helloapp/output");//给浏览器返回302,同时,地址栏自动访问/helloapp/output
四、并发
- CPU中的线程是硬件概念,表示同一时刻可以有N和线程同时进行。
- 程序中说的线程是软件概念,表示在极短的时间内可以做几件事。
如:进行一个一边说一边写的事情。说是一个线程,写是一个线程。(我们说是同时进行,但是实际上并不是同时进行的)
异步处理就是把写和说分开来进行。
先说———>在写