重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

怎么用javaweb实现在线聊天工具

本篇内容主要讲解“怎么用javaweb实现在线聊天工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用javaweb实现在线聊天工具”吧!

创新互联是一家集网站建设,义马企业网站建设,义马品牌网站建设,网站定制,义马网站建设报价,网络营销,网络优化,义马网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

写这个玩意儿就是想练练手, 用户需要登陆才能在线聊天,不要依赖数据库, 不需要数据库的操作, 所有的数据都是保存在内存中, 如果服务器一旦重启,数据就没有了;

登录界面:

怎么用javaweb实现在线聊天工具

聊天界面:

怎么用javaweb实现在线聊天工具

左侧是在线的用户列表, 右侧是聊天的内容, 内容的格式为 “作者 : 内容”;

点击button可以发布聊天信息;

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

web.xml的配置如下:

                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               

conteConfigLocation的配置为:

                                                   .jsp               

整个项目的结构为一个主路由, 四个po层,  两个过滤器:

怎么用javaweb实现在线聊天工具

界面的用户列表和用户内容列表用了ajax刷新, 感觉不错的说:

 <%@ page language="java" import="java.util.*"  pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>           ">          login                                                                                                             

                             list                         

                                                      
  • name—
  •                              
  • name—
  •                              
  • name—
  •                              
  • name—
  •                                               
                     
                                              

                                 content                         

                                                

                               haha:                                                          say someting                                                  

                           

                               haha:                                                          say someting                                                  

                         
                         
                                                    enter text                                                                       Submit                                                                         

    权限控制的话我们可以用到fileter:

    package com.nono;  import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;  import com.nono.po.User;  public class SecurityServlet extends HttpServlet implements Filter {     private static final long serialVersionUID = 1L;      public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, 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) throws ServletException {     }  }

    路由控制和服务放到了一起, 因为权限控制使用过滤器处理, 所以在路由里面我们就不用关心用户的消息, 只要处理业务逻辑就好了:

    package com.nono.Controller;  import java.util.ArrayList; import java.util.HashMap; import java.util.Vector;  import javax.jms.Session; import javax.print.DocFlavor.STRING; import javax.print.attribute.HashAttributeSet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;  import net.sf.json.JSONArray;  import org.omg.CORBA.PUBLIC_MEMBER; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;  import com.nono.po.Content; import com.nono.po.Contents; import com.nono.po.User; import com.nono.po.Users;  @Controller public class MainController {     //用户和用户组;     @Autowired     Users users;          @Autowired     Contents contents;          @RequestMapping(value="login", method=RequestMethod.GET)     public String login (HttpServletRequest request) {         return "login";     }           @RequestMapping(value="login", method=RequestMethod.POST)     public String 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 = new User();             user.setName( name );             HttpSession session = request.getSession(true);             //设置Session的过期时间为10分钟             session.setMaxInactiveInterval(600);             //设置seesion中的用户信息;             session.setAttribute("user", user);             //添加用户;             users.addUser( user );                          //加入的提示;             Content content = new Content();             content.setName( name );             content.setContent( "enter the chat room!" );             contents.addContent( content  );                          string = "chat";             return string;         }else{             //用户名已经存在             request.setAttribute("info", "用户名已经存在1");             string = "login";             return string;         }     }          @RequestMapping(value="chat", method=RequestMethod.GET)     public String main (HttpServletRequest request) {         String string = "chat";         return string;     }          @RequestMapping(value="chat", method=RequestMethod.POST)     @ResponseBody     public String 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 = new Content();         content.setName( name );         content.setContent( string );         contents.addContent( content  );         return "true";     }          @RequestMapping(value="getList", method=RequestMethod.POST, produces = "text/html;charset=UTF-8")     @ResponseBody     public String getList( HttpServletRequest request) {         return JSONArray.fromObject( users.getList() ).toString();     }          @RequestMapping(value="getContent", method=RequestMethod.POST, produces = "text/html;charset=UTF-8")     @ResponseBody     public String getArrayList() {         ArrayList list = (ArrayList) contents.getContents();         ArrayList result = new ArrayList();         for( int i= 0; i< list.size(); i++ ) {             HashMap hashMap = new HashMap();             hashMap.put("name", ((Content)list.get(i)).getName());             hashMap.put("content", ((Content)list.get(i)).getContent());             result.add( hashMap );         };         return JSONArray.fromObject( result ).toString();     }      }

    到此,相信大家对“怎么用javaweb实现在线聊天工具”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


    当前题目:怎么用javaweb实现在线聊天工具
    转载来源:http://cqcxhl.com/article/pgddid.html