⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java

📁 一个以tomcat作为服务器的C/S架构的聊天系统
💻 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 + -