jsp简单多人在线聊天系统(非常容易理解的公聊、私聊)

        对于jsp简单在线聊天系统,简单的利用Session、Request、Application等知识点。
        基于jsp简单多人在线聊天系统源码,分为公聊、私聊以及网站客服,网站多用户,十分容易理解!!!

        不加以多说,直接源码展示。
        原源码在大佬用户Summer__show_,目前该大佬用户已经删除文章,我在其源码基础上进行一个改编,并且进行一些优化。如有侵权请告知。
        就比如我现在的网址为https://blog.csdn.net/white_mvlog/online.jsp?username=white_mvlog

   <%@ page contentType="text/html;charset=UTF-8" language="java"
	pageEncoding="UTF-8"%>
   <%@ page import="java.util.*"%>
   <%
    //每隔15秒进行一次页面刷新,刷新聊天记录
    response.setHeader("refresh", "15");
    //设置获取的值格式为utf-8
	request.setCharacterEncoding("UTF-8");
	//获取网址的username的属性值
	String username = request.getParameter("username");
	//从applicaton作用域中取出用户列表  
	List<Object> users = (List<Object>) application
			.getAttribute("users");
	//如果该用户列表还不存在,实例化该用户列表 
	if (users == null) {
		users = new ArrayList<Object>();
	}
	//查看当前列表中是否包含当前的登陆用户  
	if (users.contains(username)) {
		//设置提示信息  
		request.setAttribute("msg", "该用户已经登陆,请重新登陆");
		System.out.println(users.size());
		if (users.size() != 0) {
			for (int i = 0; i < users.size(); i++) {
				if (username.equals(users.get(i))) {
					users.remove(i);
					i--;
				}
			}
		}
	}

	//将当前登陆用户名加入该用户列表 
	users.add(username);
	application.setAttribute("users", users);
	session.setAttribute("user", username);
	System.out.println("xian");


	List<Object> msgs = (List<Object>) application.getAttribute("msgs");
	List<Object> to_sb = (List<Object>) application
			.getAttribute("private");
	List<Object> from_sb = (List<Object>) application
			.getAttribute("S_private");
	String user1 = (String) session.getAttribute("user");

	if (msgs == null) {
		msgs = new ArrayList<Object>();
	}

	if (to_sb == null) {
		to_sb = new ArrayList<Object>();
	}

	if (from_sb == null) {
		from_sb = new ArrayList<Object>();
	}
	%>
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head><title>客服</title>
	</head>
	<body>
	<div class="divhead1">
					<div class="headee">
						<h3>
							在线客服
						</h3>
					</div>
					<div class="content">
						<div class="list">
						<div class="bodyhead">在线人数<%=users.size() %>人</div>
						<ul>
				<%
				for (int i = 0; i < users.size(); i++) {
					String username2 = (String) users.get(i);
				
				%>
				<li>
					<%=username2 %>
				</li>
				
					<%
				}
					%>
			</ul>
			</div>
						<div class="dad">
							<div class="bodyhead"></div>
							<div class="msg">
							<%
								for (int i = 0; i < msgs.size(); i++) {
									//查看谁发给谁了什么信息
									System.out.println(msgs.get(i) + "and " + to_sb.get(i)
											+ " from " + from_sb.get(i));
								}
								try {
									for (int i = 0; i < msgs.size(); i++) {
										String t1 = (String) msgs.get(i);
										String t2 = (String) to_sb.get(i);
										String t3 = (String) from_sb.get(i);
										if (t2.equals(username) || t2.equals("所有人")) {
											//发送给我或者发送给所有人的
											%>
											<p>
												<span class="ith"><%=t3 %></span><span class="it"><%=t1 %></span>
											</p><br />
											<%
											//如果对方回复已解决,则删除他的登录记录,结束聊天
											if(t1.equals("已解决")){
												users.remove(t3);
											}
										} else if(t3.equals(username)){
											//我发送的
											%>
											<p>
												<span class="meh"><%=t3 %></span><span class="me"><%=t1 %></span>
											</p><br />
											<%
										}else{
											System.out.println(t2 + "跟他不同" + "username" + "或者跟他"
													+ user1);
										}
									}
								} catch (Exception e) {
								}
							%>
							</div>
							<div class="send">
								<form
								class="if"
									action="online.jsp?username=<%=username%>"
									method="post">
									
										
						<%
						System.out.println(session.getAttribute("user"));
						//在这里可以区分客服与用户,客服拥有select选项值的0也就是发送信息给所有人的功能
						if(username.equest("white")){%>
										<select name="select" class="ss">
											<option value="0">
												所有人
											</option>
											<%
											
												for (int i = 0; i < users.size(); i++) {
													username = (String) users.get(i);
											%>
											<option value="<%=i + 1%>"><%=username%></option>
											<%
												}
						}else{
						//反之,用户拥有select选项值的666也就是发送信息给客服的功能
							%>
							<select name="select" class="ss">
							<!--要选择客服的话select选项值为666-->
							<option value="666">客服</option>
							<%
						}
											%>
										</select>
										<textarea id="dope"
											style="width: 99%; height: 75px; border: none; outline: none;"
											name="message" rows cols></textarea>
										<input type="submit" value="发送" class="sendBtn" />
							</div>
							</form>
							<%
								String user = (String) session.getAttribute("user");
								request.setCharacterEncoding("UTF-8");
								String message = request.getParameter("message");

								String to = "";
								try {
									//被发送消息方
									List<Object> tmp = (List<Object>) application
											.getAttribute("users");
									String SS = request.getParameter("select");
									int a = Integer.parseInt(SS);
									//发送给所有人则在select选择项值为0
									if (a == 0)
										to = "所有人";
									//发送给所有人则在select选择项值为666
									else if(a==666)
										to = "white";
									else
										to = (String) tmp.get(a - 1);
								} catch (Exception e) {
								}

								System.out.println("正在尝试");
								for (int i = 0; i < msgs.size(); i++) {
									System.out.println(msgs.get(i) + "c");
								}
								if (message != null && !message.equals("")) {
									//msgs.add(user + "发消息给" + to + "  :  " + message + "<br/>");
									msgs.add( message);
									to_sb.add(to);
									from_sb.add(user);
									System.out.println("尝试");
									application.setAttribute("msgs", msgs);
									application.setAttribute("private", to_sb);
									application.setAttribute("S_private", from_sb);
									response.sendRedirect("online.jsp?username=" + username);
								}
							%>
						</div>
					</div>
				</div>
				</body>
	</html>

        在源码中有进行详细的注释说明,不懂的可以在评论留言哟。

复制到自己的小项目即可使用哟。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章