基于javaweb+JSP+Servlet聊天室

这是一个基于Java Web的聊天室项目,使用JSP和Servlet技术,适用于课程设计和学习实践。用户可以登录、注册、聊天,并展示在线人员列表。项目采用CSS、JavaScript和Ajax进行前端交互,后端涉及数据库操作,如用户登录验证和消息发送。
摘要由CSDN通过智能技术生成

基于javaweb+JSP+Servlet聊天室

开发工具:eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

    function reg(form) {
        if (form.username.value == "") {
            alert("用户不能为空!");
            return false;
        }
        if (form.password.value == "") {
            alert("密码不能为空!");
            return false;
        }
        if (form.repassword.value == "") {
            alert("确认密码不能为空!");
            return false;
        }
<table width="778" height="149" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#a2d5d0"
       background="images/laji.jpg">
    <tr>
        <td>&nbsp;</td>
    </tr>
</table>
<table width="778" height="276" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
        <td width="165" valign="top" bgcolor="#f6fded" id="online" style="padding:5px">在线人员列表</td>
        <td width="613" height="200px" valign="top" background="images/main_bj.jpg" bgcolor="#FFFFFF"
            style="padding:5px; ">
            <div style="height:290px; overflow:hidden" id="content">聊天内容</div>
        </td>

    </tr>
</table>
<table width="778" height="95" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#a2d5d0"
       background="images/back.jpg">

    <form action="" name="form1" method="post">
        <tr>
            <td height="30" align="left">&nbsp;</td>
            <td height="37" align="left"><input name="from" type="hidden" value="${username}">[${username} ]对
                <input name="to" type="text" value="" size="35" readonly="readonly">
                表情
                <select name="face" class="wenbenkuang">
                    <option value="无表情的">无表情的</option>
                    <option value="无表情的">无表情的</option>
                    <option value="微笑着" selected>微笑着</option>
                    <option value="笑呵呵地">笑呵呵地</option>
                    <option value="热情的">热情的</option>
                    <option value="温柔的">温柔的</option>
                    <option value="红着脸">红着脸</option>
                    <option value="幸福的">幸福的</option>
                    <option value="嘟着嘴">嘟着嘴</option>
                    <option value="热泪盈眶的">热泪盈眶的</option>
                    <option value="依依不舍的">依依不舍的</option>
                    <option value="得意的">得意的</option>
                    <option value="神秘兮兮的">神秘兮兮的</option>
                    <option value="恶狠狠的">恶狠狠的</option>
                    <option value="大声的">大声的</option>
			ps.executeUpdate();
			// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
			ps.close();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			// 关闭数据库连接
			ConnectDB.closeConnection(conn);
		}
	}
	/**
	 * 用户登录
	 * @param username 用户名
	 * @param password 密码
	 * @return 用户对象
	 */
	public User login(String username, String password){
		User user = null;
		// 获取数据库连接Connection对象
		Connection conn = ConnectDB.getConnection();
		// 根据用户名及密码查询用户信息
		String sql = "select * from tb_user where username = ? and password = ?";
		try {
			ps.close();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			// 关闭数据库连接
			ConnectDB.closeConnection(conn);
		}
	}
	/**
	 * 用户登录
	 * @param username 用户名
	 * @param password 密码
	 * @return 用户对象
	 */
	public User login(String username, String password){
		User user = null;
		// 获取数据库连接Connection对象
		Connection conn = ConnectDB.getConnection();
		// 根据用户名及密码查询用户信息
		String sql = "select * from tb_user where username = ? and password = ?";
		try {
			// 获取PreparedStatement对象
			PreparedStatement ps = conn.prepareStatement(sql);
			// 对SQL语句的占位符参数进行动态赋值
			ps.setString(1, username);
			ps.setString(2, password);

    }

    // 当Session有对象移除时执行的方法
    public void valueUnbound(HttpSessionBindingEvent arg0) {
        System.out.println("下线用户:" + this.user);
        if (user != "") {
            container.removeUser(user);
        }
    }
}
package com.demo.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectDB {
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/project_000000000000?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false";
            conn = DriverManager.getConnection(url, "root", "123456");
        } catch (Exception e) {
            e.printStackTrace();
			ps.setString(1, user.getUsername());
			ps.setString(2, user.getPassword());
			ps.setString(3, user.getSex());
			ps.setString(4, user.getTel());
			ps.setString(5, user.getPhoto());
			ps.setString(6, user.getEmail());
			// 执行更新操作
			ps.executeUpdate();
			// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
			ps.close();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			// 关闭数据库连接
			ConnectDB.closeConnection(conn);
        <!--
        function send() {	//验证聊天信息并发送
            if (form1.to.value == "") {
                alert("请选择聊天对象!");
                return false;
            }
            if (form1.content1.value == "") {
                alert("发送信息不可以为空!");
                form1.content1.focus();
                return false;
            }
            var param = "from=" + form1.from.value + "&face=" + form1.face.value + "&color=" + form1.color.value + "&to=" + form1.to.value + "&content=" + form1.content1.value;
            var loader = new net.AjaxRequest("Messages?action=sendMessage", deal_send, onerror, "POST", param);

        }

        function deal_send() {
            content.innerHTML = sysBBS + this.req.responseText + "</span>";
                    <input type="text" class="form-control" placeholder="username" name="username" id="username">
                </div>
                <br>
                <div class="input-group-lg">
                    <span class="input-group-addon "><b>密码</b></span>
                    <input type="password" class="form-control" placeholder="password" name="password" id="password">
                </div>
                <br>
                <br>
                <div style="margin-top: 2px;">
                    <button type="submit" class="btn btn-primary">登录</button>
                    <button type="reset" class="btn btn-danger">重置</button>
                    <a href="reg.jsp" class="btn btn-info">注册</a>
                </div>
            </form>
        </div>
    </div>
</div>
</body>
</html>
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@ page import="java.util.*"%>
<%@ page import="com.demo.model.UserInfo"%>
<%@ page import="com.demo.servlet.UserListener"%>
<%@ include file="safe.jsp" %>
<html>
<head>
    <title>聊天室</title>
    <link href="CSS/style.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
    <script language="javascript" src="JS/AjaxRequest.js"></script>
    <script language="javascript">
        window.setInterval("showContent();", 1000);
        window.setInterval("showOnline();", 10000);
        var sysBBS = "<span style='font-size:14px; line-height:30px;'>欢迎光临聊天室,请遵守聊天室规则,不要使用不文明用语。</span><br><span style='line-height:22px;'>";

        //此处需要加?nocache="+new Date().getTime(),否则将出现在线人员列表不更新的情况
        function showOnline() {
            var loader = new net.AjaxRequest("online.jsp?nocache=" + new Date().getTime(), deal_online, onerror, "GET");
        }

        function showContent() {
            var loader1 = new net.AjaxRequest("Messages?action=getMessages&nocache=" + new Date().getTime(), deal_content, onerror, "GET");
        }

        function onerror() {
            alert("很抱歉,服务器出现错误,当前窗口将关闭!");
            window.opener = null;
            window.close();

运行环境

Java≥6、Tomcat≥7.0、MySQL≥5.5

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

技术框架

CSS+JavaScript+ajax+jsp Servlet jdbc MySQL

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

登录、注册、退出、聊天

20220312140942

20220312141027

20220312141218

20220312141725


  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值