您的位置:首页 > Web前端 > JavaScript

ajax聊天室(JSP版)4

2007-09-17 23:24 260 查看
Servlet类真的没什么好说的。

先写个BaseServlet基类,以后的几个Servlet类就直接继承它,而不是HttpServlet。

[align=left]package org.jvk.chatroom.servlet;[/align]
[align=left] [/align]
[align=left]import java.io.IOException;[/align]
[align=left]import javax.servlet.ServletException;[/align]
[align=left]import javax.servlet.http.HttpServlet;[/align]
[align=left]import javax.servlet.http.HttpServletRequest;[/align]
[align=left]import javax.servlet.http.HttpServletResponse;[/align]
[align=left]import org.apache.commons.logging.Log;[/align]
[align=left]import org.apache.commons.logging.LogFactory;[/align]
[align=left] [/align]
[align=left]public abstract class BaseServlet extends HttpServlet {[/align]
[align=left] [/align]
[align=left]    public final static String USER = "user";[/align]
[align=left] [/align]
[align=left]    private static final longserialVersionUID = 520131401655L;[/align]
[align=left] [/align]
[align=left]    protected Log log = LogFactory.getLog(this.getClass());[/align]
[align=left] [/align]
[align=left]    @Override[/align]
[align=left]    public void doGet(HttpServletRequest request, HttpServletResponse response)[/align]
[align=left]           throws ServletException, IOException {[/align]
[align=left]       execute(request, response);[/align]
[align=left]    }[/align]
[align=left] [/align]
[align=left]    @Override[/align]
[align=left]    public void doPost(HttpServletRequest request, HttpServletResponse response)[/align]
[align=left]           throws ServletException, IOException {[/align]
[align=left]       execute(request, response);[/align]
[align=left]    }[/align]
[align=left] [/align]
[align=left]    /**[/align]
[align=left]     *由子类实现,处理GET和POST请求[/align]
[align=left]     *[/align]
[align=left]     *@paramrequest[/align]
[align=left]     *@paramresponse[/align]
[align=left]     *@throwsServletException[/align]
[align=left]     *@throwsIOException[/align]
[align=left]     */[/align]
[align=left]    publicab stract void execute(HttpServletRequest request,[/align]
[align=left]           HttpServletResponse response) throws ServletException, IOException;[/align]
[align=left] [/align]
[align=left]    protected final String getValue(HttpServletRequest request, String param) {[/align]
[align=left]       String str = request.getParameter(param);[/align]
[align=left]       if (str == null)[/align]
[align=left]           return"";[/align]
[align=left]       return str;[/align]
[align=left]    }[/align]
[align=left] [/align]
[align=left]    private static byte[] lock = new byte[0];[/align]
[align=left] [/align]
[align=left]    protected final void setNoCache(HttpServletRequest request,[/align]
[align=left]           HttpServletResponse response) {[/align]
[align=left]       synchronized (lock) {[/align]
[align=left]           if (request.getProtocol().compareTo("HTTP/1.0") == 0)[/align]
[align=left]              response.setHeader("Prama", "no-cache");[/align]
[align=left]           else if (request.getProtocol().compareTo("HTTP/1.1") == 0)[/align]
[align=left]              response.setHeader("Cache-Control", "no-cache");[/align]
[align=left]           response.setDateHeader("Expires", 0);[/align]
[align=left]       }[/align]
[align=left]    }[/align]
[align=left]}[/align]

 
[align=left]package org.jvk.chatroom.servlet;[/align]
[align=left] [/align]
[align=left]import java.io.IOException;[/align]
[align=left]import java.util.Collection;[/align]
[align=left] [/align]
[align=left]import javax.servlet.ServletException;[/align]
[align=left]import javax.servlet.http.HttpServletRequest;[/align]
[align=left]import javax.servlet.http.HttpServletResponse;[/align]
[align=left]import javax.servlet.http.HttpSession;[/align]
[align=left] [/align]
[align=left]import org.jvk.chatroom.bean.Room;[/align]
[align=left]import org.jvk.chatroom.bean.User;[/align]
[align=left]import org.jvk.chatroom.service.ChatroomManager;[/align]
[align=left] [/align]
[align=left]public class Login extends BaseServlet {[/align]
[align=left] [/align]
[align=left]    private static final longserialVersionUID = 5201314016000L;[/align]
[align=left] [/align]
[align=left]    // 设置session生命周期为1分钟[/align]
[align=left]    private static intsessionTimeOut = 60 * 1;[/align]
[align=left] [/align]
[align=left]    private static final String ROOM_PAGE = "pages/chatroom.jsp";[/align]
[align=left] [/align]
[align=left]    private static final String LOGIN_PAGE = "pages/login.jsp";[/align]
[align=left] [/align]
[align=left]    private staticf inal String this_PAGE = "login";[/align]
[align=left] [/align]
[align=left]    private static final String ERROR_PAGE = "pages/error.jsp";[/align]
[align=left] [/align]
[align=left]    public void execute(HttpServletRequest request, HttpServletResponse response)[/align]
[align=left]           throws ServletException, IOException {[/align]
[align=left]       String userName = getValue(request, "userName");[/align]
[align=left]       String roomName = getValue(request, "roomName");[/align]
[align=left]       if (userName.length() < 1 || roomName.length() < 1) {[/align]
[align=left]           Collection<Room> rooms = ChatroomManager.newInstance().getRooms()[/align]
[align=left]                  .values();[/align]
[align=left]           request.setAttribute("rooms", rooms);[/align]
[align=left]           request.getRequestDispatcher(LOGIN_PAGE).forward(request, response);[/align]
[align=left]       } else if (ChatroomManager.newInstance().exists(roomName, userName)) {[/align]
[align=left]           log.info("该用户已存在,请使用其他字符");[/align]
[align=left]           request.setAttribute("returnURL", this_PAGE);[/align]
[align=left]           request.setAttribute("errorMessage", "该用户已存在,请使用其他字符");[/align]
[align=left]           request.getRequestDispatcher(ERROR_PAGE).forward(request, response);[/align]
[align=left]       } else {[/align]
[align=left]           HttpSession session = request.getSession(true);[/align]
[align=left]           User user = new User(userName, ChatroomManager.newInstance()[/align]
[align=left]                  .getRoom(roomName));[/align]
[align=left]           session.setMaxInactiveInterval(sessionTimeOut);[/align]
[align=left]           user.setLastGetMessage(510);[/align]
[align=left]           user.setLastGetUserList(520);[/align]
[align=left]           session.setAttribute(USER, user);[/align]
[align=left]           session.setAttribute("room", ChatroomManager.newInstance().getRoom([/align]
[align=left]                  roomName));[/align]
[align=left]           response.sendRedirect(ROOM_PAGE);[/align]
[align=left]       }[/align]
[align=left]    }[/align]
[align=left] [/align]
[align=left]}[/align]

