整个界面为chat.jsp:

如果用户没有登录,就不能进行聊天。

为将发言的句子传到页面上,要设置一个<iframe></iframe>虚拟框架,将allmessage.jsp的内容转过来

而allmessage.jsp里的内容是通过application获取发言的内容。点击“发言”,会调用chat.do的servlet,

 使用重定向可以将application传到allmessage.jsp

chat.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>直播室</title>
<style>
#main #allmsg{border:solid 1px #ccc; height:400px;}
#main #mymsg input[type=text]{width:800px; height:30px; }
#main #mymsg input[type=submit]{width:80px; height:36px;
font-size:20px; vertical-algin:middle; line-height:30px;}
</style>
<script>
function Clear(){
var frm = document.getElementById("form1");
var obj = document.getElementById("msg");
frm.submit();
obj.value = "";
return false
}
</script>
</head>
<body>
<jsp:include page = "head.jsp?col=4"></jsp:include>
<div id="main" class="layout">
<div id="allmsg">
<iframe src="allmessage.jsp" width="1000" height="400" name="f1" frameborder="0"></iframe>
</div>
<%
String user = (String)session.getAttribute("username");
if(user!=null){
%>
<div id="mymsg">
<form id="form1" action="chat.do" method="post" target="f1" onsubmit="return Clear();">
<input type="text" id="msg" name="message">
<input type="submit" value="发言">
</form>
</div>
<%
}
%>
</div>
<%@ include file="foot.jsp" %>
</body>
</html>

ChatServlet doGet

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//获取表单数据
request.setCharacterEncoding("utf-8");
String msg = request.getParameter("message");
System.out.println(msg); //获取session
HttpSession session = request.getSession();
String user = (String)session.getAttribute("username"); //加入application
ServletContext application = this.getServletContext();
String allmsg = (String)application.getAttribute("chat");
if(allmsg == null) {
allmsg = "["+Tools.getTime()+"]"+ user + "说:" + msg + "<br>";
}else {
allmsg += "["+Tools.getTime()+"]"+ user + "说:" + msg + "<br>";
}
application.setAttribute("chat", allmsg);
System.out.println(allmsg); // 重定向
response.sendRedirect("allmessage.jsp");
}

获取时间用这个

Web jsp开发学习——网上直播聊天室的简单开发的更多相关文章

  1. Socket.io文字直播聊天室的简单代码

    直接上代码吧,被注释掉的主要是调试代码,和技术选型的测试代码 var app = require('express')(); var server = require('http').Server(a ...

  2. XMPPFrameWork IOS 开发(六)聊天室

    原始地址:XMPPFrameWork IOS 开发(六)聊天室 聊天室 //初始化聊天室 XMPPJID *roomJID = [XMPPJID jidWithString:ROOM_JID]; xm ...

  3. 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室

    原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  4. 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室

    原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  5. 基于Websocket开发的仿微信聊天室

    一.运行环境及涉及技术:----------------------------------* Visual Studio 2019* SQL SERVER 2008 R2* .Net FrameWo ...

  6. java 开发 websocket 网页端聊天室

    博客地址:https://ainyi.com/67 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. ...

  7. Android之聊天室设计与开发

    我们要设计和实现一个有聊天室功能的APP,需要服务器不断读取来自客户端的信息,并即时地将信息发送给每个连接到本服务器上的客户端,每个客户端可以向服务器发送消息,并不断地接收来自服务器的消息,并将消息显 ...

  8. 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识

    驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...

  9. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

随机推荐

  1. flask配置文件的几种方法

    配置文件的参数 flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: { 'DEBUG': get_debug_flag(default=False), 是 ...

  2. 若依项目分模块集成uflo2

    关于若依分模块创建项目可参考:https://www.cnblogs.com/conswin/p/9766186.html 了解uflo2,uflo2是一套由BSTEK自主研发的基于Java的工作流引 ...

  3. Windows查看Java内存使用情况

    Windows查看Java程序运行时内存使用情况 1.在cmd命令窗口输入 jconsole  ,弹出Java监视和管理控制台窗口 2.连接本地进程,首先需要知道想查看的进程ID ( pid ) 在c ...

  4. MySQL的BLOB类型(解决mysql不支持mb4编码的时候存储emoji表情问题)

    今天在存储emoji表情的时候,发现无法存储,mysql版本太低也没办法使用uft8mb4格式编码,只能将数据字段设置为blob BLOB是一个二进制大对象,可以容纳可变数量的数据.有4种BLOB类型 ...

  5. JS设计模式之工厂模式

    1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式.我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂.工厂模式根据抽象程度的不同可以分为: ...

  6. 移动rem自适应

    /** * rem计算方式:设计图尺寸px / 100 = 实际rem 例: 100px = 1rem */!function (window) { /* 设计图文档宽度 */ var docWidt ...

  7. tensorboard使用方法

    http://blog.csdn.net/u010099080/article/details/77426577

  8. effective java——31用实例域代替序数

    1,永远不要根据枚举的序数导出与它关联的值,而是要将他保存在一个实例域中.(ordinal()) public enum Ensemble { SOLO, DUET, TRIO, QUARTET, Q ...

  9. 高级数据类型---元祖[tuple]

    一.Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改,让列表不可以被修改,以保护数据安全 元组 表示多个元素组成的序列 元组 在 Python 开发中,有特定的应用场景 用于存储 一串 ...

  10. Cordova使用极光推送的方法

    1.在极光推送官网注册账号.应用,注意注册的包名要和app的包名一致 2.添加插件 cordova plugin add jpush-phonegap-plugin --variable APP_KE ...