servlet规范

来源:互联网 发布:uc独角兽 知乎 编辑:程序博客网 时间:2024/06/05 04:44

1、ServletRequest
public AsyncContext startAsync(ServletRequest req, ServletResponse res)。这个方法的作用是将请求转换为异步模式,并使用给定的请求及响应对象和getAsyncTimeout返回的超时时间初始化它的AsyncContext。ServletRequest和ServletResponse参数必须是与传递给servlet的service或filter的doFilter方法相同的对象,或者是ServletRequestWrapper和ServletResponseWrapper子类的包装对象。当应用退出service方法时,调用该方法必须确保response没有被提交。当调用返回的AsyncContext的AsyncContext.complete或AsyncContext超时并且没有监听器处理超时时,它将被提交。异步超时定时器直到请求和它关联的响应从容器返回时才启动。AsyncContext可以被异步线程用来写响应,它也能用来通知没有关闭和提交的响应。

如果请求在不支持异步操作的servlet或filter范围中调用startAsync,或者响应已经被提交或关闭,或者在同一个分派期间重复调用,这些是非法的。从调用startAsync返回的AsyncContext可以接着被用来进行进一步的异步处理。调用返回的AsyncContext 的hasOriginalRequestResponse()方法将返回false,除非传过去的ServletRequest和ServletResponse参数是最原始的那个或不是应用提供的包装器。

public AsyncContext startAsync() 是一个简便方法,使用原始请求和响应对象用于异步处理。请注意,如果它们在你想调用此方法之前被包装了,这个方法的使用者应该刷出(flush)响应,确保数据写到被包装的响应中没有丢失

public AsyncContext getAsyncContext() – 返回由startAsync 调用创建的或初始化的AsyncContext。如果请求已经被设置为异步模式,调用getAsyncContext 是非法的。

public boolean isAsyncSupported() – 如果请求支持异常处理则返回true,否则返回false。一旦请求传给了过滤器或servlet不支持异步处理(通过指定的注解或声明),异步支持将被禁用。

public boolean isAsyncStarted() – 如果请求的异步处理已经开始将返回true,否则返回false。如果这个请求自从被设置为异步模式后已经使用任意一个AsyncContext.dispatch方法分派,或者成功调用了AsynContext.complete 方法,这个方法将返回false。

public DispatcherType getDispatcherType() – 返回请求的分派器(dispatcher)类型。容器使用请求的分派器类型来选择需要应用到请求的过滤器。

2、AsyncContext
public ServletRequest getRequest() – 返回调用startAsync用于初始化AsyncContext 的请求对象。当在异步周期之前调用了complete或任意一个dispatch方法,调用getRequest将抛出IllegalStateException。

0 0
原创粉丝点击