服務器端:
package com.lqq.service;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.List;
import com.lqq.vo.QueryType;
import com.lqq.vo.Student;
public class DealClientRequest implements Runnable?
{
private Socket s = null;
private ParserXML p = new ParserXML(new File("students.xml"));
public DealClientRequest(Socket s)
{
this.s = s;
}
@Override
public void run()?
{
if(s != null)
{
try?
{
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
QueryType qt = (QueryType) ois.readObject();
if(qt.getQueryType() == 1)//單查
{
System.out.println("執行單查,查詢的名字= " + qt.getQueryName());
Student stu = p.getStudent(qt.getQueryName());
oos.writeObject(stu);
}else if(qt.getQueryType() == 2)//全查
{
System.out.println("執行全查");
List<Student> list = p.getAllStudent();
for(int i = 0; i < list.size(); i++)
{
Student stu = list.get(i);
oos.writeObject(stu);
}
}
} catch (IOException e)
{
e.printStackTrace();
} catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
}
*************************
package com.lqq.service;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class MainService
{
private ServerSocket ss;
public void startService() throws IOException
{
ss = new ServerSocket(10086);
while(true)
{
System.out.println("服務器在10086等待...");
Socket s = ss.accept();
new Thread(new DealClientRequest(s)).start();
System.out.println("啟動處理線程成功");
}
}
}
******************
package com.lqq.service;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import com.lqq.vo.Student;
public class ParserXML?
{
private DocumentBuilderFactory bdf;
private DocumentBuilder db;
private Document dom;
public ParserXML(File file)
{
bdf = DocumentBuilderFactory.newInstance();
try?
{
db = bdf.newDocumentBuilder();
dom = db.parse(file);
} catch (Exception e)?
{
e.printStackTrace();
}
}
public List<Student> getAllStudent()
{
List<Student> stu = new ArrayList<Student>();
Element root = dom.getDocumentElement();
NodeList list = root.getElementsByTagName("stu");
for(int i = 0; i < list.getLength(); i++)
{
Element e = (Element) list.item(i);
Student st = new Student();
NodeList names = e.getElementsByTagName("name");
if(names.getLength() == 1)
{
Element name = (Element)names.item(0);
Text text = (Text) name.getFirstChild();
st.setStuName(text.getNodeValue());
}
NodeList sexs = e.getElementsByTagName("sex");
if(sexs.getLength() == 1)
{
Element name = (Element)sexs.item(0);
Text text = (Text) name.getFirstChild();
st.setStuGender(text.getNodeValue());
}
NodeList ages = e.getElementsByTagName("age");
if(ages.getLength() == 1)
{
Element name = (Element)ages.item(0);
Text text = (Text) name.getFirstChild();
st.setStuAge(Integer.parseInt(text.getNodeValue()));
}
NodeList classs = e.getElementsByTagName("class");
if(classs.getLength() == 1)
{
Element name = (Element)classs.item(0);
Text text = (Text) name.getFirstChild();
st.setStuClassName(text.getNodeValue());
}
stu.add(st);
}
return stu;
}
public Student getStudent(String stuName)
{
List<Student> list = this.getAllStudent();
for(int i = 0; i < list.size(); i++)
{
Student st = list.get(i);
if(st.getStuName().equals(stuName))
return st;
}
return null;
}
}
*************
package com.lqq.service;
import java.io.IOException;
public class Service?
{
public static void main(String[] args)?
{
MainService ms = new MainService();
try?
{
ms.startService();
} catch (IOException e)?
{
e.printStackTrace();
}
}
}
*******
package com.lqq.vo;
import java.io.Serializable;
public class QueryType implements Serializable
{
private static final long serialVersionUID = 8713870836629046060L;
/**
* 1 單查
* 2 全查
*/
private byte queryType;
private String queryName;
public byte getQueryType()
{
return queryType;
}
public void setQueryType(byte queryType)?
{
this.queryType = queryType;
}
public String getQueryName()?
{
return queryName;
}
public void setQueryName(String string)?
{
this.queryName = string;
}
}
************
package com.lqq.vo;
import java.io.Serializable;
public class Student implements Serializable
{
private static final long serialVersionUID = -6087251613589160139L;
private String stuName;
private int stuAge;
private String stuGender;
private String stuClassName;
@Override
public String toString()?
{
return "姓名: " + stuName + "\t性別: " + stuGender?
+ "\t年齡: " + stuAge + "\t班級: " + stuClassName;
}
public String getStuName()?
{
return stuName;
}
public void setStuName(String stuName)?
{
this.stuName = stuName;
}
public int getStuAge()?
{
return stuAge;
}
public void setStuAge(int stuAge)?
{
this.stuAge = stuAge;
}
public String getStuGender()?
{
return stuGender;
}
public void setStuGender(String stuGender)?
{
this.stuGender = stuGender;
}
public String getStuClassName()?
{
return stuClassName;
}
public void setStuClassName(String stuClassName)?
{
this.stuClassName = stuClassName;
}
}
*************
<?xml version="1.0" encoding="UTF-8"?>
<stus> <stu> <name>令狐沖</name><age>12</age>
<class>華山派</class>
<sex>男</sex>
</stu>
<stu> <name>東方不敗</name><age>22</age>
<class>日月神教</class>
<sex>女</sex>
</stu>
<stu> <name>嶽不群</name><age>23</age>
<class>華山派</class>
<sex>妖</sex>
</stu>
<stu> <name>風清揚</name><age>88</age>
<class>華山派</class>
<sex>男</sex>
</stu>
</stus>&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
客戶端:
package com.lqq.c;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import com.lqq.vo.QueryType;
import com.lqq.vo.Student;
public class AllQuery implements Runnable
{
private Socket s;
public AllQuery(QueryType qt)
{
try?
{
s = new Socket("localhost", 10086);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject(qt);
} catch (UnknownHostException e)?
{
e.printStackTrace();
} catch (IOException e)?
{
e.printStackTrace();
}
}
@Override
public void run()?
{
if(s != null)
{
try?
{
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Student stu = (Student) ois.readObject();
Client c = new Client();
while(stu != null)
{
c.showStudentInfo(stu);
stu = (Student) ois.readObject();
}
} catch (IOException e)?
{
e.printStackTrace();
} catch (ClassNotFoundException e)?
{
e.printStackTrace();
}
}
}
}
**************
package com.lqq.c;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;
import com.lqq.vo.QueryType;
import com.lqq.vo.Student;
public class Client?
{
public void showStudentInfo(Student stu)
{
if(stu != null)
{
System.out.println(stu);
}
}
public void showMenu()
{
System.out.println("\t\t菜 ?單");
System.out.println("\t1.單 查");
System.out.println("\t2.全 查");
System.out.println("\t0.退 出");
}
public String getUserInput()
{
Scanner scan = new Scanner(System.in);
System.out.println("請輸入:");
return scan.next();
}
public void requestQuery(String userSelect)
{
if(userSelect != null)
{
if("1".equals(userSelect.trim()))
{
QueryType qt = new QueryType();
qt.setQueryType((byte)1);
Scanner san = new Scanner(System.in);
System.out.println("請輸入查詢的學生名字:");
String queryStuName = san.next();
qt.setQueryName(queryStuName);
this.executeQeury(qt);
}else if("2".equals(userSelect.trim()))
{
QueryType qt = new QueryType();
qt.setQueryType((byte)2);
this.executeQeury(qt);
}else if("0".equals(userSelect.trim()))
{
System.exit(0);
}
else
{
System.out.println("輸入有誤");
}
}
}
public void executeQeury(QueryType qt)
{
try?
{
Socket s = new Socket("localhost", 10086);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject(qt);
System.out.println("請求發送完畢");
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
if(qt.getQueryType() == 1)
{
Student stu = (Student) ois.readObject();
showStudentInfo(stu);
}else if(qt.getQueryType() == 2)
{
new Thread(new AllQuery(qt)).start();
}
} catch (IOException e)?
{
e.printStackTrace();
} catch (ClassNotFoundException e)?
{
e.printStackTrace();
}
}
public static void main(String[] args)?
{
Client client = new Client();
while(true)
{
client.showMenu();
client.requestQuery(client.getUserInput());
}
}
}
**********
package com.lqq.vo;
import java.io.Serializable;
public class QueryType implements Serializable
{
private static final long serialVersionUID = 8713870836629046060L;
/**
* 1 單查
* 2 全查
*/
private byte queryType;
private String queryName;
public byte getQueryType()
{
return queryType;
}
public void setQueryType(byte queryType)?
{
this.queryType = queryType;
}
public String getQueryName()?
{
return queryName;
}
public void setQueryName(String string)?
{
this.queryName = string;
}
}
**********
package com.lqq.vo;
import java.io.Serializable;
public class Student implements Serializable
{
private static final long serialVersionUID = -6087251613589160139L;
private String stuName;
private int stuAge;
private String stuGender;
private String stuClassName;
@Override
public String toString()?
{
return "姓名: " + stuName + "\t性別: " + stuGender?
+ "\t年齡: " + stuAge + "\t班級: " + stuClassName;
}
public String getStuName()?
{
return stuName;
}
public void setStuName(String stuName)?
{
this.stuName = stuName;
}
public int getStuAge()?
{
return stuAge;
}
public void setStuAge(int stuAge)?
{
this.stuAge = stuAge;
}
public String getStuGender()?
{
return stuGender;
}
public void setStuGender(String stuGender)?
{
this.stuGender = stuGender;
}
public String getStuClassName()?
{
return stuClassName;
}
public void setStuClassName(String stuClassName)?
{
this.stuClassName = stuClassName;
}
}
時間太緊,沒有完善代碼,基本功能實現了,代碼沒有優化,妳自己再改改,希望可以幫到妳