基于javaweb的JSP+Servlet聊天室(java+jsp+servlet+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

登录、注册、退出、聊天

560123082502

510123082502

520123082502

530123082502

540123082502

技术框架

CSS+JavaScript+ajax+jsp Servlet jdbc MySQL

基于javaweb的JSP+Servlet聊天室(java+jsp+servlet+mysql)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
            }
sourceMessage += "系统公告:<font color='gray'>" + username + "走进了聊天室!</font><br>";
application.setAttribute("message", sourceMessage);
try {
request.getRequestDispatcher("login_ok.jsp").forward(request, response);
} catch (Exception ex) {
Logger.getLogger(Messages.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

// 发送聊天信息
public void sendMessages(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
Random random = new Random();
String from = request.getParameter("from"); //发言人
String face = request.getParameter("face"); //表情
String to = request.getParameter("to"); //接收者
String color = request.getParameter("color"); //字体颜色
String content = request.getParameter("content"); //发言内容
String sendTime = new Date().toLocaleString(); //发言时间
ServletContext application = getServletContext();
String sourceMessage = application.getAttribute("message").toString();
try {
//发言时间
sourceMessage += "<font color='blue'><strong>" + from + "</strong></font><font color='#CC0000'>" + face + "</font><font color='green'>[" + to + "]</font>说:" + "<font color='" + color + "'>" + content + "</font>(" + sendTime + ")<br>";
application.setAttribute("message", sourceMessage);
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.servlet;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
            application.setAttribute("message", sourceMessage);
try {
request.getRequestDispatcher("login_ok.jsp").forward(request, response);
} catch (Exception ex) {
Logger.getLogger(Messages.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

// 发送聊天信息
public void sendMessages(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
Random random = new Random();
String from = request.getParameter("from"); //发言人
String face = request.getParameter("face"); //表情
String to = request.getParameter("to"); //接收者
String color = request.getParameter("color"); //字体颜色
String content = request.getParameter("content"); //发言内容
String sendTime = new Date().toLocaleString(); //发言时间
ServletContext application = getServletContext();
String sourceMessage = application.getAttribute("message").toString();
try {
//发言时间
sourceMessage += "<font color='blue'><strong>" + from + "</strong></font><font color='#CC0000'>" + face + "</font><font color='green'>[" + to + "]</font>说:" + "<font color='" + color + "'>" + content + "</font>(" + sendTime + ")<br>";
application.setAttribute("message", sourceMessage);
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.servlet;



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
        Logger.getLogger(Messages.class.getName()).log(Level.SEVERE, null, ex);
}
}

// 登录时,写入系统公告
public void loginRoom(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
String username = request.getParameter("username"); //获得登录用户名
UserInfo user = UserInfo.getInstance(); //获得UserInfo类的对象
session.setMaxInactiveInterval(600); //设置Session的过期时间为10分钟
Vector vector = user.getList();
boolean flag = true; //标记是否登录的变量
//判断用户是否登录
System.out.println("vector的size:" + vector.size());
if (vector != null && vector.size() > 0) {
for (int i = 0; i < vector.size(); i++) {
System.out.println("vector" + i + ":" + vector.elementAt(i) + " user:" + username);
if (username.equals(vector.elementAt(i))) {
PrintWriter out;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
flag = false;
break;
}
}
}
//保存用户信息
if (flag) {
UserListener ul = new UserListener(); //创建UserListener的对象
ul.setUser(username); //添加用户
user.addUser(ul.getUser()); //添加用户到UserInfo类的对象中
session.setAttribute("user", ul); //将UserListener对象绑定到Session中
session.setAttribute("username", username); //保存当前登录的用户名
session.setAttribute("loginTime", new Date().toLocaleString()); //保存登录时间
ServletContext application = getServletContext();

String sourceMessage = "";

if (null != application.getAttribute("message")) {
sourceMessage = application.getAttribute("message").toString();
}
sourceMessage += "系统公告:<font color='gray'>" + username + "走进了聊天室!</font><br>";
application.setAttribute("message", sourceMessage);
try {
request.getRequestDispatcher("login_ok.jsp").forward(request, response);
} catch (Exception ex) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    if ("loginRoom".equals(action)) {    //登录时,写入系统公告
this.loginRoom(request, response);
} else if ("sendMessage".equals(action)) { //发送聊天信息
this.sendMessages(request, response);
} else if ("getMessages".equals(action)) { //从XML文件中读取聊天信息
this.getMessages(request, response);
}
}

// 将页面重定向到显示聊天信息的页面
public void getMessages(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html;charset=UTF-8");
try {
request.getRequestDispatcher("content.jsp").forward(request, response);
} catch (Exception ex) {
Logger.getLogger(Messages.class.getName()).log(Level.SEVERE, null, ex);
}
}

// 登录时,写入系统公告
public void loginRoom(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
String username = request.getParameter("username"); //获得登录用户名
UserInfo user = UserInfo.getInstance(); //获得UserInfo类的对象
session.setMaxInactiveInterval(600); //设置Session的过期时间为10分钟
Vector vector = user.getList();
boolean flag = true; //标记是否登录的变量
//判断用户是否登录
System.out.println("vector的size:" + vector.size());
if (vector != null && vector.size() > 0) {
for (int i = 0; i < vector.size(); i++) {
System.out.println("vector" + i + ":" + vector.elementAt(i) + " user:" + username);
if (username.equals(vector.elementAt(i))) {
PrintWriter out;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
flag = false;
break;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

/**
* 用户注册的Servlet类
*/
public class RegServlet extends HttpServlet {
private static final long serialVersionUID = 5280356329609002908L;

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户名
String username = request.getParameter("username");
// 获取密码
String password = request.getParameter("password");
// 获取性别
String sex = request.getParameter("sex");
// 获取头像
String photo = request.getParameter("photo");
// 获取联系电话
String tel = request.getParameter("tel");
// 获取电子邮箱
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", "错误:此用户名已存在!");
}
}
// 转发到message.jsp页面
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
package com.demo.servlet;



项目链接:
https://javayms.github.io?id=022021341902102ac
https://javayms.pages.dev?id=022021341902102ac