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>

        在源碼中有進行詳細的註釋說明,不懂的可以在評論留言喲。

複製到自己的小項目即可使用喲。

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