一个不连接数据库的聊天室的设计

1.用户登录
2.在线用户列表显示
3.用户群聊
4.单独与某一个用户聊
5.消息日志
点聊天记录要会显示在聊天内容中,希望解释详细些,代码简单些,新手。

图片图片

要用java swing

http://emmet1988.iteye.com/blog/1065382

我做了大体和你描述一样的内容,通过jsp+html实现的页面展示
登录

 <!DOCTYPE html>
<html>
  <head>
    <title>login.html</title>
    <meta charset=utf-8>
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>

  <body>
    <form name="f1" id="f1" action="/JavaWeb_01/StudentLogin" method="post">
      <table>
        <tr style="text-align: center;">
          <td colspan="2">学生登录</td>
        </tr>
        <tr>
          <td>用户名:</td>
          <td><input type="text" name="user" id="login"></td>
        </tr>
        <tr>
          <td> 密  码 : </td>
          <td><input type="password" name="password" id="password"></td>
        </tr> 
        <tr>
          <td>验证码:</td>
          <td><input type="text" name="code" id="code">
                <img alt="" src="/JavaWeb_01/LoginCode" id="img"/>
                <a href="/JavaWeb_01/html/login.html">看不清</a>
          </td>
        </tr> 
        <tr style="text-align: center;">
          <td colspan="2"><input type="submit" value=" 登 录 "></td>
        </tr>
      </table>
    </form>
    <script type="text/javascript">
        var oimg = Document.getElementById("img");
        function change(){
            oimg.src ="/JavaWeb_01/LoginCode?"+Math.random(1000000);
        }
    </script>
  </body>
</html>

注册

 <!DOCTYPE html>
<html>
  <head>
    <title>studentMessage.html</title>
    <meta charset=utf-8>
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>

  <body>
    <form name="f1" id="f1" action="/JavaWeb_01/Sumbit" method="post" >
      <table>
        <tr style="text-align: center;">
          <td colspan="2">学生账户注册</td>
        </tr>
        <tr>
          <td>姓名</td>
          <td><input type="text" name="name" ></td>
        </tr>
        <tr>
          <td>年龄</td>
          <td><input type="text" name="age" ></td>
        </tr> 
        <tr>
          <td>性别</td>
          <td>
            <select name="sex">
                <option value="男">男</option>
                <option value="女">女</option>
            </select>
          </td>
        </tr> 
        <tr>
          <td>班级</td>
          <td>
            <select name="class">
                <option value="J131">J131</option>
                <option value="J132">J132</option>
            </select>
          </td>
        </tr> 
         <tr>
          <td>密码设置</td>
          <td>
            <input type="password" name="pwd">
          </td>
        </tr> 
        <tr style="text-align: center;">
          <td colspan="2"><input type="submit" value="提交" ></td>
        </tr>
      </table>
    </form>
  </body>
</html>

SERVLET 的session实现用户在线的状态管理

package com.lovo.Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class StudentSession extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    /**
     * The doPost method of the servlet. <br>
     * @author Administrator Hem;
     * @param 实现登陆成功之后将我们所有实现登录的学生的信息展示出来,
     *             并欢迎登录者,
     *             给登陆者提供注销登录的功能;注销后进入登录页面
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();

        HttpSession session = request.getSession(false);
        ServletContext context = request.getServletContext();
        String action = request.getParameter("action");
        String name = (String) session.getAttribute("name");
        List stuList = (List) context.getAttribute("list");

        if(action == null){
            out.println("<p>欢迎"+name+"登陆</p>【<a href='/JavaWeb_01/StudentSession?action=ac'>注销</a>】</br>");
            out.println("在线人员");
            for (int i = 0; i < stuList.size(); i++) {
                out.println(stuList.get(i));
            }
        }else if(action.equals("ac")){
            session.invalidate();
            stuList.remove(name);
            context.setAttribute("list", stuList);
            response.sendRedirect("/JavaWeb_01/html/login.html");
        }
    }

} 

javaScripte 实现聊天室功能

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: #f4ffd7;
            overflow: scroll;
        }
        .na{
            width: 35px;
        }
    </style>
</head>
<body>
    <div id="div"></div>

    <img src="imgage/1.png" alt="" width="30px" id="img" index="0"/>
    <input type="text" id="inp"/>
    <input type="button" value="提交" id="btn"/>


    <script>
        var obtn = document.getElementById("btn");
        var oinp = document.getElementById("inp");
        var odiv = document.getElementById("div");
        var oimg = document.getElementById("img");
        var imgarr = ["imgage/1.png","imgage/2.png","imgage/3.png"];

        /*点击按钮,获取到文本框的值,将值加入到div里面*/
        obtn.onclick = function(){
            //获取到文本框的值
            var value = oinp.value;

            //创建一个p标签,将内容放在p标签内部,放在div里
            var op = document.createElement("p");
            var oa = document.createElement("a");
            var oimg1 = document.createElement("img");
            var index = oimg.getAttribute("index");
            var textNode = document.createTextNode(value);

            oimg1.setAttribute("src",imgarr[parseInt(index)]);
            oimg1.setAttribute("class","na");
            oa.innerHTML = "删除";
            oa.href="javascript:";
            oa.onclick = function(){
                //this表示当前的a标签对象,点击删除要删的是op
                //removeChild  找到对象删除里面的字节点
                odiv.removeChild(this.parentNode);
            }
            op.appendChild(oimg1);
            op.appendChild(textNode);
            op.appendChild(oa);

            odiv.appendChild(op);
            oinp.value = "";
        }

        oimg.onclick = function(){
            var i = this.getAttribute("index");
            i = parseInt(i);
            if(i<imgarr.length-1){
                ++i;
            }else{
                i=0;
            }
            this.setAttribute("index",i);
            this.setAttribute("src",imgarr[i]);
        }

    </script>
</body>
</html>