package com.demo.service;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Properties;
public class ChatService {
// 使用单例模式来设计CharService
private static ChatService cs;
// 使用Properties对象保存系统的所有用户
private Properties userList;
// 使用LinkedList对象保存聊天信息
private LinkedList<String> chatMsg;
// 构造器私有
private ChatService() {
}
// 通过静态方法返回唯一的ChatService对象
public static ChatService instance() {
if (cs == null) {
cs = new ChatService();
}
return cs;
}
// 验证用户登陆
public boolean validLogin(String user, String pass)
throws IOException {
String loadPass = loadUser().getProperty(user);
if (loadPass != null && loadPass.equals(pass)) {
return true;
}
return false;
}
//用户注册
public boolean addUser(String name,String pass)
throws Exception{
//当userList为null,初始化userList对象
if(userList==null){
userList=loadUser();
}
//如果用户名存在
if(userList.containsKey(name)){
throw new Exception("用户名已存在!");
}
userList.setProperty(name, pass);
saveUserList();
return true;
}
//获取系统中所用的聊天信息
public String getMsg(){
//如果ChatMsg对象为null,表面不曾开始聊天
if(chatMsg==null){
chatMsg=new LinkedList<String>();
return "";
}
StringBuilder resultStr=new StringBuilder("");
//将chatMsg中所有聊天信息拼接起来
for(String tmp:chatMsg){
resultStr.append(tmp+"\n");
}
return resultStr.toString();
}
//用户发言,添加聊天信息
public void addMsg(String user,String msg){
//如果chatMsg对象为null,初始化chatMsg对象
if(chatMsg==null){
chatMsg=new LinkedList<String>();
}
//chatMsg超过40条时,将前面的聊天信息删除
if(chatMsg.size()>40){
chatMsg.removeFirst();
}
chatMsg.add(user+"说:"+msg);
}
/* 下面是系统的工具方法 */
// 读取系统用户信息
private Properties loadUser() throws IOException {
if (userList == null) {
File f = new File("userFile.properties");
if (!f.exists()) {
f.createNewFile();
}
userList = new Properties();
userList.load(new FileInputStream(f));
}
return userList;
}
// 保存系统所用用户
private boolean saveUserList() throws IOException {
if (userList == null) {
return false;
}
// 将userList信息保存到Properties文件中
userList.store(new FileOutputStream
("userFile.properties"),
"Users Info List");
return true;
}
}
package com.demo.service;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ChatServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("GBK");
String msg=request.getParameter("chatMsg");
if(msg!=null&!msg.equals("")){
String user=(String)request.getSession(true)
.getAttribute("user");
ChatService.instance().addMsg(user, msg);
}
request.setAttribute("msg",
ChatService.instance().getMsg());
forward("/chat.jsp",request,response);
// super.service(request, response);
}
private void forward(String url, HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
RequestDispatcher rd=request.getRequestDispatcher(url);
rd.forward(request, response);
}
}
<%@ page contentType="text/html;charset=GBK" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>聊天页面</title>
</head>
<body>
<table width="780" border="1" align="center">
<tr>
<td>
<p align="center">
<textarea name="textarea" cols="100" rows="30"
readonly="readonly">${requestScope.msg}</textarea>
</p>
<form name="form1" method="post" action="chat.do">
<div align="center">
<input name="chatMsg" type="text" size="90"
onclick="document.form1.submit";/>
<input type="submit" name="Submit" value="发送" />
</div>
</form>
</td>
</tr>
</table>
<script>
var input = document.getElementById("chatMsg");
input.focus();
function check() {
if (input.value == null || input.value == "") {
alert("请输入聊天信息,不要发送空信息!");
return false;
}
}
function submitChat() {
document.getElementById("form1").onsubmit();
}
document.getElementById("form1").onsubmit = check;
</script>
</body>
</html>
分享到:
相关推荐
【文件名称列表】:"JAVA+JSP程序系统的JSP聊天室",这表明聊天室系统包含用Java语言编写的后端逻辑和JSP页面,以及可能的JavaScript或CSS资源用于前端展示。开发过程中,开发者可能会有以下文件结构: - JSP文件:...
这个源码可以作为学习JSP和Web开发的实践案例,帮助理解如何在实际项目中运用这些技术,以及如何实现网络聊天室的基本架构和功能。同时,对于想要提升自己在Java Web开发方面能力的人来说,分析和研究这个源码会是一...
【标题】"jsp制作的java聊天室程序"揭示了这个项目是...通过学习和理解这个项目,开发者可以深入理解如何使用Java和JSP创建一个多用户交互的聊天室应用,这对于提升Web开发技能和理解分布式系统的设计原则非常有帮助。
【标题】"bbs聊天室(jsp)"是一个基于JavaServer Pages(JSP)技术构建的在线论坛或讨论区系统。JSP是Java平台上的一个重要Web开发技术,它允许开发者将静态HTML与动态Java代码结合,以创建交互式网页应用。 【描述...
【基于jsp以及ajax基础的网络聊天室】是一个典型的Web应用程序,它利用了Java技术栈,特别是JavaServer Pages(JSP)和Asynchronous JavaScript and XML(AJAX)来构建一个实时的、交互式的在线聊天平台。...
【JSP课程设计聊天室源代码chartRoom】是一款基于Java Web技术实现的在线聊天室应用,主要用于学习和实践JSP(JavaServer Pages)技术。这个项目对于初学者来说,是理解JSP动态网页开发、Servlet处理请求以及AJAX...
【标题】"jsp聊天小项目"是一个基于JSP技术实现的简单在线聊天室应用程序,它集成了数据库交互功能,主要用于展示基础的Web开发知识。这个项目对于初学者来说是一个很好的学习资源,因为它的设计和实现都集中在了...
它表明你将找到一个完整的、用JSP编写的聊天室应用实例,你可以通过查看源代码、运行程序来学习和理解JSP在构建交互式Web应用程序时的具体实现。 【标签】:“java”意味着这个项目基于Java编程语言。JSP虽然在前端...
在聊天室系统中,Servlet可能负责接收和处理用户的输入,而JSP则用于生成和显示聊天界面。 2. **WebSocket**:为了实现即时通讯,Web聊天室通常使用WebSocket协议。WebSocket提供双向通信,允许服务器主动向客户端...
"JAVA项目:javaWeb聊天室" 是一个基于JAVA技术开发的Web应用程序,主要用于实现在线聊天的功能。这个项目可能包含了服务器端的Java代码、前端的HTML、CSS和JavaScript,以及可能的数据库连接和配置文件,用于创建一...
这个项目实例——"struts聊天室 邮件系统 后台管理的struts版本",显然是一个集成多种功能的Web应用,旨在帮助开发者更深入地理解和学习Struts框架。 首先,让我们详细讨论Struts框架的核心概念和工作原理: 1. **...
【聊天室程序】是一个基于JSP(JavaServer Pages)和MySQL数据库开发的在线实时交流平台。JSP是一种服务器端的动态网页技术,它允许开发者在HTML页面中嵌入Java代码,使得网页能够处理动态内容。MySQL则是一款广泛...
Struts是Java Web开发中的一款经典MVC框架,它极大地简化了基于JSP和Servlet的应用程序构建过程。在这个"6个struts小案例"中,我们可以深入学习和理解STRUTS的基础知识,包括过滤器、COS上传组件、逻辑分页等核心...
通过使用WebSocket,开发者可以创建实时应用,如在线游戏、股票交易系统、聊天室等,这些应用需要服务器能够即时响应客户端的变化。 在Apache Tomcat 7.0.47中,WebSocket的实现包括以下核心组件: 1. **...
这使得Web应用可以实现游戏、聊天室、股票报价等实时功能,无需依赖Flash或其他插件。 5. **性能优化**: 针对64位Windows平台,Tomcat 7.0.56进行了优化,提高了内存管理效率和多线程处理能力,尤其对于大规模...
8. **实战项目**:通过开发聊天室系统、坦克大战游戏、贪吃蛇游戏来巩固基础知识。 **第二阶段:JAVA WEB技术** 1. **数据库技术**:学习Oracle、MySQL和SQLServer的基础管理,包括SQL语言、PL/SQL、触发器和存储...
它还包含了一个内置的WebSocket API,用于实现双向通信,这在实时应用如聊天室或在线游戏中非常有用。 **安装与配置** 安装Apache Tomcat 7.0.59相对简单,首先需要从Apache官方网站下载对应的发行版。解压后,将其...
Apache Tomcat 7.0是Java Web应用服务器,主要用于运行基于Java Servlet和JavaServer Pages (JSP)的应用程序。这个"apeche-tomcate-7.0"压缩包包含了最新的Tomcat 7.0版本,这是一款开源软件,提供免费下载和使用。...
这种技术在构建实时应用程序,如聊天室、实时股票更新或在线游戏等场景中非常有用。以下是关于 Pushlet 实现服务器端向客户端推送消息的详细知识点: 1. **实现方式**: - **定时推送**:通过配置文件设定定时任务...