package org.jvk.chatroom.servlet;
import java.io.IOException;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jvk.chatroom.bean.Room;
import org.jvk.chatroom.bean.User;
import org.jvk.chatroom.service.ChatroomManager;
public class Login extends BaseServlet {
private static final longserialVersionUID = 5201314016000L;
// 設置session生命週期爲1分鐘
private static intsessionTimeOut = 60 * 1;
private static final String ROOM_PAGE = "pages/chatroom.jsp";
private static final String LOGIN_PAGE = "pages/login.jsp";
private staticf inal String this_PAGE = "login";
private static final String ERROR_PAGE = "pages/error.jsp";
public void execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName = getValue(request, "userName");
String roomName = getValue(request, "roomName");
if (userName.length() < 1 || roomName.length() < 1) {
Collection<Room> rooms = ChatroomManager.newInstance().getRooms()
.values();
request.setAttribute("rooms", rooms);
request.getRequestDispatcher(LOGIN_PAGE).forward(request, response);
} else if (ChatroomManager.newInstance().exists(roomName, userName)) {
log.info("該用戶已存在,請使用其他字符");
request.setAttribute("returnURL", this_PAGE);
request.setAttribute("errorMessage", "該用戶已存在,請使用其他字符");
request.getRequestDispatcher(ERROR_PAGE).forward(request, response);
} else {
HttpSession session = request.getSession(true);
User user = new User(userName, ChatroomManager.newInstance()
.getRoom(roomName));
session.setMaxInactiveInterval(sessionTimeOut);
user.setLastGetMessage(510);
user.setLastGetUserList(520);
session.setAttribute(USER, user);
session.setAttribute("room", ChatroomManager.newInstance().getRoom(
roomName));
response.sendRedirect(ROOM_PAGE);
}
}
}
package org.jvk.chatroom.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jvk.chatroom.bean.Message;
import org.jvk.chatroom.bean.User;
import org.jvk.chatroom.service.ChatroomManager;
public class SendMessage extends BaseServlet {
private static final longserialVersionUID = 520131401655L;
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
HttpSession session = request.getSession(false);
if (session == null){
response.getWriter().write("");
return;
}
synchronized (session) {
User user = (User) session.getAttribute(USER);
Message message = new Message();
String to = request.getParameter("to");
if ("all".equals(to))
to = null;
String content = request.getParameter("content");
message.setContent(content);
message.setFrom(user.getName());
message.setTo(to);
message.setDate(System.currentTimeMillis());
ChatroomManager.newInstance().addMessageToRoom(message, user.getRoom());
//假裝響應下
response.getWriter().write("");
}
}
}
package org.jvk.chatroom.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jvk.chatroom.bean.Message;
import org.jvk.chatroom.bean.User;
import org.jvk.chatroom.service.ChatroomManager;
public class GetMessage extends BaseServlet {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
HttpSession session = request.getSession(false);
if (session == null)
return;
synchronized (session) {
User user = (User) session.getAttribute(USER);
List<Message> messages = ChatroomManager.newInstance().getMessagesFromRoom(user);
StringBuffer xml = new StringBuffer(4096);
xml.append("<messages>");
for (Message message : messages) {
xml.append("<message>");
xml.append("<from>" + message.getFrom() + "</from>");
xml.append("<date>" + new SimpleDateFormat().format(new Date(message.getDate())) + "</date>");
xml.append("<content>" + message.getContent() + "</content>");
xml.append("</message>");
}
xml.append("</messages>");
System.out.println("xml="+xml);
setNoCache(request, response);
response.setContentType("text/xml; charset=UTF-8");
PrintWriter out = response.getWriter();
out.print(xml);
out.flush();
}
}
}
package org.jvk.chatroom.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jvk.chatroom.bean.User;
import org.jvk.chatroom.service.ChatroomManager;
public class GetUserList extends BaseServlet {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);
if (session == null)
return;
synchronized (session) {
User user = (User) session.getAttribute(USER);
ChatroomManager dao = ChatroomManager.newInstance();
List<User> list = dao.getUsersFromRoom(user);
StringBuffer buffer = new StringBuffer(1024);
buffer.append("<users>");
for (User tempUser : list) {
buffer.append("<user name=/"" + tempUser.getName() + "/"/>");
}
buffer.append("</users>");
log.info("users=/n" + buffer);
setNoCache(request,response);
response.setContentType("text/xml; charset=UTF-8");
PrintWriter out = response.getWriter();
out.print(buffer);
out.flush();
}
}
}
沒有了,就這幾個類。