servlet实现简单的聊天室

servlet简单的聊天室

环境:win10,myeclipse2014
项目结构:

实验步骤:
第一步:UserServlet 生成用户界面接受用户输入昵称

package session_test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserServlet extends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        response.setContentType("text/html;charset=GBK");
        PrintWriter out=response.getWriter();
        out.println("<html>");
        out.println("<head><title>UserServlet</title></head>");
        out.println("<body");
        out.println("<h3>我的聊天器,进入聊天室吧!</h3>");
        ServletContext context=getServletContext();
        //判断用户列表存在
        if(context.getAttribute("userlist")==null){
            Vector aduser=new Vector();
            context.setAttribute("userlist", aduser);
        }
        //判断信息列表存在
        if(context.getAttribute("messagelist")==null){
            Vector message=new Vector();
            context.setAttribute("messagelist", message);
        }
        //<%= request.getContextPath() %>
        out.println("<form method='post' action='MainServlet'>");
        out.println("昵称:<input type='text' name='uname'/>");
        out.println("<input type=submit value='登陆'/>");
        out.println("</form>");
        out.print("</body>");
        out.print("</html>");
        out.close();
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        doGet(request, response);
    }

}

第二步:MainServlet读出 Servlet上下文中保存的用户列表向量,如果向量为 null,则新建一个向量,并在用户列表向量中添加用

package session_test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * 保存用户参数
 */
public class MainServlet extends HttpServlet {
    private static String CONTENT_TYPE="text/html;charset=GBK";
    //添加用户请求分派
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws
    ServletException,IOException{
        response.setContentType("text/html;charset=GBK");
        response.setContentType(CONTENT_TYPE);
        PrintWriter out=response.getWriter();
        request.setCharacterEncoding("GBK");

        out.println("<html>");
        out.println("<head><tilte>MainServlet</title></head>");
        out.println("<body>");
        out.println("<h3>进入聊天系统...</h3>");
        ServletContext context=getServletContext();
        Vector vc=(Vector)context.getAttribute("userlist");
        String username=request.getParameter("uname");
        System.out.println("MainServlet用户名:"+username);
        vc.add(username);
        RequestDispatcher view=request.getRequestDispatcher("MessageServlet?uname="+username);
        view.forward(request, response);
        out.println("</body>");
        out.println("</html>");
        out.close();
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        doGet(request, response);
    }
}

第三步:MessageServlet显示了一个文本框和一个命令按钮,以输入要通过聊天应用程序发送的消息

package session_test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * 发送消息
 */
public class MessageServlet extends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws
    ServletException,IOException{
        response.setContentType("text/html);charset=GBK");
        PrintWriter out=response.getWriter();
        request.setCharacterEncoding("GBK");
        out.println("<html>");
        out.println("<head><tilte>MessageServlet</title></head>");
        out.println("<body>");
        request.setCharacterEncoding("GBK");
        ServletContext context=getServletContext();
        //获取表单信息
        String usr=request.getParameter("uname");
        System.out.println("MessageServlet:用户"+usr);
        String str=request.getParameter("message");
        Vector hsh=(Vector)context.getAttribute("messagelist");
        if(str!=null){
            hsh.add(usr+":"+str);
        }
        out.println("<form method='post' action='MessageServlet? uname="+usr+"'>");
        System.out.println("MessageServlet2:用户:"+usr);
        out.println("<hr>");
        out.println("输入消息:<input type='test' name='message'/>");
        out.println("<input type='submit' value='发送'/>");
        out.println("</form>");
        out.println("<iframe frameboder=0 height=546 marginheight=0 marginwidth=0"
                + "scrolling=auto src='DisplayServlet' width='100% height='80%'");
        out.println("</iframe>");
        out.println("</body>");
        out.println("</html>");
        out.close();
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        doGet(request, response);
    }
}

第四步:DisplayServlet 显示所有的聊天消息
,UserList显示所有的聊天用户

package session_test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;
import java.util.logging.Logger;

import javax.enterprise.context.spi.Context;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * 显示用户和聊天信息
 */
public class DisplayServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws
    ServletException,IOException{
        response.setContentType("text/html);charset=GBK");
        PrintWriter out=response.getWriter();
        ServletContext context=getServletContext();
        request.setCharacterEncoding("GBK");
        out.println("<html>");
        out.println("<head>");
        out.println("<meta http-equiv='refresh' content='3' />");
        out.println("<tilte>MessageServlet</title></head>");
        out.println("<body>");
        request.setCharacterEncoding("GBK");
        out.println("内容");
        //显示聊天信息
        Vector hab=(Vector)context.getAttribute("messagelist");
        out.println("<textarea name='info' rows='30'>");
        for(int i=0;i<hab.size();i++){
            out.println(hab.get(i));
        }
        out.println("</textarea>");
        out.println("用户列表");
        out.println("<textarea name='user' rows='30'>");
        //显示用户列表
        Vector vc=(Vector)context.getAttribute("userlist");
        for(int i=0;i<vc.size();i++){
            if(vc.get(i)!=null)
                out.println(vc.get(i));
        }
        out.println("</textarea>");
        out.println("</body");
        o
ut.println("</html>");
        out.close();
    }   
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        doGet(request, response);
    }
}

第五步:在web.xml中注册这些类

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>j2ee_week06_01</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!--UserServlet  -->
     <servlet>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>session_test.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/UserServlet</url-pattern>
    </servlet-mapping>
    <!-- MainServlet -->
     <servlet>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>session_test.MainServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>MainServlet</servlet-name>
    <url-pattern>/MainServlet</url-pattern>
    </servlet-mapping>
    <!-- MessageServlet -->
     <servlet>
    <servlet-name>MessageServlet</servlet-name>
    <servlet-class>session_test.MessageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>MessageServlet</servlet-name>
    <url-pattern>/MessageServlet</url-pattern>
    </servlet-mapping>
    <!-- DisplayServlet -->
     <servlet>
    <servlet-name>DisplayServlet</servlet-name>
    <servlet-class>session_test.DisplayServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>DisplayServlet</servlet-name>
    <uepattern>/DisplayServlet</url-patterrvlet-mapping>


</web-app>

第六步:在浏览器中浏览http://127.0.0.1:7001/j2ee_week06_01/UserServlet

  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值