dwr反向调用及和调用页面中的通信

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

你可能感兴趣的:(JavaScript,xml,servlet,DWR)