我想使用dwr来实现局部刷新?谁能提供一个非常简单的例子让我学习呢?
最好是一个留言板形式的,带分页的。界面丑一点没关系。替换的html代码,是写在java类里面取出数据后生成html后返回,还是在javascript取出数据后再生成html呢?
也就是说html是在java类生成还是javascript生成?有例子就好了

解决方案 »

  1.   

    可以在java类中生成html,然后在javascript取出
      

  2.   

    我做的例子是模拟连接数据库,根据您传入到后台的页数,显示具体的答案.模拟从后台数据库中拿出题目答案
    JSP页面
    <%@ page language="java" import="java.util.*" pageEncoding="gbk"
    isELIgnored="false"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
    <script type='text/javascript' src='dwr/util.js'></script>
    <script type='text/javascript' src='dwr/engine.js'></script>

    <script type='text/javascript' src='dwr/interface/ShowPeople.js'> </script>
    <script type="text/javascript">
      function top()
      {
        var pagenum = dwr.util.getValue("pagenum");
        alert(pagenum);
        ShowPeople.showPeople(pagenum,callback);
        
      }
      function callback(data)
      {
        var cellfunctions = [
           function(data){return data.answercontent;},
           function(data){return data.type;}
        ];
       
           dwr.util.removeAllRows("demo1");
           dwr.util.addRows("demo1",data,cellfunctions);   }
    </script>
    </head> <body>
      <input type="text" name="pagenum"/><input type="button" value="页面" onclick="top();"/>
      
      <table>
        <tr>
          <td>
            题目内容
          </td>
          <td>
            题目答案
          </td>
        </tr>
        <tbody id="demo1">
          </tbody>
        
      </table>
    </body>
    </html>
    ############################
    dwr.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
    <dwr>
    <allow>

    <create javascript="ShowPeople" creator="new">
    <param name="class" value="com.jobcn.ShowPeople"></param>

    <convert converter="bean" match="com.vo.Answers">
    <param name="include" value="answercontent,type" />
    </convert>
    </allow>
    <signatures>
    <![CDATA[ 
    import java.util.List; 
    import com.jobcn.ShowPeople; 
    import com.vo.Answers; 
    List<Answers> ShowPeople.showPeople(Integer pagenum); 
    ]]>
    </signatures></dwr>###########################
    java代码
    package com.jobcn;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;import com.vo.Answers;public class ShowPeople {

    private Connection con;
    private PreparedStatement pstm;
    private ResultSet rs;
    private String driver="com.mysql.jdbc.Driver";
    private String url="jdbc:mysql://127.0.0.1:3306/mydb";
    private String user="root";
    private String pwd="root";
    public List<Answers> showPeople(String flagnum)
    {
    System.out.println(flagnum);
    List<Answers> list = new ArrayList<Answers>();
    try {

    Class.forName(driver);
    con = DriverManager.getConnection(url,user,pwd);
    pstm = con.prepareStatement("select * from answers where questionsid="+flagnum);
    rs = pstm.executeQuery();
    while(rs.next())
    {
    Answers an = new Answers();
    an.setAnswercontent(rs.getString("answercontent"));
    an.setType(rs.getString("type"));
    list.add(an);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    for(Answers a : list)
    {
    System.out.println(a.getAnswercontent());
    }

            return list;
    }}
      

  3.   

    dwr里,自带一个char聊天室的例子
      

  4.   

    局部刷新就是用Ajax,你可以参考一下。