?? server.java
字號:
package com.cxz.httpchat.server;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cxz.httpchat.message.HeartBeatRequest;
import com.cxz.httpchat.message.HeartBeatResponse;
import com.cxz.httpchat.message.Message;
import com.cxz.httpchat.message.UploadRequest;
import com.cxz.httpchat.message.UploadResponse;
import com.cxz.httpchat.util.MessagePoster;
import com.cxz.httpchat.util.SelfCleaner;
import com.thoughtworks.xstream.XStream;
/**
* Servlet implementation class for Servlet: Server
*
*/
public class Server extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
private XStream xstream = new MessagePoster().xstream;
SelfCleaner map = SelfCleaner.getInstance();
public Server() {
super();
map.start();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Object req = xstream.fromXML(request.getInputStream());
Object resp = processRequest(req);
if(resp != null){
xstream.toXML(resp, response.getOutputStream());
} else {// Check the null
}
}
private Object processRequest(Object req){
if(req.getClass() == UploadRequest.class){
UploadRequest upload = (UploadRequest)req;
return processUpload(upload);
} else if (req.getClass() == HeartBeatRequest.class) {
HeartBeatRequest heartBeat = (HeartBeatRequest)req;
return processHeartBeat(heartBeat);
} else {
return null;
}
}
/**
* Just for fun
* @param upload
* @return
*/
private UploadResponse processUpload(UploadRequest upload) {
//Just for tracking the message flow
Message message = new Message();
message.setFrom(upload.getId());
message.setDate(upload.getDate());
message.setContent(upload.getContent());
map.add(upload.getTo(), message);
UploadResponse resp = null;
if(true/*upload.getId().equals(new Integer(1))&&upload.getPwd().equals("19841230")*/){
resp = new UploadResponse();
resp.setFlag(true);
} else {
resp = new UploadResponse();
resp.setFlag(false);
}
return resp;
}
/**
* Just for fun
* @param heartBeat
* @return
*/
private HeartBeatResponse processHeartBeat(HeartBeatRequest heartBeat) {
//Just for tracking the message flow
HeartBeatResponse resp = new HeartBeatResponse();
//need to do some login process
if(true/*heartBeat.getId().equals(new Integer(1))&&heartBeat.getPwd().equals("19841230")*/){
resp.setFlag(true);
List<Message> list = map.getMessage(heartBeat.getId());
resp.setMessages(list);
} else {
resp.setFlag(false);
}
return resp;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -