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

📄 srv_jchat.java

📁 一个简单的Servlet聊天程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;import org.ansurgen.jchat.Channel;import org.ansurgen.jchat.User;import org.ansurgen.jchat.Message;import org.ansurgen.jchat.PrivateMessage;/**<pre>Srv_JChat.javaSee the README.txt file that come with this distribution forinstallation instructions@author ttimoteo@ansurgen.org@version 1.0 09-NOV-1998@see org.ansurgen.jchat.Channel@see org.ansurgen.jchat.User@see org.ansurgen.jchat.Message@see org.ansurgen.jchat.PrivateMessage</pre>*/public class Srv_JChat extends HttpServlet {   private final boolean ALLOW_HTML = false;   private final int MAX_USERS_PER_CHANNEL        = 15;   private final int MAX_MESSAGES_PER_CHANNEL     = 20;   private final int MAX_PVT_MESSAGES_PER_CHANNEL = 10;   private final int MAX_LATENT_TIME              = 5;//...in minutes   private final String DEFAULT_URL = "http://www.ansurgen.org/servlets/Srv_JChat";   private final String ABOUT_URL   = "http://www.ansurgen.org/board/ttimoteo/jchat/about_jchat.html";   private String DEFAULT_LOGIN_MESSAGE  = "<b>HAS JOINED"; //username will be prepended...   private String DEFAULT_LOGOUT_MESSAGE = "<b>HAS LEFT"; //username will be prepended...   private int user_count;   private int message_count;   private Date date;   //to add a channel, add it here   private String[] channels_array = {"ANSURGEN","Java","Perl","ColdFusion","Merlot","Pacifico","Judo","Paratrooper","BigLlama","FunkBucket","BBShelly_1","BBShelly_2"};   private Hashtable channels_hash;   public void init(ServletConfig config) throws ServletException{      user_count    = 0;      message_count = 0;      channels_hash = new Hashtable();      date = new Date();      for (int i=0; i < channels_array.length; i++) {         Channel channel = new Channel(channels_array[i],                                       MAX_MESSAGES_PER_CHANNEL,                                       MAX_USERS_PER_CHANNEL,                                       MAX_PVT_MESSAGES_PER_CHANNEL,                                       MAX_LATENT_TIME);         channels_hash.put(channels_array[i], channel);      }   }//init()   public void doGet(HttpServletRequest req,                     HttpServletResponse res)                     throws ServletException, IOException{      res.setContentType("text/html");      ServletOutputStream out = res.getOutputStream();      out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">");      out.println("<HTML>");      out.println("<HEAD>");      out.println("<TITLE>JChat Login</TITLE>");      out.println("<script language=Javascript>");      out.println("  function validate(){");      out.println("     if(validateUserName() && validateChannel() && validateEmail()){");      out.println("        return true;");      out.println("     }");      out.println("     return false;");      out.println("  }");      out.println("  function validateUserName(){");      out.println("     user = document.jchat.str_user_name.value;");      out.println("     if(user.length == 0){");      out.println("        alert('You must specify a UserName!');");      out.println("        document.jchat.str_user_name.focus();");      out.println("        return false;");      out.println("     }else if(user.indexOf(\" \") > 0){");      out.println("        alert('UserName cannot contain white space!');");      out.println("        document.jchat.str_user_name.focus();");      out.println("        return false;");      out.println("     }");      out.println("     return true;");      out.println("  }");      out.println("  function validateEmail(){");      out.println("     email = document.jchat.str_email.value;");      out.println("     if(email.length > 0){");      out.println("        at  = email.indexOf(\"@\");");      out.println("        dot = email.lastIndexOf(\".\");");      out.println("        n   = email.length;");      out.println("        if(at < 1 || at >= dot || (dot+2) >= n){");      out.println("           alert('Invalid email!  Use a valid address or leave it blank.');");      out.println("           document.jchat.str_email.focus();");      out.println("           return false;");      out.println("        }");      out.println("     }");      out.println("     return true;");      out.println("  }");      out.println("  function validateChannel(){");      out.println("     var n = document.jchat.str_channel.length;");      out.println("     for (i=0; i<n; i++) {");      out.println("        if (document.jchat.str_channel.options[i].selected) {");      out.println("           if (document.jchat.str_channel.options[i].value == \"FULL\") {");      out.println("              alert('Selected channel is FULL! Try again later');");      out.println("              return false;");      out.println("           }");      out.println("        }");      out.println("     }");      out.println("     return true;");      out.println("  }");      out.println("</script>");      out.println("</HEAD>");      out.println("<BODY bgcolor=white>");      out.println("<form name=\"jchat\" onSubmit=\"return validate()\" method=post action=\"Srv_JChat\">");      out.println("<table border=0 cellspacing=0 cellpadding=0 width=100% height=100%>");      out.println("<tr>");      out.println("<td align=center valign=middle>");      out.println("<img src=\"http://www.ansurgen.org/board/ttimoteo/images/header.gif\" border=0>");      out.println("<table border=0 cellspacing=0 cellpadding=3 width=300 bgcolor=brown>");      out.println("<tr>");      out.println("<th><font face=\"tahoma,verdana,arial\" size=-1 color=white>JChat Login</th>");      out.println("</tr>");      out.println("<tr><td align=center valign=middle><table border=0 cellspacing=0 cellpadding=3 bgcolor=silver width=100%>");      out.println("<tr>");      out.println("<td align=right><font face=\"tahoma,verdana,arial\" size=-1><b>UserName</td>");      out.println("<td><input type=text name=str_user_name size=20 maxlength=20 onChange=\"return validateUserName()\"></td>");      out.println("</tr>");      out.println("<tr>");      out.println("<td align=right><font face=\"tahoma,verdana,arial\" size=-1><b>Email</td>");      out.println("<td><input type=text name=str_email size=20 maxlength=30 onChange=\"return validateEmail()\"></td>");      out.println("</tr>");      out.println("<tr>");      out.println("<td align=right><font face=\"tahoma,verdana,arial\" size=-1><b>Channel</td>");      out.println("<td><select name=str_channel onChange=\"return validateChannel()\">");      Enumeration enum = channels_hash.elements();      int open_channels = 0;      while (enum.hasMoreElements()) {         Channel channel = (Channel)enum.nextElement();         if (!channel.hasMaxUsers()) {            out.println("<option value=\""+channel.getName()+"\">" + channel.getName() + " [" + channel.size() + " users]");            open_channels++;         }else{            out.println("<option value=\"FULL\">" + channel.getName() + " [FULL]");         }      }            if (open_channels == 0) {         out.println("<option value=\"FULL\"> ALL CHANNELS FULL");      }      out.println("</select>");      out.println("</td>");      out.println("</tr>");      out.println("<tr>");      out.println("<td align=center colspan=2><input type=submit name=\"btn_login\" value=\"   Login   \"></td>");      out.println("</tr>");      out.println("<tr>");      out.println("<td colspan=2><font face=\"tahoma,verdana,arial\" size=-2>");      out.println(getSettings());      out.println("</td>");      out.println("</tr></table></td>");      out.println("</tr>");      out.println("</table>");      out.println("</td>");      out.println("</tr>");      out.println("</table>");      out.println("</BODY>");      out.println("</HTML>");   }   public String getSettings(){      String info = "<a href=\""+ABOUT_URL+"\" target=\"_blank\">@about JChat</a><br>"                     +"@author: <a href=\"mailto:ttimoteo@ansurgen.org\">ttimoteo@ansurgen.org</a><br>"                     +"@version: 1.0[alpha] 07NOV1998<br>"                     +"@servlet_started: "+date+"<br>"                     +"@max_users_per_channel_setting: " + MAX_USERS_PER_CHANNEL + "<br>"                     +"@max_messages_per_channel_setting: " + MAX_MESSAGES_PER_CHANNEL + "<br>"                     +"@max_private_messages_per_channel_setting: " + MAX_PVT_MESSAGES_PER_CHANNEL + "<br>"                     +"@max_latent_time: " + MAX_LATENT_TIME + "<br>"                     +"@allow_html: " + ALLOW_HTML;      return info;   }   public void doPost(HttpServletRequest req,                     HttpServletResponse res)                     throws ServletException, IOException{      res.setContentType("text/html");      ServletOutputStream out = res.getOutputStream();            HttpSession session = req.getSession(true);      //parameters...      String btn_login        = req.getParameter("btn_login");      String btn_logout       = req.getParameter("btn_logout");      String btn_post         = req.getParameter("btn_post");      String str_user_name    = req.getParameter("str_user_name");      String str_email        = req.getParameter("str_email");      String str_channel      = req.getParameter("str_channel");      String str_message      = req.getParameter("str_message");      String str_recipient_id = req.getParameter("str_recipient_id");            //System.out.println("+@params:");      //System.out.println("  +btn_login: " + btn_login);      //System.out.println("  +btn_logout: " + btn_logout);      //System.out.println("  +btn_post: " + btn_post);      //System.out.println("  +str_user_name: " + str_user_name);      //System.out.println("  +str_email: " + str_email);      //System.out.println("  +str_channel: " + str_channel);      //System.out.println("  +str_message: " + str_message);      //System.out.println("  +str_recipient_id: " + str_recipient_id);            User user = null;            if (btn_login != null && str_user_name != null && !str_user_name.equals("")) {                  user = (User)session.getValue(str_user_name+":"+str_channel);         if (user != null) {            errorPage(out, "The user_name <i><b>" + str_user_name + "</b></i> is already in use.  Pick another name and try again.");            return;         }         user_count++;         user = new User(user_count,                         str_user_name,                         str_email,                         str_channel,                         MAX_LATENT_TIME);                  session.putValue(str_user_name+":"+str_channel, user);                  try{            login(user);         }catch(Exception e){            e.printStackTrace();            errorPage(out, "Srv_JChat.doPost() -> error during login operation");            return;         }               }else{         user = (User)session.getValue(str_user_name+":"+str_channel);         if (!user.refresh()) {            session.removeValue(str_user_name+":"+str_channel);            errorPage(out,"Session expired... you must login again");            return;         }      }      if (user == null) {         errorPage(out,"Could not find User object in session [Srv_JChat.doPost()] - Your session may have expired (Max Allowable Latent Time: "+MAX_LATENT_TIME+")");         return;      }      if (btn_logout != null) {         try{            logout(user);            session.removeValue(str_user_name+":"+str_channel);            doGet(req, res);            return;         }catch(Exception e){            e.printStackTrace();            errorPage(out, "Srv_JChat.doPost() -> error during logout operation");            return;         }      }      try{         Channel channel = getChannel(user.getChannelName());         if (btn_post != null && (str_message != null && !str_message.equals("")) ||              (str_message != null && !str_message.equals(""))) {            if (!ALLOW_HTML) {               str_message = replaceHtml(str_message);            }                        if (!str_recipient_id.equals("ALL USERS")) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -