基于javaweb+mysql的聊天室
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
登录、注册、退出、聊天
技术框架
CSS+JavaScript+ajax+jsp Servlet jdbc MySQL
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
// 获取电子邮箱
String email = request.getParameter("email");
// 实例化UserDao对象
UserDao userDao = new UserDao();
if(username != null && !username.isEmpty()){
if(userDao.userIsExist(username)){
// 实例化一个User对象
User user = new User();
// 对用户对象中的属性赋值
user.setUsername(username);
user.setPassword(password);
user.setSex(sex);
user.setPhoto(photo);
user.setTel(tel);
user.setEmail(email);
// 保存用户注册信息
userDao.saveUser(user);
request.setAttribute("info", "恭喜,注册成功!<br>");
}else{
request.setAttribute("info", "错误:此用户名已存在!");
}
}
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();
}
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();
}
return conn;
}
public static void main(String[] args) {
<option value="images/girl.png">头像girl</option>
</select>
<img id="photoImg" src="images/boy.png">
</td>
</tr>
<tr>
<td align="right">联系电话:</td>
<td>
<input type="text" name="tel">
</td>
</tr>
<tr>
<td align="right">电子邮箱:</td>
<td>
<input type="text" name="email">
</td>
</tr>
<tr>
</BODY>
</HTML>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
<title>聊天室登录</title>
<style type="text/css">
.myformdiv {
background-color: #e3e4ea;
opacity: 0.85;
}
.col-center-block {
position: absolute;
top: 50%;
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
}
public static void closeConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.demo.filter;
import java.io.IOException;
import javax.servlet.*;
if (user != null) {
// 将用户对象放入session中
request.getSession().setAttribute("user", user);
// 转发到result.jsp页面
request.getRequestDispatcher("Messages?action=loginRoom").forward(request, response);
} else {
// 登录失败
request.setAttribute("info", "错误:用户名或密码错误!");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
}
package com.demo.entity;
/**
* 用户实体类
*/
public class User {
private int id; // 标识
private String username;// 用户名
private String password;// 密码
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.demo.entity.User;
/**
* 用户数据库操作类
*/
public class UserDao {
/**
* 添加用户
* @param user 用户对象
*/
request.getRequestDispatcher("Messages?action=getMessages&nocache=" + random.nextInt(10000)).forward(request, response);
} catch (Exception ex) {
Logger.getLogger(Messages.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public String getServletInfo() {
return "Short description";
}
}
package com.demo.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
ConnectDB.closeConnection(conn);
}
return false;
}
}
package com.demo.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
user.setSex(rs.getString("sex"));
user.setTel(rs.getString("tel"));
user.setPhoto(rs.getString("photo"));
user.setEmail(rs.getString("email"));
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
ConnectDB.closeConnection(conn);
}
return user;
}
/**
* 判断用户名在数据库中是否存在
* @param username 用户名
* @return 布尔值
// 获取电子邮箱
String email = request.getParameter("email");
// 实例化UserDao对象
UserDao userDao = new UserDao();
if(username != null && !username.isEmpty()){
if(userDao.userIsExist(username)){
// 实例化一个User对象
User user = new User();
// 对用户对象中的属性赋值
user.setUsername(username);
user.setPassword(password);
user.setSex(sex);
user.setPhoto(photo);
user.setTel(tel);
user.setEmail(email);
// 保存用户注册信息
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);
}
}
/**
* 用户登录
* @param username 用户名
* @param password 密码
* @return 用户对象
<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"%>
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public String getEmail() {
return email;
<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>
// 增加用户
public boolean addUser(String user) {
if (user != null) {
this.vector.add(user);
return true;
} else {
return false;
}
}
// 获取用户列表
public Vector getList() {
return vector;
}
// 移除用户
public void removeUser(String user) {