servlet实现简单的聊天室
来源:互联网 发布:win8开始菜单软件 编辑:程序博客网 时间:2024/05/18 01:35
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"); out.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
0 0
- servlet实现简单的聊天室
- 简单聊天室的实现
- ICE:实现简单的聊天室
- [Golang]简单的聊天室实现
- websocket实现简单的聊天室
- Ajax+servlet实现聊天室
- 用JGROUPS实现的简单聊天室
- 用ICE实现一个简单的聊天室
- 用ICE实现一个简单的聊天室
- 聊天室刷屏的简单原理实现
- 用select实现的简单聊天室
- WebSocket实现简单的web聊天室
- WebSocket实现简单的web聊天室
- socket实现简单的多人聊天室
- Linux C实现简单的网络聊天室
- 用NodeJS实现一个简单的聊天室
- java简单Socket聊天室程序的实现
- WebSocket jfinal 实现简单的聊天室功能
- Android M 新的运行时权限开发者需要知道的一切
- 网页输出的种种bug
- 当CollapsingToolbarLayout与ToolBar如何设置Title居中
- 2017-04-09人人网鄙视题后三道原创正解,后续补分析!!!!
- jQuery事件之表单事件
- servlet实现简单的聊天室
- 使用dm-cache,将SSD用作HDD的Cache
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 优化 | 重要的MySQL开发规范都在这了
- leetcode题目:gas-station 使用start/end方法的个人理解
- 【CF GYM101341I】Matrix God 题解
- 【模式串个数匹配】+ KMP
- NYOJ 1237 最大岛屿(DFS)
- 一个止步于64强的小白对于2017年华为挑战赛的总结(java+spfa+最小代价最大流+启发式算法)