struts 2.0 + 原始 AJAX + XML

struts 2.0 + 原始 AJAX + XML
实现逻辑:

     实现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 问题!!

你可能感兴趣的:(struts 2.0 + 原始 AJAX + XML)