posts - 8,  comments - 78,  trackbacks - 0
实现逻辑:

     实现user对象的select、delete,动态的将数据更新到表格中。
     select: 服务端返回xml数据,在页面进行数据显示。
     delete :服务端将删除信息以xml格式返回,包含删除状态和删除信息。

实现技术:
         struts 2.0 + AJAX + XML

主要文件:
         index.jsp      user.java(数据模型)       UserAction.java(业务逻辑)   struts.xml(struts2.0配置文件)

index.jsp页面:

<%@ page language="java" pageEncoding="UTF-8"%>
<%
    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>test javascript</title>
    
</head>
    
<script defer="defer">
    
        var xmlHttp;       
//XMLHTTP对象
        var deleteRowId;   //删除数据所在的行

        
//url:访问的URL  afterMothod:请求返回时所调用的方法(回调方法)
        function showHint(url,afterMothod) {
            
try{
                xmlHttp 
= GetXmlHttpObject(afterMothod);
                xmlHttp.open(
"GET",url,false);
                xmlHttp.send(
null);
            }
catch(e){
                alert(e);
            }

        }

        
        
//创建XMLHTTP对象
        function GetXmlHttpObject(handler) {
            var objXmlHttp 
= null;
            
if (navigator.userAgent.indexOf("Opera">= 0{
                alert(
"This example doesn't work in Opera");
                
return;
            }

            
if (navigator.userAgent.indexOf("MSIE">= 0{
                var strName 
= "Msxml2.XMLHTTP";
                
if (navigator.appVersion.indexOf("MSIE 5.5">= 0{
                    strName 
= "Microsoft.XMLHTTP";
                }

                
try {
                    objXmlHttp 
= new ActiveXObject(strName);
                    objXmlHttp.onreadystatechange 
= handler;
                    
return objXmlHttp;
                }

                
catch (e) {
                    alert(
"Error. Scripting for ActiveX might be disabled");
                    
return;
                }

            }

            
if (navigator.userAgent.indexOf("Mozilla">= 0{
                objXmlHttp 
= new XMLHttpRequest();
                objXmlHttp.onload 
= handler;
                objXmlHttp.onerror 
= handler;
                
return objXmlHttp;
            }

        }

        
//刷新数据
        function flush() {
            
try{
                
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"{
                    var xmlDoc 
= new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.async
=false;
                    xmlDoc.loadXML(xmlHttp.responseText)  
                
                    
//返回错误代码
                    
//var error = xmlDoc.parseError.errorCode;
                    
//alert(error?xmlDoc.parseError.reason:"XML格式正确");
                    
                    var users
=xmlDoc.getElementsByTagName("user");
                    clearTable(userTable);
                    
for(var i=0;i<users.length;i++){
                        var userRow
=userTable.insertRow();
                        var rowId
=userRow.rowIndex;
                        
                        var user
=users[i];
                        var userId
=userRow.insertCell();
                        userId.innerHTML 
= user.getAttribute("userId");
                        var userName
=userRow.insertCell();
                        userName.innerHTML
=user.getAttribute("userName");
                        var userTel
=userRow.insertCell();
                        userTel.innerHTML
=user.getAttribute("userTel");
                        var userOp
=userRow.insertCell();
                        var deleteUrl
="user!delete.action?user.userId="+user.getAttribute("userId");
                        userOp.innerHTML
="<a href=javascript:deleteRowId="+rowId+";showHint('"+deleteUrl+"',drop);>删除</a>";
                    }

                }

            }
catch(e){
                alert(e.description);
            }

        }

        
//删除数据
        function drop(){
            
            
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"{
                var xmlDoc 
= new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async
=false;
                xmlDoc.loadXML(xmlHttp.responseText);
                var msg
=xmlDoc.getElementsByTagName("msg")[0];
                
                
if(msg.getAttribute("isSuccess")=="false"){
                    alert(msg.getAttribute(
"msgString"));
                }
else{
                    userTable.deleteRow(deleteRowId);
                    alert(msg.getAttribute(
"msgString"));
                }

            }

        }

        
        
//清空表数据
        function clearTable(opTable){
            
            var size
=opTable.rows.length;
            
for(var i=2;i<size;i++){
                opTable.deleteRow(
2);
            }

            
        }

            
    
</script>
    
<body>
        
<center>
            
<h3>
                用户列表
            
</h3>
            
<br>
            
<table id="userTable" title="用户列表" width="50%">
                
<tbody>
                    
<tr bgcolor="#54821f">
                        
<td width="15%">
                            ID
                        
</td>
                        
<td width="15%">
                            姓名
                        
</td>
                        
<td width="20%">
                            电话
                        
</td>
                        
<td width="5%">
                            操作
                        
</td>
                    
<tr>
                
</tbody>
            
</table>
            
<br>
            
<br>
            
<br>
            
<button onclick="showHint('user!list.action',flush);">
                刷新
            
</button>
        
</center>
    
</body>
</html>


user.java


package com.wen.test;

public class User {

    
private String userId;

    
private String userName;

    
private String userTel;

    
public String getUserId() {
        
return userId;
    }


    
public void setUserId(String userId) {
        
this.userId = userId;
    }


    
public String getUserName() {
        
return userName;
    }


    
public void setUserName(String userName) {
        
this.userName = userName;
    }


    
public String getUserTel() {
        
return userTel;
    }


    
public void setUserTel(String userTel) {
        
this.userTel = userTel;
    }

}


UserAction.java


package com.wen.test;

import java.util.List;
import java.util.Vector;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings(
"serial")
public class UserAction extends ActionSupport{

    
private User user;
    
private List<User> userList;
    
private List<String> msgList;
    
    
public String flush(){
        
return SUCCESS;
    }

    
    
public String delete(){
        
        
int id=Integer.parseInt(user.getUserId());
        msgList
=new Vector<String>();
        
if(id<0||id>3){
            msgList.add(
"false");
            msgList.add(
"删除ID为:"+id+"用户失败!!");
        }
else{
            
//做删除操作
            msgList.add("true");
            msgList.add(
"删除ID为:"+id+"用户成功!!");
        }

        
return SUCCESS;
    }

    
    
public String list(){
        
        userList
=new Vector<User>();
        
        user
=new User();
        user.setUserId(
"0");
        user.setUserName(
"wen");
        user.setUserTel(
"029-82507114");
        userList.add(user);
        
        user
=new User();
        user.setUserId(
"1");
        user.setUserName(
"peng");
        user.setUserTel(
"029-34650060");
        userList.add(user);
        
        user
=new User();
        user.setUserId(
"2");
        user.setUserName(
"tao");
        user.setUserTel(
"13570854091");
        userList.add(user);
        
        user
=new User();
        user.setUserId(
"2");
        user.setUserName(
"tao");
        user.setUserTel(
"13570854091");
        userList.add(user);
        
        user
=new User();
        user.setUserId(
"2");
        user.setUserName(
"tao");
        user.setUserTel(
"13570854091");
        userList.add(user);
        
        user
=new User();
        user.setUserId(
"2");
        user.setUserName(
"tao");
        user.setUserTel(
"13570854091");
        userList.add(user);
        
        user
=new User();
        user.setUserId(
"2");
        user.setUserName(
"tao");
        user.setUserTel(
"13570854091");
        userList.add(user);
        
        
return SUCCESS;
    }

    
    
public User getUser() {
        
return user;
    }

    
public void setUser(User user) {
        
this.user = user;
    }

    
public List getMsgList() {
        
return msgList;
    }

    
public List getUserList() {
        
return userList;
    }

}



struts.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
>
<struts>
    
<constant name="struts.enable.DynamicMethodInvocation"
        value
="true" />
    
<constant name="struts.devMode" value="true" />

    
<package name="users" extends="struts-default">

        
<result-types>
            
<result-type name="userInfo" class="com.wen.test.User" />
            
<result-type name="userList" class="java.util.List" />
            
<result-type name="msgList" class="java.util.List" />
        
</result-types>

        
<action name="user" class="com.wen.test.UserAction">
            
<result>/result.jsp</result>
        
</action>
    
</package>
</struts>


END

    希望对初学着有所帮助,欢迎大家一起探讨java 问题!!
posted on 2007-08-15 13:05 月月鸟 阅读(864) 评论(1)  编辑  收藏 所属分类: ajax

FeedBack:
# re: struts 2.0 + 原始 AJAX + XML
2007-08-15 17:18 | 编程、设计是职业更是爱好
不错,大道至简。对于WEB开发,滥用的Tag是灾难。  回复  更多评论
  



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-08-15 17:17 编辑过
 
 
相关链接:
网站导航:
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(2)

随笔分类(8)