import org.directwebremoting.AjaxFilter;
import org.directwebremoting.AjaxFilterChain;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
public class DwrRequestFilter implements AjaxFilter {
//参数说明 arg0调用的类的全限类名;arg1调用的方法名;arg2调用该方法出入的参数
//arg3同servlet拦截器中FilterChain作用
@Override
public Object doFilter(Object arg0, Method arg1, Object[] arg2,AjaxFilterChain arg3) throws Exception {
//得到上下文
WebContext wc = WebContextFactory.get();
//通过上下文得到ScriptSession,该对象可调用页面中的javascript
ScriptSession s = wc.getScriptSession();
//将ScriptSession对象包装为Util,该对象有dwr来调用
Util u = new Util(s);
//可从上下文中得到request、response、session对象
HttpSession session = wc.getSession();
HttpServletRequest request = wc.getHttpServletRequest();
HttpServletResponse response = wc.getHttpServletResponse();
//调用业务逻辑
//......
//调用页面中函数名为logOut函数
u.addScript(new ScriptBuffer("logOut()"));
//正常提交请求,如果不想提交只需return null即可
return arg3.doFilter(arg0, arg1, arg2);
}
}
dwr.xml文件中只需加入
<filter class="DwrRequestFilter"/>就可拦截到所有的dwr请求
该方法测试版本为dwr3.0