`

基于Servlet和Properties的JSP聊天室案例

 
阅读更多
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>
分享到:
评论

相关推荐

    基于JSP applet的聊天室

    【文件名称列表】:"JAVA+JSP程序系统的JSP聊天室",这表明聊天室系统包含用Java语言编写的后端逻辑和JSP页面,以及可能的JavaScript或CSS资源用于前端展示。开发过程中,开发者可能会有以下文件结构: - JSP文件:...

    jsp做的简易聊天室源码

    这个源码可以作为学习JSP和Web开发的实践案例,帮助理解如何在实际项目中运用这些技术,以及如何实现网络聊天室的基本架构和功能。同时,对于想要提升自己在Java Web开发方面能力的人来说,分析和研究这个源码会是一...

    jsp制作的java聊天室程序

    【标题】"jsp制作的java聊天室程序"揭示了这个项目是...通过学习和理解这个项目,开发者可以深入理解如何使用Java和JSP创建一个多用户交互的聊天室应用,这对于提升Web开发技能和理解分布式系统的设计原则非常有帮助。

    bbs聊天室(jsp)

    【标题】"bbs聊天室(jsp)"是一个基于JavaServer Pages(JSP)技术构建的在线论坛或讨论区系统。JSP是Java平台上的一个重要Web开发技术,它允许开发者将静态HTML与动态Java代码结合,以创建交互式网页应用。 【描述...

    基于jsp以及ajax基础的网络聊天室

    【基于jsp以及ajax基础的网络聊天室】是一个典型的Web应用程序,它利用了Java技术栈,特别是JavaServer Pages(JSP)和Asynchronous JavaScript and XML(AJAX)来构建一个实时的、交互式的在线聊天平台。...

    JSP课程设计聊天室源代码chartRoom

    【JSP课程设计聊天室源代码chartRoom】是一款基于Java Web技术实现的在线聊天室应用,主要用于学习和实践JSP(JavaServer Pages)技术。这个项目对于初学者来说,是理解JSP动态网页开发、Servlet处理请求以及AJAX...

    jsp聊天小项目

    【标题】"jsp聊天小项目"是一个基于JSP技术实现的简单在线聊天室应用程序,它集成了数据库交互功能,主要用于展示基础的Web开发知识。这个项目对于初学者来说是一个很好的学习资源,因为它的设计和实现都集中在了...

    用jsp做的聊天室示例

    它表明你将找到一个完整的、用JSP编写的聊天室应用实例,你可以通过查看源代码、运行程序来学习和理解JSP在构建交互式Web应用程序时的具体实现。 【标签】:“java”意味着这个项目基于Java编程语言。JSP虽然在前端...

    Web聊天室系统源码.zip

    在聊天室系统中,Servlet可能负责接收和处理用户的输入,而JSP则用于生成和显示聊天界面。 2. **WebSocket**:为了实现即时通讯,Web聊天室通常使用WebSocket协议。WebSocket提供双向通信,允许服务器主动向客户端...

    JAVA项目:javaWeb聊天室.rar

    "JAVA项目:javaWeb聊天室" 是一个基于JAVA技术开发的Web应用程序,主要用于实现在线聊天的功能。这个项目可能包含了服务器端的Java代码、前端的HTML、CSS和JavaScript,以及可能的数据库连接和配置文件,用于创建一...

    struts聊天室 邮件系统 后台管理的struts版本

    这个项目实例——"struts聊天室 邮件系统 后台管理的struts版本",显然是一个集成多种功能的Web应用,旨在帮助开发者更深入地理解和学习Struts框架。 首先,让我们详细讨论Struts框架的核心概念和工作原理: 1. **...

    liaotiaoshichengxu

    【聊天室程序】是一个基于JSP(JavaServer Pages)和MySQL数据库开发的在线实时交流平台。JSP是一种服务器端的动态网页技术,它允许开发者在HTML页面中嵌入Java代码,使得网页能够处理动态内容。MySQL则是一款广泛...

    6个struts小案例,网罗STRUTS基础知识

    Struts是Java Web开发中的一款经典MVC框架,它极大地简化了基于JSP和Servlet的应用程序构建过程。在这个"6个struts小案例"中,我们可以深入学习和理解STRUTS的基础知识,包括过滤器、COS上传组件、逻辑分页等核心...

    apache-tomcat-7.0.47

    通过使用WebSocket,开发者可以创建实时应用,如在线游戏、股票交易系统、聊天室等,这些应用需要服务器能够即时响应客户端的变化。 在Apache Tomcat 7.0.47中,WebSocket的实现包括以下核心组件: 1. **...

    apache-tomcat-7.0.56-windows-x64

    这使得Web应用可以实现游戏、聊天室、股票报价等实时功能,无需依赖Flash或其他插件。 5. **性能优化**: 针对64位Windows平台,Tomcat 7.0.56进行了优化,提高了内存管理效率和多线程处理能力,尤其对于大规模...

    JAVA学习步骤DOC

    8. **实战项目**:通过开发聊天室系统、坦克大战游戏、贪吃蛇游戏来巩固基础知识。 **第二阶段:JAVA WEB技术** 1. **数据库技术**:学习Oracle、MySQL和SQLServer的基础管理,包括SQL语言、PL/SQL、触发器和存储...

    apache-tomcat-7.0.59

    它还包含了一个内置的WebSocket API,用于实现双向通信,这在实时应用如聊天室或在线游戏中非常有用。 **安装与配置** 安装Apache Tomcat 7.0.59相对简单,首先需要从Apache官方网站下载对应的发行版。解压后,将其...

    apeche-tomcate-7.0

    Apache Tomcat 7.0是Java Web应用服务器,主要用于运行基于Java Servlet和JavaServer Pages (JSP)的应用程序。这个"apeche-tomcate-7.0"压缩包包含了最新的Tomcat 7.0版本,这是一款开源软件,提供免费下载和使用。...

    pushlet实现服务器端向客户端推送消息总结

    这种技术在构建实时应用程序,如聊天室、实时股票更新或在线游戏等场景中非常有用。以下是关于 Pushlet 实现服务器端向客户端推送消息的详细知识点: 1. **实现方式**: - **定时推送**:通过配置文件设定定时任务...

Global site tag (gtag.js) - Google Analytics