版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、院 系: 计算机科学学院 专 业: 软件工程 年 级: 2013级 课 程 名 称: javaee 组 号: 姓名(学号): 蔡磊(201321092107)高维珍(201321092051)蒋智琳(201321092052)李欣(201321092053) 丁其鑫(201321092099)指 导 教 师: 徐胜舟 2015年 10月 28 日年级2013级班号 03组号 专业软件工程实验名称聊天室系统实验室9#204实验目的和要求一、实验目的:(1)熟悉Java EE编程环境JDK和NetBeans的安装,配置和使用;(2)掌握Servlet的编
2、写及部署;(3)掌握Servlet的工作原理和编程接口;(4)掌握Servlet中客户端输入数据处理技术;(5)掌握Servlet中的会话跟踪技术;(5)掌握Servlet中的请求指派技术;(6)掌握Servlet上下文属性的使用方法;(7)掌握Servlet中Filter基本编程技术;(8)掌握Servlet中Listener基本编程技术;二、实验要求:利用JavaEE相关技术实现一个简单的Web聊天室系统,具体要求如下。(1)编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息。(2)编写一个Servlet程序Main.java通过请求指派来处理用户提交的登录信息
3、,如果用户名为本小组成员的名字且密码为对应的学号时,跳转到LoginSuccess显示聊天界面(类似于QQ群聊天界面,可使用HTML中的frameset标签生成两个窗口,一个用来实现用户信息输入,另一个显示所有用户聊天记录的);否则跳转到LoginFail页面,提示用户重新登录(注:此页面要包含前面的登录界面)。(3)编写两个Servlet程序,分别用来显示“信息输入”窗口和“聊天记录显示”窗口的内容;用户在“信息输入”窗口中键入聊天内容,点击“发送”按钮后,在“聊天记录显示”窗口中显示发送消息的用户名称和聊天内容。提示:利用HTML中的textarea标签来实现。(4)在登录界面上实现记住用
4、户名和密码的功能,使得当用户选择了此功能并成功登录后,在其下次登录时可以不用再输入用户名和密码即可登录。提示:此功能可通过两个Cookie来实现。以下功能选做:(5)编写一个Listener程序来监听会话的创建和销毁事件,以此统计当前在线(登录)人数,并将其显示在聊天界面上。(6)添加一个Filter对本系统所有的Servlet程序进行过滤,该Filter实现对请求和响应对象的编码格式的设置(实现此功能后,Servlet可以直接从请求对象中获取参数信息而无需实现对请求进行格式的编码)。在【GlassFish Server】视图中输出程序在Filter和其它资源之间的执行顺序。概要设计(整体流程
5、)3、 系统概要设计3.1、系统的需求分析 该系统是一个简单的聊天室,由于之前做的时候没有连接数据库所以该系统的用户名和密码都是通过代码写死的。首先用户通过输入用户名和密码登陆到聊天室窗口,如果用户的用户名和密码不对会提示用户用户名和密码不正确再次输入后登陆,登陆后用户会看到两个窗口,上面的窗口是显示输入内容,下面的窗口是用来输入对话的,对话框的内容三秒刷新一次,保证对话的最新。3.2、系统的流程图开始输入http网址登录用户和密码Y判断用户是否有效N显示聊天室主界面 退出 结束 用户通过输入ip地址,进入登录的界面,用户输入账号和密码,可
6、以根据自己的需求选择是否记住密码,、(写不完时,可另加附页。)概要设计(整体流程)3.1、系统功能图如下: 、(写不完时,可另加附页。)详细设计(算法实现)4、 系统详细设计4.1、登录界面的实现及cookie的读取 4.2、主聊天界面其主要功能的实现主聊天界面主要由三部分构成,第一部分是记录当前在线人数,通过SessionListener监听实现;第二部分则是输入框,该部分是通过Content.Java实现的;第三部分是好友发送的消息用户可以在输出框显示,已达到相互聊天的功能。第一部分源代码的实现:public class Sessi
7、onListener implements HttpSessionListener Override public void sessionCreated(HttpSessionEvent se) String current=(String)se.getSession().getServletContext().getAttribute("online"); if(current=null) current="0" int c=Integer.parseInt(current); c+; current=String.valueOf(c); se.ge
8、tSession().getServletContext().setAttribute("online",current); String his=(String)se.getSession().getServletContext().getAttribute("Counter"); if(his=null) his="0" int total=Integer.parseInt(his)+1; his=String.valueOf(total); se.getSession().getServletContext().setAttri
9、bute("Conter",his); Override public void sessionDestroyed(HttpSessionEvent se) String current=(String)se.getSession().getServletContext().getAttribute("online"); if(current=null) current="0" int c=Integer.parseInt(current); c-; current=String.valueOf(c); se.getSession()
10、.getServletContext().setAttribute("online",current); 第二部分输入框的实现,它主要包含发送、以及发送时间的实现,源代码如下所示:详细设计(算法实现)1) 发送按钮的实现:out.println("<input type="submit" align="right" name="btn_submit" value="发送" >");2) 发送内容的实现:String talkingtime = time.getTi
11、meShort();content += (request.getSession().getAttribute("username") + " " + talkingtime + "rn");content += (request.getParameter("talkingtext") + "rn");3) 发送时间的实现:public class time public static void main(String agrs) getTimeShort(); public static St
12、ring getTimeShort() String dateString = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.CHINESE).format(new java.util.Date(); return dateString; 在该部分中还实现页面跳转的功能,主要使用forward方法:request.getRequestDispatcher("webchat").forward(request, response);第三部分输入框的实现,主要使用textarea方
13、法: out.println("<table width="50%"borde="1"align="center">"); out.println("<tr><td>"); out.println("<h4>聊天信息输出</4>"); out.println("<textarea name="talkingwindow" cols="100" rows=&quo
14、t;10" style="overflow.auto">" + message + "</textarea>"); out.println("</tr></td></table>");4.3、退出功能的实现: protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException res
15、ponse.setContentType("text/html;charset=UTF-8"); request.getSession().invalidate(); PrintWriter out = response.getWriter(); try out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servl
16、et Abort</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1><center>退出成功.</center></h1>"); out.println("<a href="login.html"><center>重新登录</center></a>"); out.println("</body>"); out.println("</html>"); finallyout.close();实验结果及分析5、 实验结果分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药膳制作师班组安全评优考核试卷含答案
- 聚甲基丙烯酸甲酯(PMMA)装置操作工基础综合评优考核试卷含答案
- 重冶制团制粒工岗前执行效果考核试卷含答案
- 数据标注员创新思维评优考核试卷含答案
- 管廊运维员操作管理能力考核试卷含答案
- 高压熔断器装配工岗前行业趋势考核试卷含答案
- 2026年小学成语故事《含沙射影》是非辨析教学教案
- 2026年小学成语故事《登高望远》格局拓展教学教案
- 注册会计师CPA会计章节练习题库(含长投合并难点)
- 中级经济师经济基础知识模拟试卷与解析
- 1.1疆域 课件(共56张内嵌视频) 人教版(2024) 地理八年级上册
- 2026秋季新学期班干部聘任仪式
- 2026秋新教材统编版九年级上册道德与法治第二课 坚持以人民为中心 教案
- EN IEC 60034-30-1 完整版中文版(EN IEC 60034-30-1-2025)(能效 IE 分级标准原文 + 实操解读)
- 第7课《培养德智体美劳全面发展的社会主义建设者和接班人》课件
- 2026年高考真题-物理(四川卷) 含解析
- 广东2026公需课《加快培育发展新质生产力》题库及答案
- 2026中国国际航空股份有限公司地面服务部就业见习岗位招聘笔试历年参考题库附带答案详解
- 2025年福建福州左海新能源科技有限公司招聘笔试参考题库含答案解析
- 2025急性心梗诊疗指南
- 普外科医疗组长竞聘演讲
评论
0/150
提交评论