Servlet 3.0 비동기식 요청 이해
비동기 요청의 가장 직접적인 사용법은 시간 소모 업무를 처리하는 것이다. Http 프로토콜은 단방향이기 때문에 클라이언트만 끌어당길 수 있고 서버는 밀어낼 수 없다.
비동기 요청의 핵심 원리는 주로 두 가지로 나뉜다. 1.윤문하다.2 긴 연결
윤문: 정해진 시간에 결과를 얻는 것입니다.
긴 연결: 클라이언트가 서버를 요청한 후 연결이 닫히지 않고 비동기 요청 처리가 끝난 후에만 연결을 닫습니다.
비동기식 요청에 대한 Servlet 3.0 지원
Servlet 3.0에서 비동기 요청에 대한 지원은 매우 간단합니다. 요청하는 과정에서 request의 startAsync를 호출하면 됩니다. 되돌아오는 값은 AsyncContext입니다.AsyncContext는 비동기 요청 용기로 비동기 요청과 관련된 모든 정보를 저장하는 역할을 합니다. 예를 들어 Servlet의 ServletContext와 유사합니다.주의해야 할 것은 startAsync를 여러 번 호출하여 같은 AsyncContext로 되돌아오는 것이다.
public interface AsyncContext {
String ASYNC_REQUEST_URI = "javax.servlet.async.request_uri";
String ASYNC_CONTEXT_PATH = "javax.servlet.async.context_path";
String ASYNC_PATH_INFO = "javax.servlet.async.path_info";
String ASYNC_SERVLET_PATH = "javax.servlet.async.servlet_path";
String ASYNC_QUERY_STRING = "javax.servlet.async.query_string";
ServletRequest getRequest();
ServletResponse getResponse();// response
boolean hasOriginalRequestAndResponse();
void dispatch();// ( )
void dispatch(String var1);// ( )
void dispatch(ServletContext var1, String var2);// ( )
void complete();// , .
void start(Runnable var1);//
void addListener(AsyncListener var1);//
void addListener(AsyncListener var1, ServletRequest var2, ServletResponse var3);
extends AsyncListener> T createListener(Class var1) throws ServletException;
void setTimeout(long var1);//
long getTimeout();
}
Servlet 3.0 비동기 요청 3부작 처리
1. 서브렛을 구성할 때 async-supported를 true로 설정합니다.
2. servlet 처리 방법에서 Request의 startAsync 방법을 호출하여 비동기 처리를 시작합니다.
3. 위의 AsyncContext를 사용하여 비동기식 요청을 처리합니다.
웹을 설정합니다.xml
<servlet>
<servlet-name>WorkServletservlet-name>
<servlet-class>controller.WorkSerletservlet-class>
<async-supported>trueasync-supported>
servlet>
<servlet-mapping>
<servlet-name>WorkServletservlet-name>
<url-pattern>/workurl-pattern>
servlet-mapping>
다음으로 전송:https://www.cnblogs.com/fxust/p/7905688.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.