这里主要是ServletContext的一个特性:ServletContext是一个公共的空间,可以被所有的客户访问。由此可见ServletContext比cookie和session的作用范围要大【session,cookie,和ServletContext是Servlet中比较重要的几个对象】

用ServletContext做一个简单的聊天室的思路是:把客户欧阳凤所输入的内容,保存在ServletContext中,在客户泗溪中用ServletContext的方法,获取客户欧阳凤所输入的内容。同时,在客户欧阳凤的界面得到客户泗溪所输入的内容。

两个客户的运行时的界面如图所示:

//ClientA的代码如下:

 1 package com.qls2;
 2
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.net.URLDecoder;
 6
 7 import javax.servlet.ServletException;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 public class ClientA extends HttpServlet {
13
14
15     public void doGet(HttpServletRequest request, HttpServletResponse response)
16             throws ServletException, IOException {
17
18         response.setContentType("text/html;charset=utf-8");
19         PrintWriter out = response.getWriter();
20         String clientB = request.getParameter("sixi");
21
22 

String clientB = request.getParameter("sixi");
if (clientB!=null) {
byte[] b = clientB.getBytes("iso-8859-1");
clientB = new String(b, "utf-8");
}

out.println(clientB);

23         out.println("<h1>欧阳凤</h1>");
24         out.println("<form action='/servletContext/CreateServletContext2' method='post'>");
25         out.println("请输入:<input type='text' name='ouyangfeng'/>");
26         out.println("<input type='submit' value='发送'/>");
27         out.println("</form>");
28     }
29
30
31     public void doPost(HttpServletRequest request, HttpServletResponse response)
32             throws ServletException, IOException {
33
34         response.setContentType("text/html;charset=utf-8");
35         PrintWriter out = response.getWriter();
36         this.doGet(request, response);
37     }
38
39 }

//CreateServletContext2 的代码如下:

 1 package com.qls2;
 2 /**
 3  * 用ServletContext制作一个聊天室。
 4  */
 5 import java.io.IOException;
 6 import java.io.PrintWriter;
 7 import java.net.URLEncoder;
 8
 9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13
14 public class CreateServletContext2 extends HttpServlet {
15
16     public void doGet(HttpServletRequest request, HttpServletResponse response)
17             throws ServletException, IOException {
18
19         response.setContentType("text/html;charset=utf-8");
20         PrintWriter out = response.getWriter();
21         //获取ClientA输入的内容:
22         String clientA = request.getParameter("ouyangfeng");
23
24         this.getServletConfig().getServletContext().setAttribute("secreteriat", clientA);
25         request.getRequestDispatcher("/ReadServletContext2").forward(request, response);
26     }
27
28
29     public void doPost(HttpServletRequest request, HttpServletResponse response)
30             throws ServletException, IOException {
31
32         response.setContentType("text/html;charset=utf-8");
33         PrintWriter out = response.getWriter();
34         this.doGet(request, response);
35     }
36
37 }

//ReadServletContext2的代码如下:

 1 package com.qls2;
 2
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.net.URLDecoder;
 6
 7 import javax.servlet.ServletException;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 public class ReadServletContext2 extends HttpServlet {
13
14
15     public void doGet(HttpServletRequest request, HttpServletResponse response)
16             throws ServletException, IOException {
17
18         response.setContentType("text/html;charset=utf-8");
19         PrintWriter out = response.getWriter();
20         String str=(String) this.getServletContext().getAttribute("secreteriat");
21
22         out.println(str);
23         out.println("<h1>泗溪</h1>");
24         out.println("<form action='/servletContext/ClientA' method='post'>");
25         out.println("请输入:<input type='text' name='sixi'/>");
26         out.println("<input type='submit' value='发送'/>");
27         out.println("</form>");
28
29     }
30
31
32     public void doPost(HttpServletRequest request, HttpServletResponse response)
33             throws ServletException, IOException {
34
35         response.setContentType("text/html;charset=utf-8");
36         PrintWriter out = response.getWriter();
37         this.doGet(request, response);
38     }
39
40 }

转载于:https://www.cnblogs.com/1540340840qls/p/6187717.html