[align=left][/align]
[align=left][/align]
[align=left]package org.jvk.chatroom.servlet;[/align]
[align=left] [/align]
[align=left]import java.io.IOException;[/align]
[align=left]import javax.servlet.ServletException;[/align]
[align=left]import javax.servlet.http.HttpServletRequest;[/align]
[align=left]import javax.servlet.http.HttpServletResponse;[/align]
[align=left]import javax.servlet.http.HttpSession;[/align]
[align=left] [/align]
[align=left]import org.jvk.chatroom.bean.Message;[/align]
[align=left]import org.jvk.chatroom.bean.User;[/align]
[align=left]import org.jvk.chatroom.service.ChatroomManager;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]public class SendMessage extends BaseServlet {[/align]
[align=left]    private static final longserialVersionUID = 520131401655L;[/align]
[align=left]    @Override[/align]
[align=left]    public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException,[/align]
[align=left]           IOException {[/align]
[align=left]       HttpSession session = request.getSession(false);[/align]
[align=left]       if (session == null){[/align]
[align=left]           response.getWriter().write("");[/align]
[align=left]           return;[/align]
[align=left]       }[/align]
[align=left]       synchronized (session) {[/align]
[align=left]           User user = (User) session.getAttribute(USER);[/align]
[align=left]           Message message = new Message();[/align]
[align=left]           String to = request.getParameter("to");[/align]
[align=left]           if ("all".equals(to))[/align]
[align=left]              to = null;[/align]
[align=left]           String content = request.getParameter("content");[/align]
[align=left]           message.setContent(content);[/align]
[align=left]           message.setFrom(user.getName());[/align]
[align=left]           message.setTo(to);[/align]
[align=left]           message.setDate(System.currentTimeMillis());[/align]
[align=left]           ChatroomManager.newInstance().addMessageToRoom(message, user.getRoom());[/align]
[align=left]           //假装响应下[/align]
[align=left]           response.getWriter().write("");[/align]
[align=left]       }[/align]
[align=left]    }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left][/align]
[align=left]  [/align]
[align=left]package org.jvk.chatroom.servlet;[/align]
[align=left] [/align]
[align=left]import java.io.IOException;[/align]
[align=left]import java.io.PrintWriter;[/align]
[align=left]import java.text.SimpleDateFormat;[/align]
[align=left]import java.util.Date;[/align]
[align=left]import java.util.List;[/align]
[align=left] [/align]
[align=left]import javax.servlet.ServletException;[/align]
[align=left]import javax.servlet.http.HttpServletRequest;[/align]
[align=left]import javax.servlet.http.HttpServletResponse;[/align]
[align=left]import javax.servlet.http.HttpSession;[/align]
[align=left] [/align]
[align=left]import org.jvk.chatroom.bean.Message;[/align]
[align=left]import org.jvk.chatroom.bean.User;[/align]
[align=left]import org.jvk.chatroom.service.ChatroomManager;[/align]
[align=left] [/align]
[align=left]public class GetMessage extends BaseServlet {[/align]
[align=left] [/align]
[align=left]    @Override[/align]
[align=left]    public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException,[/align]
[align=left]           IOException {[/align]
[align=left]       HttpSession session = request.getSession(false);[/align]
[align=left]       if (session == null)[/align]
[align=left]           return;[/align]
[align=left]       synchronized (session) {[/align]
[align=left]           User user = (User) session.getAttribute(USER);[/align]
[align=left]           List<Message> messages = ChatroomManager.newInstance().getMessagesFromRoom(user);[/align]
[align=left]           StringBuffer xml = new StringBuffer(4096);[/align]
[align=left]           xml.append("<messages>");[/align]
[align=left]           for (Message message : messages) {[/align]
[align=left]              xml.append("<message>");[/align]
[align=left]              xml.append("<from>" + message.getFrom() + "</from>");[/align]
[align=left]              xml.append("<date>" + new SimpleDateFormat().format(new Date(message.getDate())) + "</date>");[/align]
[align=left]              xml.append("<content>" + message.getContent() + "</content>");[/align]
[align=left]              xml.append("</message>");[/align]
[align=left]           }[/align]
[align=left]           xml.append("</messages>");[/align]
[align=left]           System.out.println("xml="+xml);[/align]
[align=left]           setNoCache(request, response);[/align]
[align=left]           response.setContentType("text/xml; charset=UTF-8");[/align]
[align=left]           PrintWriter out = response.getWriter();[/align]
[align=left]           out.print(xml);[/align]
[align=left]           out.flush();[/align]
[align=left]       }[/align]
[align=left] [/align]
[align=left]    }[/align]
[align=left] [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left][/align]
 
[align=left]package org.jvk.chatroom.servlet;[/align]
[align=left] [/align]
[align=left]import java.io.IOException;[/align]
[align=left]import java.io.PrintWriter;[/align]
[align=left]import java.util.List;[/align]
[align=left] [/align]
[align=left]import javax.servlet.ServletException;[/align]
[align=left]import javax.servlet.http.HttpServletRequest;[/align]
[align=left]import javax.servlet.http.HttpServletResponse;[/align]
[align=left]import javax.servlet.http.HttpSession;[/align]
[align=left] [/align]
[align=left]import org.jvk.chatroom.bean.User;[/align]
[align=left]import org.jvk.chatroom.service.ChatroomManager;[/align]
[align=left] [/align]
[align=left]public class GetUserList extends BaseServlet {[/align]
[align=left] [/align]
[align=left]    @Override[/align]
[align=left]    public void execute(HttpServletRequest request, HttpServletResponse response)[/align]
[align=left]           throws ServletException, IOException {[/align]
[align=left]       HttpSession session = request.getSession(false);[/align]
[align=left]       if (session == null)[/align]
[align=left]           return;[/align]
[align=left]       synchronized (session) {[/align]
[align=left]           User user = (User) session.getAttribute(USER);[/align]
[align=left]           ChatroomManager dao = ChatroomManager.newInstance();[/align]
[align=left]           List<User> list = dao.getUsersFromRoom(user);[/align]
[align=left]           [/align]
[align=left]           StringBuffer buffer = new StringBuffer(1024);[/align]
[align=left]           buffer.append("<users>");[/align]
[align=left]           for (User tempUser : list) {[/align]
[align=left]              buffer.append("<user name=/"" + tempUser.getName() + "/"/>");[/align]
[align=left]           }[/align]
[align=left]           buffer.append("</users>");[/align]
[align=left]           log.info("users=/n" + buffer);[/align]
[align=left]           setNoCache(request,response);[/align]
[align=left]           response.setContentType("text/xml; charset=UTF-8");[/align]
[align=left]           PrintWriter out = response.getWriter();[/align]
[align=left]           out.print(buffer);[/align]
[align=left]           out.flush();[/align]
[align=left]       }[/align]
[align=left] [/align]
[align=left]    }[/align]
[align=left]}[/align]

[align=left]没有了,就这几个类。 [/align]
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息