首页 > 其他 > 详细

Servlet3.0中的异步请求

时间:2017-06-11 18:59:50      阅读:293      评论:0      收藏:0      [点我收藏+]
package com.itheima.async;

import java.io.IOException;

import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet3.0中异步请求的servlet,相当于多线程
 */
@WebServlet(urlPatterns="/AsyncServlet",asyncSupported=true)
public class AsyncServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取异步的context对象
		AsyncContext context = request.startAsync(request, response);
		//传一个线程
		context.start(new MyRunnable(context) );
		for(int i =1 ;i<=10; i++){
			
			System.out.println(i);
			try {
				Thread.sleep(400);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
//定义一个线程
class MyRunnable implements Runnable{
	private AsyncContext context;

	public MyRunnable(AsyncContext context) {
		this.context = context;
	}

	@Override
	public void run() {
		for(char i=‘a‘; i<= ‘z‘; i++){
			try {
				context.getResponse().getWriter().println(i);
				Thread.sleep(100);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
	
	
	
}

  

Servlet3.0中的异步请求

原文:http://www.cnblogs.com/csic/p/6985801.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!