用ServletContext做一个简单的聊天室相关推荐

  1. Netty - 一个简单的聊天室小项目

     经过一段时间对Netty的学习,我们对Netty各版本以及像ProtocolBuffers等技术应用都有了不少相关的了解, 我们就用这段时间学到的只是做一个简单的聊天室的小项目来练习自己学到的技术. ...

  2. python开发一个简单的聊天室

    使用python的twisted框架编写一个简单的聊天室 下面是基本架构 基本架构图 -- coding:utf-8 -- from twisted.internet.protocol import ...

  3. 使用环信sdk做一个简单的聊天APP

    使用环信sdk做一个简单的即时聊天APP,实现简单的通讯 感悟 在很早以前就想做一个简单的即时聊天app.可能自己对即时聊天的三方SDK了解的不是特别深,在进行了一段时间的学习以后感觉自己的能力达到了 ...

  4. 前端+node实现一个简单的聊天室功能

    简单的实现一个聊天室功能 目录 前言 一.了解一下WebSocket 我们有了http协议,为什么会出现ws呢? ws出现之前,我们是怎么实现双向通信的呢? 二.使用到的websocket库 三.聊天 ...

  5. 使用Unity制作一个简单的聊天室

    使用控制台作为一个服务器,在Unity中开发客户端,制作一个简易的聊天室,无论哪个客户端发送消息,其他的客户端都会实时的显示出来. 服务器代码 using System; using System.C ...

  6. Go 实现一个简单的聊天室

    创建客户端 先在main方法中创建一个sorcket服务端,这个服务端就像一个酒店 func main() {listen, err := net.Listen("tcp", &q ...

  7. 使用netty搭建一个简单的聊天室

    1.导入maven依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all< ...

  8. python 土拨鼠库_为了应对某人的需求,写了一个简单的聊天室内容

    Python聊天室 背景 这是一篇水文,同时也是更换markdown后的第一篇,主要是为了测试markdown的情况. 服务器程序 #!/usr/bin/env python # -*- coding ...

  9. 第一个PWA程序-聊天室

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 好久没写博客了, 为了治疗懒癌, 今天我们来学习一下Google的Progressive Web App, 什么 ...

最新文章

  1. C++集成开发环境(IDE)的优点
  2. 限速会自动恢复吗_骨折会自己好吗?骨折后怎样做恢复快?
  3. SpringBoot上传图片的示例
  4. 微擎后端/知识付费阅读店铺小程序 V5.1.0 全套源码
  5. 深入理解 flex 布局以及计算_Flexbox, Layout
  6. 多方安全计算、联邦学习、可信计算 对比区别
  7. 经济学中VCG机制介绍与机制设计(mechanism design)
  8. 用python手把手教你玩跳一跳小游戏,直接打出高分
  9. 音乐铃声解析提取API接口
  10. 如何计算机内存的品牌,如何检查计算机内存模块的品牌?如何检查计算机的内存...
  11. select搜索功能实现
  12. Flex ikev2
  13. web 中怎么实现斜线表头效果?
  14. MySQL数据库(1)~~一起学习数据库冲冲冲
  15. html5的download下载标签
  16. Matlab从txt第二行开始读,MATLAB小技:从文本数据第n行开始读取
  17. 谈NANDnbsp;Flash的底层结构和解析
  18. 申宝证券-养老概念强势
  19. revit2013安装破解教程
  20. E07【餐厅】What would you recommend?

热门文章

  1. Mac开发利器之程序员编辑器MacVim
  2. wrap(),wrapAll(),wrapInner()的区别
  3. 如何在PADS里加入封装库
  4. IQD文件模板以及cs7g.ini信息
  5. 如何在Windows 10 上安装SQL Server 2000数据库?
  6. python的算法是指_Python算法的七个重要特征
  7. 用好 DIV 和 API,在前端系统中轻松嵌入数据分析模块
  8. 贝叶斯分类器详解 从零开始 从理论到实践
  9. SQL手工注入漏洞测试(Db2数据库)
  10. 清华大学宪法与行政法学学术硕士考研经验分享