猿教程 Logo

Struts2拦截器:execAndWait拦截器

execAndWait拦截器也称为执行和等待拦截器,用于显示中间结果。

使用execAndWait拦截器可以在等待较长时间的后台处理中增加等待页面。当我们进行数据库查询等相关的操作时,如果服务器负荷过重可能不能及时把数据查询出来,进而会在状态拦显示“正在打开...”,但却一直转不到相关的页面,这将给客户端带来不便,甚于很多人会因此不愿使用网站的所有服务。对此我们可以在客户提交时,马上转到一个页面,并在该页面显示“您的请求已提交,服务器正在查询,请等待...”的内容,这样客户将不会陷于无赖的等待中。 

默认情况下,它不在默认堆栈中。 所以你需要明确指定它。

如果不指定“wait”结果,struts框架将显示一个中间结果,直到您的请求完成。

对于自定义中间结果,需要在struts.xml文件中定义“wait”结果。 在您的页面中,您可以显示处理图像等。因此,最好指定自定义结果。

execAndWait拦截器的参数

为execAndWait拦截器定义了3个参数。

参数描述
delay指定初始延迟时间。 默认情况下,不设置初始延迟。
delaySleepInterval仅用于延迟。 它指定检查后台进程完成的时间间隔(以毫秒为单位)。 通过默认设置为100毫秒。
threadPriority指定线程的优先级。 默认值为Thread.NORM_PRIORITY。

没有等待结果的execAndWait拦截器的示例

让我们看一个简单的例子, execAndWait 拦截器没有等待结果。在这种情况下, struts 框架提供了一个中间结果。

<action name="login" class="com.javatpoint.Login">  
    <interceptor-ref name="params"/>  
    <interceptor-ref name="execAndWait"/>  
    <result name="success">login-success.jsp</result>  
</action>

具有等待结果的execAndWait拦截器的示例

让我们看看具有等待结果的execAndWait拦截器的简单示例。 在这种情况下,将调用您的中间页。

<action name="login" class="com.javatpoint.Login">  
    <interceptor-ref name="params"/>  
    <interceptor-ref name="execAndWait"/>  
    <result name="success">login-success.jsp</result>  
    <result name="wait">myintermediatepage.jsp</result>  
</action>

myintermediatepage.jsp

我们来写中间结果的代码。 s:url标签将请求转发到指定的URL。

<%@ taglib uri="/struts-tags" prefix="s" %>  
<html>  
<head>  
<title>wait</title>  
  
<meta http-equiv="refresh" content="0.5;url='<s:url includeParams="all" />'">  
</head>  
<body>  
  
<p>your request is processing...</p>  
<img src="processing.gif"/>  
  
</body>  
</html>

它会在0.5秒后刷新。

输出





版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Struts/struts-2-execandwait-interceptor-example.html