第三十九节(java-开发聊天工具)

Login.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!doctype html>
<html>
    <head>
        <!--声明当前页面的编码集:charset=gbk,gb2312(中文编码),utf-8国际编码-->
        <meta http-equiv="Content-Type" content="text/html; charset=gbk">
        <!--当前页面的三要素-->
        <title>多人聊天室 - 登录</title>
        <meta name="Keywords" content="关键词,关键词">
        <meta name="description" content="">

        <!--css,js-->
        <style type="text/css">
            *{margin:0;padding:0;}
            .text{width:200px;height:26px;line-height:26px;}
        </style>

    </head>
<body>

    <h1>聊天室 - 登录</h1>

    <form action="loadMes.jsp?action=login" method="post">
        用户名:<input type="text" name="username" class="text"/> <br />
        密  码:<input type="password" name="password"  class="text"/><br /><br />
        <input type="submit" value="登  录"/>
    </form>

</body>
</html>

////////////////////////////////////////////////////////////
loadMes.jsp文件里:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<jsp:useBean id="msgs" class="java.util.HashMap" scope="application"/>

<%
    request.setCharacterEncoding("gbk");
    String action = request.getParameter("action");
    // 登录页面
    if("login".equals(action)){
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 存储username到session对象里边
        session.setAttribute("username", username);
        String msg = "欢迎<span style=‘color:red;font-size:16px;font-weight:bold;‘>" + username + "</span> 加入聊天室! <br /><br />";
        //System.out.println("开始:"+msg);
        msgs.put(username,msg);
        response.sendRedirect("main.jsp");
    }
    // 消息展示页面
    if("show".equals(action)){
        // 展示聊天记录
        String username = (String)session.getAttribute("username");
        String msg = (String)msgs.get(username);
        //System.out.println("展示聊天记录:"+msg);
        out.println("loadData.innerHTML=\""+msg+"\";");
    }

    // 消息输入
    if("write".equals(action)){
        String newMsg = request.getParameter("msg");
        String userMsg = session.getAttribute("username") + " : " + newMsg;
        System.out.println("发送新消息:"+userMsg);
        // 发送消息时,将所有的聊天室里边聊天记录进行叠加
        Iterator it = msgs.keySet().iterator();
        String username = null;
        String msg = null;
        while(it.hasNext()){
            username = (String)it.next(); // 用户名
            msg = (String)msgs.get(username); // 获取全局变量中的消息
            msg = msg +"<br /><br />"+ userMsg;
            msgs.put(username, msg);
        }
        response.sendRedirect("writerMes.jsp");
    }
%>

/////////////////////////////////////////////////////////////////////
main.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!doctype html>
<html>
    <head>
        <!--声明当前页面的编码集:charset=gbk,gb2312(中文编码),utf-8国际编码-->
        <meta http-equiv="Content-Type" content="text/html; charset=gbk">
        <!--当前页面的三要素-->
        <title>多人聊天室 - 聊天室主窗体</title>
        <meta name="Keywords" content="关键词,关键词">
        <meta name="description" content="">

        <!--css,js-->
        <style type="text/css">
            *{margin:0;padding:0;}

        </style>

    </head>

    <frameset rows="*,100" border="0" >
        <frame src="show.jsp"></frame>
        <frame src="writerMes.jsp"></frame>
    </frameset>
</html>

