zoukankan      html  css  js  c++  java
  • Ajax聊天

    结构:

    index.html

    <!DOCTYPE html>
    <html>
      <head>
        <title>index.html</title>
    	
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    <script type="text/javascript">
    	var xmlHttp;
    
    	function createXMLHttpRequest() {
    		if (window.ActiveXObject) {
    			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    		} else if (window.XMLHttpRequest) {
    			xmlHttp = new XMLHttpRequest();
    		}
    	}
    
    	function firstRead() {
    		createXMLHttpRequest();
    		xmlHttp.open("post", "servlet/ChatServlet", true);
    		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //post 传参必须有form表单和此句
    		xmlHttp.onreadystatechange = onReadyState;
    		xmlHttp.send(null);
    		window.setTimeout(firstRead, 1000);
    	}
    	
    	function sendMsg(){
    		createXMLHttpRequest();
    		xmlHttp.open("post", "servlet/ChatServlet", true);
    		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //post 传参必须有form表单和此句
    		xmlHttp.onreadystatechange = onReadyState;
    		var chatMsg = document.getElementById("chatInfo");
    		xmlHttp.send("chatMsg="+chatMsg.value);
    		//document.getElementById("showChat").innerText = chatMsg;
    		document.getElementById("chatInfo").value= "";//清空文本框
    	}
    	
    	function onReadyState() { //onreadystatechangem 每次状态改变被调用
    	
    		if (xmlHttp.readyState == 4){//==4 客户端与服务器交互完成,,, ==200是否传输成功.,
    			if(xmlHttp.status == 200){
    				//alert("服务器返回: " + xmlHttp.responseText);//responseText 返回服务器数据
    				document.getElementById("showChat").innerText = xmlHttp.responseText;
    			}
    		}
    	}
    	
    	function getKeyCode(){
    		if(window.event.keyCode == 13){//回车键
    			sendMsg();
    		}
    	}
    </script>
    </head>
      
      <body onload="firstRead()" onkeydown="getKeyCode()">
      <form action="" enctype="application/x-www-form-urlencoded">
        This is my HTML page. <br>
        <div>
        	<textarea rows="20" cols="60" id="showChat" readonly="readonly"></textarea><br>
        	<input type="text" id="chatInfo" style="300px;height:25px">
        	<input type="button" value=" 发送  " onclick="sendMsg()">
        </div>
        </form>
      </body>
    </html>
    

      ChatServlet

    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    
    @SuppressWarnings("serial")
    public class ChatServlet extends HttpServlet {
    	
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		String chatMsg = request.getParameter("chatMsg");
    		ChatService chatService = ChatService.getChat();
    		if(null!=chatMsg && chatMsg.trim().length()>0){
    			chatService.addMsg(chatMsg, request.getRemoteAddr());
    			String getMsg = chatService.getMsg();
    			out.print(getMsg);
    		}else{
    			String getMsg = chatService.getMsg();
    			out.print(getMsg);
    		}
    	}
    }
    

      ChatService

    import java.util.LinkedList;
    
    public class ChatService {
    	private static ChatService chat;
    	private LinkedList<String> list;
    	private ChatService(){}
    	
    	public static ChatService getChat(){
    		if(chat==null){
    			chat = new ChatService();
    		}
    		return chat;
    	}
    	
    	public void addMsg(String Msg,String uname){
    		if(list==null){
    			list = new LinkedList<String>();
    		}
    		if(list.size()>10){
    			list.removeFirst();
    		}
    		list.add(uname+"说:"+Msg);
    		
    	}
    	
    	public String getMsg(){
    		
    		String Msg = "";
    		if(list!=null){
    			for (String str:list) {
    				Msg+=(str+"\n");
    			}
    		}
    		return Msg;
    	}
    }
    

      结果截图:

  • 相关阅读:
    20145215《Java程序设计》第4周学习总结
    20145215《Java程序设计》第3周学习总结
    20145215《Java程序设计》第2周学习总结
    关于开源中国的代码托管
    问卷调查
    2019年12月29日 回怼老王
    cnblogs今天挂了
    感悟别人的感悟——写在2020年前一天
    心情随笔_20191231
    js事件冒泡和捕捉
  • 原文地址:https://www.cnblogs.com/feifeishi/p/5555932.html
Copyright © 2011-2022 走看看