日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java写一个web聊天工具_javaweb写的在线聊天应用

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java写一个web聊天工具_javaweb写的在线聊天应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫這個玩意兒就是想練練手, 用戶需要登陸才能在線聊天,不要依賴數據庫, 不需要數據庫的操作, 所有的數據都是保存在內存中, 如果服務器一旦重啟,數據就沒有了;

登錄界面:

聊天界面:

左側是在線的用戶列表, 右側是聊天的內容, 內容的格式為 “作者 : 內容”;

點擊button可以發布聊天信息;

使用的是spring搭建的框架,基于tomcat的服務器;

web.xml的配置如下:

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

index.htm

test

org.springframework.web.servlet.DispatcherServlet

1

test

*.htm

org.springframework.web.context.ContextLoaderListener

CharacterEncodingFilter

com.nono.Filter.CharacterEncodingFilter

encoding

UTF-8

SecurityServlet

com.nono.SecurityServlet

SecurityServlet

*.htm

contextConfigLocation

/WEB-INF/test-servlet.xml

View Code

conteConfigLocation的配置為:

.jsp

View Code

整個項目的結構為一個主路由, 四個po層, ?兩個過濾器:

界面的用戶列表和用戶內容列表用了ajax刷新, 感覺不錯的說:

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

login

height:100%;

}

.bg{

background:url(imgs/bg.jpeg);

}

list

  • name
  • name
  • name
  • name
  • content

    haha:

    say someting

    haha:

    say someting

    enter text

    Submit

    $.post("chat.htm", "content="+ $("#answer").val(), function(data) {

    console.log(data);

    });

    });functionGet(url , el, fn) {this.post = function() {

    $.post(url,function(data) {

    data=JSON.parse(data);var html = "";

    $.each(data,function(i, e) {

    html+=fn(i,e);

    });

    $(el).html( html );

    });

    };

    };

    (function() {var list = new Get("getList.htm", "#list", function(i, e) {return "

    " + e.name + "";

    });var content = new Get("getContent.htm", "#con", function(i, e) {return "

    "+ e.name +" : "+ e.content +"

    ";

    });

    setInterval(function() {

    list.post();

    content.post();

    },1000);

    })();

    View Code

    權限控制的話我們可以用到fileter:

    packagecom.nono;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importcom.nono.po.User;public class SecurityServlet extends HttpServlet implementsFilter {private static final long serialVersionUID = 1L;public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throwsIOException, ServletException {

    HttpServletRequest request=(HttpServletRequest)arg0;

    HttpServletResponse response=(HttpServletResponse) arg1;

    HttpSession session=request.getSession();

    User user= (User) session.getAttribute("user");

    String url=request.getRequestURI();//如果用戶信息不是空的, 或者要訪問的是登陸的界面(get,post的方式包含了login字符串);

    if( user!=null || url.indexOf("login")>-1) {

    arg2.doFilter(arg0, arg1);return;

    }else{//余下的全跳到登陸界面

    response.sendRedirect(request.getContextPath() + "/login.htm");return;

    }

    }public void init(FilterConfig arg0) throwsServletException {

    }

    }

    View Code

    路由控制和服務放到了一起, 因為權限控制使用過濾器處理, 所以在路由里面我們就不用關心用戶的消息, 只要處理業務邏輯就好了:

    packagecom.nono.Controller;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Vector;importjavax.jms.Session;importjavax.print.DocFlavor.STRING;importjavax.print.attribute.HashAttributeSet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importnet.sf.json.JSONArray;importorg.omg.CORBA.PUBLIC_MEMBER;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.ResponseBody;importcom.nono.po.Content;importcom.nono.po.Contents;importcom.nono.po.User;importcom.nono.po.Users;

    @Controllerpublic classMainController {//用戶和用戶組;

    @Autowired

    Users users;

    @Autowired

    Contents contents;

    @RequestMapping(value="login", method=RequestMethod.GET)publicString login (HttpServletRequest request) {return "login";

    }

    @RequestMapping(value="login", method=RequestMethod.POST)publicString loginPOST ( HttpServletRequest request, HttpServletResponse response ) {

    String string= "login";

    String name= (String) request.getParameter("name");

    Boolean flag= true;//如果名字不是空的話;

    if( !name.equals("") ) {

    Vector vector=users.getList();for(int i=0; i< vector.size(); i++) {

    User user=(User) vector.elementAt(i);if( user.getName().equals( name ) ) {

    flag= false;

    };

    };

    };//用戶名不存在

    if( flag ) {

    User user= newUser();

    user.setName( name );

    HttpSession session= request.getSession(true);//設置Session的過期時間為10分鐘

    session.setMaxInactiveInterval(600);//設置seesion中的用戶信息;

    session.setAttribute("user", user);//添加用戶;

    users.addUser( user );//加入的提示;

    Content content = newContent();

    content.setName( name );

    content.setContent("enter the chat room!");

    contents.addContent( content );

    string= "chat";returnstring;

    }else{//用戶名已經存在

    request.setAttribute("info", "用戶名已經存在1");

    string= "login";returnstring;

    }

    }

    @RequestMapping(value="chat", method=RequestMethod.GET)publicString main (HttpServletRequest request) {

    String string= "chat";returnstring;

    }

    @RequestMapping(value="chat", method=RequestMethod.POST)

    @ResponseBodypublicString chat(HttpServletRequest request) {

    String string= (String) request.getParameter("content");

    HttpSession session=request.getSession();//設置seesion中的用戶信息;

    User user = (User) session.getAttribute("user");

    String name=user.getName();

    Content content= newContent();

    content.setName( name );

    content.setContent( string );

    contents.addContent( content );return "true";

    }

    @RequestMapping(value="getList", method=RequestMethod.POST, produces = "text/html;charset=UTF-8")

    @ResponseBodypublicString getList( HttpServletRequest request) {returnJSONArray.fromObject( users.getList() ).toString();

    }

    @RequestMapping(value="getContent", method=RequestMethod.POST, produces = "text/html;charset=UTF-8")

    @ResponseBodypublicString getArrayList() {

    ArrayList list=(ArrayList) contents.getContents();

    ArrayList result= newArrayList();for( int i= 0; i< list.size(); i++) {

    HashMap hashMap = newHashMap();

    hashMap.put("name", ((Content)list.get(i)).getName());

    hashMap.put("content", ((Content)list.get(i)).getContent());

    result.add( hashMap );

    };returnJSONArray.fromObject( result ).toString();

    }

    }

    View Code

    有哪位大神告訴我為什么中文各種亂碼, 在界面中的utf-8也設置, @ResponseBody的也設置了, 還是亂碼, encodeURIComponent過的也是亂碼, 坑爹啊;

    總結

    以上是生活随笔為你收集整理的java写一个web聊天工具_javaweb写的在线聊天应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。