DWR reverse ajax

 一般情况:

public void addMessage(String text)
    {
        // Make sure we have a list of the list 10 messages
        if (text != null && text.trim().length() > 0)
        {
            messages.addFirst(new Message(text));
            while (messages.size() > 10)
            {
                messages.removeLast();
            }
        }

        WebContext wctx = WebContextFactory.get();
        String currentPage = wctx.getCurrentPage();

        // Clear the input box in the browser that kicked off this page only
        Util utilThis = new Util(wctx.getScriptSession());
        utilThis.setValue("text", "");

        // For all the browsers on the current page:
        Collection sessions = wctx.getScriptSessionsByPage(currentPage);
        Util utilAll = new Util(sessions);

        // Clear the list and add in the new set of messages
        utilAll.removeAllOptions("chatlog");
        utilAll.addOptions("chatlog", messages, "text");
    }

 

 

servlet:

public class TestServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   Service service = new Service();
   ServerContext wctx = ServerContextFactory.get(this.getServletContext());
   for (int i = 0; i < 10; i++) {
     service.update(wctx);
     try {
       Thread.sleep(1000);
     }
     catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
   PrintWriter writer = response.getWriter();
   writer.println("Done");
   writer.close();

}}

public class Service {

private int count = 0;

public void update(ServerContext wctx) {
   List<Data> messages = new ArrayList<Data>();
   messages.add(new Data("testing" + count++));

   // Collection sessions = wctx.getAllScriptSessions();
   Collection sessions = wctx.getScriptSessionsByPage("/ReverseAjax/index.html");
   Util utilAll = new Util(sessions);
   utilAll.addOptions("updates", messages, "value");
}
}

 

 

 

其他情况要利用DWR通知客户端,利用Spring ServletContextAware

public class NotifyClient implements ServletContextAware {
    
static Logger logger = Logger.getLogger (NotifyClient.class.getName());

    
private ServletContext servletContext = null;
      
public void setServletContext( ServletContext servletContext )
      {
        
this.servletContext = servletContext;
      }    
      
    
public int serviceUpdate (String str1, String str2) {
        logger.info (
"entered");
        logger.info (
"WebContext1"+servletContext);
         ServerContext ctx 
= ServerContextFactory.get(servletContext );

// Generate JavaScript code to call client-side
        
// WebContext  ctx = WebContextFactory.get();
        logger.info ("WebContext"+ctx);
        
if (ctx != null) {
              
//String currentPage = ctx.getCurrentPage();
              
//logger.info ("current page:" + currentPage);
              
              ScriptBuffer script 
= new ScriptBuffer();
              script.appendScript(
"updatePoint(")
                  .appendData(str1)
                  .appendScript(
",")
                  .appendData (str2)
                  .appendScript(
");");
        
            
// Push script out to clients viewing the page
            Collection<ScriptSession> sessions = 
                      ctx.getScriptSessionsByPage(
"/ebnms/index.eb?do=dwrtest");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值