//////////////////////////////////////////////////////////////////
show.jsp文件里:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!doctype html>
<html>
    <head>
        <!--声明当前页面的编码集:charset=gbk,gb2312(中文编码),utf-8国际编码-->
        <meta http-equiv="Content-Type" content="text/html; charset=gbk">
        <!--当前页面的三要素-->
        <title>多人聊天室 - 消息展示页面</title>
        <meta name="Keywords" content="关键词,关键词">
        <meta name="description" content="">
        <meta http-equiv="refresh" content="1"/>

        <!--css,js-->
        <style type="text/css">
            *{margin:0;padding:0;}
            body{background:#CC9999;}
        </style>

    <script type="text/javascript">
        function LoadMsg(){
            var url = "loadMes.jsp?action=show";
            loadTime.src = url;
        }    

    </script>
    <script type="text/javascript" id="loadTime"></script>

    </head>

<body onLoad="javascript:LoadMsg();">

    <span id="loadData">正在加载数据,请稍后喔 ..........</span>

</body>
</html>

///////////////////////////////////////////////////////////////////
writeMesjsp文件里:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!doctype html>
<html>
    <head>
        <!--声明当前页面的编码集:charset=gbk,gb2312(中文编码),utf-8国际编码-->
        <meta http-equiv="Content-Type" content="text/html; charset=gbk">
        <!--当前页面的三要素-->
        <title>多人聊天室 - 消息的输入页面</title>
        <meta name="Keywords" content="关键词,关键词">
        <meta name="description" content="">

        <!--css,js-->
        <style type="text/css">
            *{margin:0;padding:0;}
            body{background:#CC99FF;}
            .msg{height:26px;line-height:26px;}
            .sub{width:100px;height:30px;}

        </style>

    </head>
<body>

    <form action="loadMes.jsp?action=write" method="post">
        <%=session.getAttribute("username") %>:<input type="text" name="msg" size="60" class="msg" autofocus x-webkit-speech/>
        <input type="submit" value="发   送" class="sub"/>
    </form>

</body>
</html>

///////////////////////////////////////////////////////////////////
index.jsp文件里:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘index.jsp‘ starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>

  <body>
    This is my JSP page. <br>
  </body>
</html>
时间: 2024-10-25 14:28:59

第三十九节(java-开发聊天工具)的相关文章

centos shell编程5LANMP一键安装脚本 第三十九节课

centos shell编程5LANMP一键安装脚本  第三十九节课 上半节课 下半节课 f

第二百三十九节,Bootstrap路径分页标签和徽章组件

Bootstrap路径分页标签和徽章组件 学习要点: 1.路径组件 2.分页组件 3.标签组件 4.徽章组件 本节课我们主要学习一下 Bootstrap 的四个组件功能:路径组件.分页组件.标签组件 和徽章组件. 一.路径组件 路径组件也叫做面包屑导航. 面包屑导航 breadcrumb样式class类,写在<ul>或<ol>里,设置面包屑导航(Bootstrap) <ol class="breadcrumb"> <li><a hr

I学霸官方免费教程三十九 :Java基础教程之线程

线程 线程和进程 进程:系统运行程序的最小单位:一个进程最少有一个线程线程:程序执行任务的最小单位:线程与线程之间并行一个进程至少有一个线程,在java中这个线程称为主线程,由系统创建,运行main方法.这样只有一个线程的程序也被称为单线程程序.主线程从程序入口main方法开始执行代码,执行任意方法中的代码都是按照自上而下的顺序执行的,如果只有一个主线程,又想实现在线听音乐这个功能的话,就很难实现.因为主线程必须先去下载音乐:下载完成后,在执行播放音乐:这显然不能满足当今人们对在线听音乐的需求.

第一百三十九节,JavaScript,封装库--CSS选择器

JavaScript,封装库--修改元素选择器 就是将构造库函数修改成元素选择器,像css那样,输入#xxx .xxx xxx  (获取指定id下的指定class下的指定标签元素) 修改后的基础库 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象,使其每次调用都是独立的对象 * $()创建库对象,有一个可选参数,参数有两种方式,1是传入的this,2是传入的字符串 * 可选参数说明: * 传入的

第三十九节,python内置全局变量

---恢复内容开始--- vars()查看内置全局变量 以字典方式返回内置全局变量 #!/usr/bin/env python # -*- coding:utf8 -*- print(vars()) #输出 # {'__builtins__': <module 'builtins' (built-in)>, '__spec__': None, '__package__': None, '__doc__': None, '__name__': '__main__', '__cached__':

第三十九节 层级定位

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style type="text/css"> 7 8 .con{ 9 width: 400px; 10 height: 400px; 11 border: 1px s

第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装

第三百七十九节,Django+Xadmin打造上线标准的在线教育平台-xadmin的安装 xadmin介绍 xadmin是基于Django的admin开发的更完善的后台管理系统

“全栈2019”Java第三十九章:构造函数、构造方法、构造器

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第三十九章:构造函数.构造方法.构造器 下一章 "全栈2019"Java第四十章:this关键字 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&q

QT开发(三十九)——GraphicsView框架

QT开发(三十九)--GraphicsView框架 本文主要翻译自QT 5.6.2GraphicsView官方文档 一.GraphicsView框架简介 QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,Graphics View框架实现了模型-视图结构的图形管理,能对大量图元进行管理,支持碰撞检测,坐标变换和图元组等多种方便的功能. GraphicsView框架结构主要包含三个主要的类QGraphicsScene(场景).QGraphicsVi