上一篇我主要介紹dwr的概況。這一篇我用dwr做了個可以不刷新頁面就更新的表格。

運行環境:
windows xp pro sp2
j2sdk1.2.4_03
weblogic8.1
struts1.2.4
開發工具eclipse3.0
其實dwr和struts沒有什么關系,只不過最近我們項目組在用struts作東西。我就順便用把我的程序建立在Struts上。
主要文件。
dwr.jar--dwr的類庫包
struts的類庫包,具體我不說了,這東西誰都知道。
jdts0.9.jar--數據庫SQLServer的驅動程序包。
以上jar包放在WebContent\WEB-INF\lib下
web.xml--誰都知道這東西干嘛用的吧。
struts-config.xml --這個也不說了。
dwr.xml -- dwr的配置文件
weblogic.xml -- weblogic模塊配置文件。
還有一個struts的tld就不說了
以上文件放在WebContent\WEB-INF下面。
login.jsp -- 登陸界面,這里我也用到了dwr
showtable.jsp --登陸成功會轉到這個頁面,一個ajax表格。
showtable.js -- showtable.jsp中用到的javascript
main.css -- 不說了
還有 *.gif界面要到的圖片
以上文件放在WebContent下
剩下的就是java類了。
LoginAction.java --Struts的Action,負責登陸
TableAction.java --Struts的Action,負責表格內容初始化
UserLogic.java --負責驗證用戶
TableRowConverter.java -- 繼承于dwr的BeanConverter,負責將一個對象轉成javascript能用的東西。
LoginForm.java --Struts的Form,負責登陸信息
TableModelBean.java --TableModel一部分給struts用一部分給dwr用。
TableRowBean.java 用戶存放行信息的Bean。
ModelOneDAO.java --隨便取的名字,有點惡(三聲)。負責從數據庫操作的。
這個例子還需要一個數據庫,我用的是SQLServer。
下面是建表的SQL語句。輸入數據的SQL就不貼了太長了。我會弄個源碼下載的。
/*==============================================================*/
/* DBMS name: Microsoft SQL Server 2000 */
/* Created on: 2005-8-1 13:21:33 */
/*==============================================================*/
if exists (select 1
from sysobjects
where id = object_id('AJAX_MODEL_ONE')
and type = 'U')
drop table AJAX_MODEL_ONE
go
/*==============================================================*/
/* Table: AJAX_MODEL_ONE */
/*==============================================================*/
create table AJAX_MODEL_ONE (
col1 int not null,
col2 int not null,
col3 int not null,
constraint PK_AJAX_MODEL_ONE primary key (col1)
)
go
接下來是寫業務邏輯
Login.java

/**//*
* Created on 2005-7-29
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.mstar.strutsajax.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.mstar.strutsajax.ajax.UserLogic;
import org.mstar.strutsajax.form.LoginForm;


/**//**
* @author matianyi
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/

public class LoginAction extends Action
{


/**//* (non-Javadoc)
* @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) throws Exception
{

if(validateUser((LoginForm)form))
{
return mapping.findForward("success");

} else
{
return mapping.findForward("failure");
}
}

private boolean validateUser(LoginForm form)
{
UserLogic userLogic = new UserLogic();
return userLogic.validate(form.getUsername(),form.getPassword());
}
}
UserLogic.java
package org.mstar.strutsajax.ajax;


/**//**
* @author matianyi
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/

public class UserLogic
{

public boolean validate(String username,String password)
{

if("mty".equals(username)&&"123".equals(password))
{
return true;

} else
{
return false;
}
}
}

LoginForm.java
package org.mstar.strutsajax.form;

import org.apache.struts.action.ActionForm;


/**//**
* @author matianyi
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/

public class LoginForm extends ActionForm
{
private String username;
private String password;


/**//**
* @return Returns the password.
*/

public String getPassword()
{
return password;
}

/**//**
* @param password The password to set.
*/

public void setPassword(String password)
{
this.password = password;
}

/**//**
* @return Returns the username.
*/

public String getUsername()
{
return username;
}

/**//**
* @param username The username to set.
*/

public void setUsername(String username)
{
this.username = username;
}
}

TableRowBean.java
package org.mstar.strutsajax.form;



/**//**
* @author matianyi
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/

public class TableRowBean
{
private String col1Value;
private String col2Value;
private String col3Value;


/**//**
* @return Returns the col1Value.
*/

public String getCol1Value()
{
return col1Value;
}

/**//**
* @param col1Value The col1Value to set.
*/

public void setCol1Value(String col1Value)
{
this.col1Value = col1Value;
}

/**//**
* @return Returns the col2Value.
*/

public String getCol2Value()
{
return col2Value;
}

/**//**
* @param col2Value The col2Value to set.
*/

public void setCol2Value(String col2Value)
{
this.col2Value = col2Value;
}

/**//**
* @return Returns the col3Value.
*/

public String getCol3Value()
{
return col3Value;
}

/**//**
* @param col3Value The col3Value to set.
*/

public void setCol3Value(String col3Value)
{
this.col3Value = col3Value;
}
}
上面的代碼都比較簡單,不用說大家也都知道是干什么用的。
下面就是主要的內容了。預知后事如何,且聽下回分解。