如何用JSP实现网页聊天室

如何用JSP实现网页聊天室,第1张

在这里,我们将提供一个聊天室的简单的JSP程序。我们的程序是按照JSP

Model

2的规范来实现的。简而言之,就是我们将绝大多数处理用户请求的任务交给Servlet来执行,而我们的JSP仅仅是用来完成显示。

在阅读我们的程序之前,你最好已经具备了Java和JSP的基础知识,但是如果你对Java和JSP不是太熟悉,你也可以直接阅读我们的程序,对于每一项涉及到Java和JSP的内容,在我们的程序中第一次出现时,我们会作简要的说明。

当然,你还是需要阅读其他的相关教程,因为我们的这篇文章毕竟不是一个教程。

此外,我们的聊天室是挂接在另一个应用系统上的,对于其中一些特殊的命令方法,你可以不必太介意。

1.登录页面

文件名:know.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath()

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

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>登录</title>

    

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">    

  </head>

  <body>

      <form action="know2.jsp" method="post">

         <input type="text" name="username"><br/>

         <input type="submit" value="提交"/>

      </form>

  </body>

</html> 2.聊天页面

文件名:know2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath()

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

%>

<!DOCTYPE HTML>

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>聊天</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">    

    <meta http-equiv="refresh"content="10url=know2.jsp">

  </head>

   <style>

          .container{

            position:relative

            top:100px

            margin:0 auto

            width: 500px

            height: 300px

            border: 1px solid #aaa

            overflow: hidden

          }

          .usrlist{

            width: 100px

            height: 250px

            background-color: #bbb

            display: block

            float: left

             overflow: scroll

          }

          .chartinfo{

            width: 400px

            height: 250px

            background-color: #ccc

            display: block

            float: left

            overflow: scroll

          }

          .send{

            width: 500px

            height: 50px

            background-color: #ddd

            display: block

            float: left

          }

          select{

            width: 50px

           }

       </style>

    <%

        List<String> chartInfo = new  ArrayList<String>()//保存聊天信息的集合

        List<String> usrs1 =new  ArrayList<String>()//保存登录用户的集合

        if(null!=application.getAttribute("chartinfo")){

           chartInfo =  (List<String>)application.getAttribute("chartinfo")

        }

        if(null!=application.getAttribute("users")){

           usrs1  =  (List<String>) application.getAttribute("users")

        }

        //form 提交过来的数据

        String username = request.getParameter("username")

        String say = request.getParameter("gang")

        String to_usr = request.getParameter("tousr")

        

           if(null!=username&&!"".equals(username)){

            if(!usrs1.contains(username)){

             usrs1.add(username)

             session.setAttribute("users",username)

            }

           }

       application.setAttribute("users",usrs1)//将user1集合放入application

       

       String lgusr = ""

       if(null!=session.getAttribute("users")){

         lgusr = (String)session.getAttribute("users")

       }

       if(lgusr.equals("")||null==lgusr){

        response.setStatus(response.SC_MOVED_TEMPORARILY)

        response.setHeader("Location", "know.jsp") 

       }

         String chart=""

       if(null!=to_usr&&null!=say&&!"".equals(to_usr)&&!"".equals(say)){

           chart = lgusr+" 对   "+to_usr+"说: "+say

        }

        

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

            chartInfo.add(chart)

        }

        application.setAttribute("chartinfo", chartInfo)//将聊天信息集合 放入 application

     %>

      

  <body>

   <div class="container">

     <div class="usrlist">

        <%

         List<String> usrs  =  (List<String>) application.getAttribute("users")

         if(usrs.size()>0){

             for(String u : usrs){

                out.print(u)

                out.print("<br/>")

             }

         }

         %>

     </div>

     <div class="chartinfo">

        <%

     //   out.print(chartInfo.size())

        for(String ct : chartInfo){

          out.print(ct)

          out.print("<br/>")

        }

         %>

     </div>

     <div class="send">

     <form method="post" action="know2.jsp">

         <span>对  </span>

          <select name="tousr" >

          <option></option>

             <%

             for(String u : usrs){

                if(!u.equals(lgusr)){

                  out.print("")

                  out.print("<option value='"+u+"'>"+u+"</option>")

                }

                

             }

              %>

          </select> 

           <span>  说 :</span>

           <input type="text" name="gang"style="width: 300px">

           <input type="submit" value="发送">

           </form>

     </div>

   </div>

  </body>

</html>

这是两个jsp文件,分别是know.jsp 和know2.jsp。你说的功能基本上都达到。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7946495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存