上次因为觉的DWR好用,就写了个简易的聊天室,分别用DWR和prototype
来实现,因为为了方便移植,数据存放在XML文档中,读取和写入XML文档
的代码见下面........................
java bean:
package
com.lan.Forum;
public class Forumbean ... {
private String username="";
private String content="";
private String datetime=null;
public String getContent() ...{
return content;
}
public void setContent(String content) ...{
this.content = content;
}
public String getDatetime() ...{
return datetime;
}
public void setDatetime(String datetime) ...{
this.datetime = datetime;
}
public String getUsername() ...{
return username;
}
public void setUsername(String username) ...{
this.username = username;
}
}
public class Forumbean ... {
private String username="";
private String content="";
private String datetime=null;
public String getContent() ...{
return content;
}
public void setContent(String content) ...{
this.content = content;
}
public String getDatetime() ...{
return datetime;
}
public void setDatetime(String datetime) ...{
this.datetime = datetime;
}
public String getUsername() ...{
return username;
}
public void setUsername(String username) ...{
this.username = username;
}
}
package
com.lan.Forum;
import java.io.File;
import java.io.FileInputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Forum ... {
DocumentBuilderFactory dbf=null;
DocumentBuilder db=null;
Document doc=null;
String file="d://Forum.xml";//XML文档的位置
public Forum()...{
dbf=DocumentBuilderFactory.newInstance();
try ...{
db=dbf.newDocumentBuilder();
doc=db.parse(new FileInputStream(file));
} catch (Exception e) ...{
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public void writexml(String username,String content)...{//写进XML
Element forums;
Element forum;
Element name;
Element con;
Element date;
forums=(Element) doc.getElementsByTagName("Forums").item(0);//获得根接点
forum=doc.createElement("Forum");//创建一个子接点元素
name=doc.createElement("UserName");//创建一个元素
name.appendChild(doc.createTextNode(username));//给元素赋值
con=doc.createElement("Content");
con.appendChild(doc.createTextNode(content));
date=doc.createElement("DateTime");
date.appendChild(doc.createTextNode(new Date().toString()));
forum.appendChild(name);//把元素附加给子接点
forum.appendChild(con);
forum.appendChild(date);
forums.appendChild(forum);//把字节点附加给根接点
TransformerFactory tf=TransformerFactory.newInstance();
try ...{
Transformer trans=tf.newTransformer();
trans.transform(new DOMSource(doc),new StreamResult(new File(file)));
//经过转换工厂类来实现流的转换...
} catch (Exception e) ...{
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public ArrayList<Forumbean> getxml()...{//从XML文档读值
ArrayList<Forumbean> list=new ArrayList<Forumbean>();
NodeList n1=doc.getElementsByTagName("Forum");//获得字节点
for(int i=0;i<n1.getLength();i++)...{
Element n=(Element) n1.item(i);
NodeList u=n.getElementsByTagName("UserName");//获得元素集合
NodeList c=n.getElementsByTagName("Content");
NodeList d=n.getElementsByTagName("DateTime");
String username=u.item(0).getFirstChild().getNodeValue();
String content=c.item(0).getFirstChild().getNodeValue();
String datetime=d.item(0).getFirstChild().getNodeValue();
Forumbean bean=new Forumbean();
bean.setUsername(username);
bean.setContent(content);
bean.setDatetime(datetime);
list.add(bean);
}
return list;
}
}
import java.io.File;
import java.io.FileInputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Forum ... {
DocumentBuilderFactory dbf=null;
DocumentBuilder db=null;
Document doc=null;
String file="d://Forum.xml";//XML文档的位置
public Forum()...{
dbf=DocumentBuilderFactory.newInstance();
try ...{
db=dbf.newDocumentBuilder();
doc=db.parse(new FileInputStream(file));
} catch (Exception e) ...{
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public void writexml(String username,String content)...{//写进XML
Element forums;
Element forum;
Element name;
Element con;
Element date;
forums=(Element) doc.getElementsByTagName("Forums").item(0);//获得根接点
forum=doc.createElement("Forum");//创建一个子接点元素
name=doc.createElement("UserName");//创建一个元素
name.appendChild(doc.createTextNode(username));//给元素赋值
con=doc.createElement("Content");
con.appendChild(doc.createTextNode(content));
date=doc.createElement("DateTime");
date.appendChild(doc.createTextNode(new Date().toString()));
forum.appendChild(name);//把元素附加给子接点
forum.appendChild(con);
forum.appendChild(date);
forums.appendChild(forum);//把字节点附加给根接点
TransformerFactory tf=TransformerFactory.newInstance();
try ...{
Transformer trans=tf.newTransformer();
trans.transform(new DOMSource(doc),new StreamResult(new File(file)));
//经过转换工厂类来实现流的转换...
} catch (Exception e) ...{
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public ArrayList<Forumbean> getxml()...{//从XML文档读值
ArrayList<Forumbean> list=new ArrayList<Forumbean>();
NodeList n1=doc.getElementsByTagName("Forum");//获得字节点
for(int i=0;i<n1.getLength();i++)...{
Element n=(Element) n1.item(i);
NodeList u=n.getElementsByTagName("UserName");//获得元素集合
NodeList c=n.getElementsByTagName("Content");
NodeList d=n.getElementsByTagName("DateTime");
String username=u.item(0).getFirstChild().getNodeValue();
String content=c.item(0).getFirstChild().getNodeValue();
String datetime=d.item(0).getFirstChild().getNodeValue();
Forumbean bean=new Forumbean();
bean.setUsername(username);
bean.setContent(content);
bean.setDatetime(datetime);
list.add(bean);
}
return list;
}
}
XML文档
<?
xml version="1.0" encoding="UTF-8" standalone="no"
?>
< Forums >
< Forum >
< UserName > lanzhengwu </ UserName >
< Content > Hello world </ Content >
< DateTime > 2007-11-18 </ DateTime >
</ Forum >
</ Forums >
< Forums >
< Forum >
< UserName > lanzhengwu </ UserName >
< Content > Hello world </ Content >
< DateTime > 2007-11-18 </ DateTime >
</ Forum >
</ Forums >