JSP在线聊天室的设计.doc_第1页
JSP在线聊天室的设计.doc_第2页
JSP在线聊天室的设计.doc_第3页
JSP在线聊天室的设计.doc_第4页
JSP在线聊天室的设计.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南林业科技大学中南林业科技大学 实训报告实训报告 设计名称 JSP 聊天室 专业班级 09 级计算机科学与技术 对口 1 班 系 院 计算机与信息工程学院 设计时间 2012 年上半学期 11 18 周 设计地点 电子信息楼 609 网站建设与管理实训 2 jspjsp 在线聊天室在线聊天室 引言 网上聊天室是网络用户最喜欢的 Web 应用程序 借助聊天室 用户可以即 时地互通信息 交流思想 聊天室程序设计根据需求的不同可繁可简 本系统 实现的是一个具有简易功能的聊天室 是使用 JSP 技术开发的动态网站 系统 开发的任务主要包括前台界面设计和后台数据库管理系统设计 本系统采用 JSP 作为开发工具 后台数据库采用 SQL server 数据库设计 利用 SQL server 数据库访问技术实现对数据库的各种管理操作 实现聊天室的 聊天功能和显示在线聊天用户信息等功能 网站建设与管理实训 3 目录 1 网站建设目的及网站类型定位网站建设目的及网站类型定位 4 4 1 1 网站建设目的 4 1 2 网站类型定位 4 2 可行性分析可行性分析 4 4 2 1 技术可行性分析 4 2 2 经济可行性分析 5 2 3 社会因素可行性分析 5 3 3 需求分析需求分析 5 5 4 系统概要设计系统概要设计 6 6 4 1 系统功能模块图 6 4 2 系统流程图 7 4 3 数据库逻辑结构设计 8 4 4 数据库表 ER 图 9 5 5 系统需要解决的主要问题系统需要解决的主要问题 1010 6 6 系统前台模块设计系统前台模块设计 1010 6 1 用户登录模块 10 6 2 用户注册模块设计 14 6 3 聊天者发言模块设计 17 6 4 查看聊天信息 20 6 5 文件上传 21 6 6 文件下载 22 6 7 音乐播放器 23 7 7 系统后台管理模块系统后台管理模块 2424 7 1 后台登录 24 7 1 后台用户管理模块 25 7 2 聊天记录管理模块 29 7 3 公告管理模块 30 8 逻辑控制模块的设计逻辑控制模块的设计 3535 9 系统的测试和维护系统的测试和维护 3535 10 JSPJSP 在线聊天室测试在线聊天室测试 3535 结结 束束 语语 3535 谢谢 辞辞 3636 网站建设与管理实训 4 参考文献参考文献 3636 网站建设与管理实训 5 1 网站建设目的及网站类型定位网站建设目的及网站类型定位 1 1 网站建设目的网站建设目的 随着 Internet 的普及和宽带网络技术的成熟 越来越多的用户进入到网络 世界中享用浏览新闻 查询信息 发送邮件 在线观看电影等服务 享受网络 带来的便利和办公的高效 与此同时 一个新型的 Web 应用程序为网民之间提 供了一个即时互通信息的功能和场所 这就是聊天室 聊天室在网络早期就开始盛行了 不论是 BBS IRC 都有类似的网上聊天机 制 聊天室为网友提供了实时对话的渠道 是网络上极为流行的一种服务 聊天室适用于网上会议或闲聊的场合 聊天室为网友提供了较好的交友环 境 网友之间互相以文字交谈 在形式上类似笔友的性质 却大大节省了书信 往返的时间 1 2 网站类型定位网站类型定位 网上聊天系统网站 2 可行性分析可行性分析 可行性分析是依据初步调查的结果作出系统开发可行性与否的结论的过程 可行性分析是从技术可行性 经济可行性和运行可行性三个方面考虑的 论证 系统开发是否可行 2 1 技术可行性分析技术可行性分析 为实现系统目标 需要技术保证 此系统开发所需要的技术主要有计算机 硬件 软件技术 系统开发人员的水平 用户管理与使用的能力等 通过比较 ASP 和 JSP 这两种传统的动态网页制作技术 觉得 JSP 具有明显 的优势 1 作为 Java 平台的一部分 JSP 拥有 Java 编程语言 一次编写 到处 运行 的特点 一次写入之后 可以运行在任何具有符合 Java 语法结构的环境 中 取代过去单一开发 而 ASP 主要工作环境是微软的 IIS 应用程序 又因 Activex 对象具有平台特性 所以 ASP 技术不能很容易的实现跨平台的 服务器的工作 2 ASP 仅支持组建对象模型 COM 而 JSP 技术提供的组建都是基于 JavaBean 技术或 JSP 标签库 除此之外 JSP 还有组件的可重用性 标签的可 扩充性和易于维护等特点 如上的分析比较不难看出 JSP 技术编写的程序运用要更加灵活 可扩展 性更强 在现有技术条件下 能够完成功能目的 鉴于以上分析 系统开发在技术上是完全可行的 2 2 经济可行性分析经济可行性分析 本系统开发在软件方面主要使用了 JSP 网站设计技术 网站建设与管理实训 6 Dreamweaver MyEclipse sql server 后台数据库等软件 这些均可在网上 下载获得 注册码且不涉及商业盈利问题 因此 在经济方面可行 2 3 社会因素可行性分析社会因素可行性分析 本系统仅作为实习项目而提出 不会违反相关法律法规 且本系统能保证 在当前的操作环境下正常运行 Jsp 在线聊天室 实现了一对一 一对的多 多对 多的聊天 非常方便 综上所述 系统开发完全可行 3 3 需求分析需求分析 这是一个具有最简单功能的聊天室 通过该聊天室 用户可以通过设置不 同的用户名和密码以各种不同的身份进入聊天室 用户可以在聊天室中发送信 息 也可以和指定的聊天对象用户私聊 还可以对发送的信息进行动作 颜色 等方面的限制 还应具有当有新用户进入聊天室时 实时更新在线用户的功能 聊天室的特点就是要求能够实时显示出聊天者所谈的内容 即在同一个聊 天室的使用者 可以在短时间内立刻看到其他聊天者的发言 作为用户喜欢的 Web 应用程序 出了具有能够实时显示出聊天者所谈论的内容外 还应具有以 多种方式发布信息的功能 JSP 正好可以满足聊天室的这种要求 它可以快速 地创建和显示 Web 页面的动态内容 总的来说 本聊天室主要实现了以下的功能 用户输入帐号 密码登录聊天室 把用户的聊天信息写入数据库 新用户可以注册 用户聊天室可以选择聊天对象 私聊 群聊 聊天室不断地对数据库进行刷新 读取 实时更新在线的用户 4 系统概要设计系统概要设计 4 1 系统功能模块图系统功能模块图 Jsp 在线聊天室 用 户 登 陆 用 户 退 出 聊 天 发 言 显 示 聊 天 信 息 显 示 在 线 用 户 用 户 注 册 网站建设与管理实训 7 网站建设与管理实训 8 4 2 系统流程图系统流程图 开始 用户登陆 帐号判断 帐号错误 提示从 新输入 或注册 帐号正确 张却 显示聊天内容 结束 网站建设与管理实训 9 5 系统需要解决的主要问题系统需要解决的主要问题 在规划设计聊天室时 首先要确定好谈话内容存储方式 JSP 可以用三种 形式实现聊天内容的存取 1 用全局变量 Application 和 Session 对象实现 这种形式速度快 效果 好 但较消耗系统资源 2 用读写数据库的方法实现 这种方法相对简单 但会使数据库负担重 本系统采用的就是该方法 本设计选择了 sql server 数据库来存储谈话内容 3 用读写文本文件方法 该方法适合简单的聊天室 另一个设计聊天室时要考虑的因素就是聊天室成员的动态刷新 6 系统前台模块设计系统前台模块设计 6 1 用户登录模块用户登录模块 本系统需注册 输入用户名和密及即可 登录成功后 显示在线用户列表 可以发送信息 在线用户表中增加刚才登录的当前用户的名字 如图所示 图 6 1 用户登录界面 其代码为 1 2 欢迎来到HH聊天室 3 4 5 6 网站建设与管理实训 10 7 用户名 8 密码 9 记住用户名 10 自动登录 11 12 13 14 15 16 用户从登陆页面进入聊天室时 如果登录失败则显示出错原因 图 6 2 用户名或密码为空 从界面获取数据 将数据封装在 UserVo 中 将 UserVo 作为一个整体的对象传 递给 Dao 层 在其 Dao 层 根据传递过来的数据从数据库中进行查找 如果数 据库中存在 刚登录 成功 否则提示登录 错误 实现登录界面验证的相关代码为 user action 1 public void login HttpServletRequest request HttpServletResponse response throws ServletException IOException 2 UserVo user new UserVo 3 String user name new String request getParameter loginname getBytes ISO 8859 1 utf 8 4 user setUser name user name 5 user setUser pwd request getParameter loginpwd 6 try 网站建设与管理实训 11 7 int usertype service queryUser user 8 if usertype 0 9 java util Date nowdate new java util Date 10 String chattime nowdate toLocaleString 11 InOnLineUserVo vo new InOnLineUserVo 12 vo setUsername user name 13 vo setChatroom 1 14 vo setLogintime chattime 15 request getSession setAttribute username user getUser name 16 request getSession setAttribute usertype usertype 17 response sendRedirect frame jsp 18 int flag service add onlineuser vo 19 return else Login jsp 20 response getWriter println alert 登录失败 location index jsp 1 ii catch Exception e 1 e printStackTrace UserDao 对应的代码为 public int queryUser UserVo user TODO Auto generated method stub Connection conn ConnTools conn int count 0 try PreparedStatement stmt conn prepareStatement Constants QUERY USER stmt setString 1 user getUser name stmt setString 2 user getUser pwd ResultSet rs stmt executeQuery if rs next count 1 catch SQLException e TODO Auto generated catch block 网站建设与管理实训 12 e printStackTrace finally ConnTools close conn return count 验证成功后进入到的主界面 图 6 3 聊天室主界面 系统的主界面是一个框架页面 frame jsp 定义如下 1 2 3 4 5 6 7 8 9 10 11 12 13 浏览器不支持框架多页面显示 建议使用IE v4 0以上版本 谢谢你的支持 14 网站建设与管理实训 13 15 16 此框架页面由四部分组成 左边的框架 用来显示各种功能 打开的网页文件 为 left jsp 上面的框架 用来显示欢迎聊天者进来聊天 打开的网页文件为 head jsp 中间框架 其本身是一个 frame 框架 为发送 接收信息 打开的网页文 件 为 send jsp receive jsp 右边的框架 用来显示所有在线聊天用户的信息 打开的网页文件为 right jsp 6 2 用户注册模块设计用户注册模块设计 该模块的主要作用是实现用户注册 当用户输入注册信息内容时 系统会 根据用户输入的内容通过 ajax 进行验证 验证成功后 提示用户注册 成功 否刚提示注册失败 返回到登录 界面 用户注册页面 实现用户注册的及 ajax 验证的相关代码为 创建 XHR function createXHR var XHR if window XMLHttpRequest XHR new XMLHttpRequest 非IE 网站建设与管理实训 14 else if window ActiveXObject try XHR new ActiveXObject Msxml2 XMLHTTP 新 的IE catch e XHR new ActiveXObject Microsoft XMLHTTP 旧的IE return XHR 通过编码查询 function getValue loginname var loginname document f loginname value 获取XHR对像 var XHR createXHR alert XHR var url user do method validate User XHR open get url true var span document getElementById span 通过回调函数监听与服务端通信的状态 onreadystatechange XHR onreadystatechange function if XHR readyState 4 if flag 0 span innerHTML 用户名已 存在 else span innerHTML 用户名可 用 网站建设与管理实训 15 span style display block XHR send null function validate Pwd var password document f loginpwd value var password 1 document f loginpwd1 value var span pwd document getElementById span pwd if password password 1 span pwd innerHTML 俩次密码不同 else span pwd innerHTML 密码验证通过 span pwd style display block function validate email mail var reg a zA Z0 9 a zA Z0 9 a zA Z0 9 2 3 1 2 if reg test mail span email innerHTML 邮箱 验证通过 else span email innerHTML 邮箱 格式不正确 span email style display block 用户注册 网站建设与管理实训 16 用户名 密码 确认密码 邮箱 性别 男 女 网站建设与管理实训 17 6 3 聊天者发言模块设计聊天者发言模块设计 该模块的主要作用是实现聊天者以各种表情 各种身份 不同颜色的文字 对不同的用户发送聊天信息 当用户以正确的用户名和密码登录聊天室后就可 以通过聊天者发言的功能 发送聊天信息 实现发言功能的程序为 send jsp 其相关代码为 int wordslen 0 String linewords Vector chatwords Vector application getAttribute chatwords String fontcolor request getParameter fontcolor String photo request getParameter photo if fontcolor null fontcolor black if photo null photo 0 if chatwords null chatwords new Vector application setAttribute chatwords chatwords else String user1 request getParameter user if user1 null String words request getParameter words if words null wordslen words length 网站建设与管理实训 18 if wordslen 0 String act request getParameter act String talkto new String request getParameter talkto getBytes iso8859 1 utf 8 int i act indexOf B if i 1 act act substring 0 i talkto act substring i 1 if photo equals 0 linewords user1 act words else linewords user1 act words byte temp linewords getBytes iso8859 1 linewords new String temp chatwords add linewords 对象 说话 请问 喝采 微笑 躲避 颜 色 贴图 微笑 大笑 爆笑 甜笑 信息 6 4 查看聊天信息查看聊天信息 用户点击左边的聊天信息图片 就会显示出该用户所有的聊天信息 查看聊天信息记录 其采用的思路为 根据界面 获取的用户名 将用户名传递给数据库 在数 据库查找出对应的聊天记录 存储在 session 中 再在界面能过标签取出 网站建设与管理实训 20 相应的聊天记录 下面为数据库中查询的数据代码 MsgInfoDao 1 public List show msgInfo bymsgfrom String msgfrom 2 Connection conn ConnTools conn 3 MsgInfoVo vo null 4 List list new ArrayList 5 try PreparedStatement stmt conn prepareStatement Constants SHOW MSGINFO BYMSGFROM 6 stmt setString 1 msgfrom 7 ResultSet rs stmt executeQuery 8 while rs next 9 vo new MsgInfoVo 10 vo setRownum rs getInt rownum 11 vo setChatroom rs getString chatroom 12 vo setMsgfrom rs getString msgfrom 13 vo setMsgto rs getString msgto 14 vo setMsgcontent rs getString msgcontent 15 vo setMsgtime rs getString msgtime 16 list add vo 17 18 catch SQLException e 19 TODO Auto generated catch block 20 e printStackTrace 21 return list 网站建设与管理实训 21 6 5 文件上传文件上传 采用的 Struts2 框架模式 通过界面选择的上传文件提交到 upload action 中 进行处理 文件 上传的页面 其相关代码为 upload action public class UploadAction extends ActionSupport private File upload 上传文件 private String uploadFileName 上传的文件名 public File getUpload return upload public void setUpload File upload this upload upload public String execute throws Exception HttpSession session ServletActionContext getRequest getSession session setAttribute filename uploadFileName TODO Auto generated method stub InputStream is new FileInputStream getUpload 根据上传的文件得到输入流 OutputStream os new FileOutputStream E jsp实训 chatRoom WebRoot upload uploadFileName 指定输出流地址 byte buffer new byte 1024 int count 0 while count is read buffer 0 os write buffer 0 count 把文件写到指 网站建设与管理实训 22 定位置的文件中 os close 关闭 is close return SUCCESS 返回 public String getUploadFileName return uploadFileName public void setUploadFileName String uploadFileName this uploadFileName uploadFileName 6 6 文件下载 文件下载 该功能是将用户提交了的相关文件可以下载到用户指定的位置 方便用户 对文件资源的使用 采用链接到用户选择的文件进行下载 网站建设与管理实训 23 6 7 音乐播放器音乐播放器 用户点击左边的播放器按钮 就会弹出该页面 供用户听音乐 该播放 器采用 frame 框架构成 可以让用户选择相关的音乐 其相关的代码 Form name myform 网站建设与管理实训 24 7 7 系统后台管理模块系统后台管理模块 7 1 后台登录后台登录 登录界面 7 1 后台用户管理模块后台用户管理模块 显示所有在线用户 管理员可以将相关的人员删除 使其不在聊天室里 用户管理界面 其界面通过调用 Dao 层的查询在线用户信息方法 将查询出的数据封装 在 List 中 使其界面采用 C 标签循环取出 将内容 显示在动态 列表中 其界面 代码为 网站建设与管理实训 25 body background image kk jpg 后台管理平台 用户管理 聊天记录管理 公告管理 退出系统 用户名 所在聊天室 登录时间 从List中取出数据 动态添加列表 list rownum list user name list chat room list login time 显示 分页信息 首页 上一页 下一页 尾页 总共 maxRowCount 行每页显 示 rowsPrePage 行总共 maxPage 页 当前为 curPage 页 调用对应 的相关ManageAction 代码 显示在线用户信息 public void showUserinfo HttpServletRequest request HttpServletResponse response int jumpPage Integer parseInt request getParameter jumpPage 网站建设与管理实训 27 System out println jumpPage jumpPage PageBean page new PageBean page setRowsPrePage 5 5 page setMaxRowCount service getCount page setMaxPage 1 1 if jumpPage page getMaxPage page setCurPage page getMaxPage else 设置当前页码数据 page setCurPage jumpPage List list service show ALL USER page getCurPage page getRowsPrePage request setAttribute userinfo list request setAttribute curPage page getCurPage request setAttribute maxPage page getMaxPage request setAttribute maxRowCount page getMaxRowCount request setAttribute rowsPrePage page getRowsPrePage try request getRequestDispatcher admin jsp forward request response catch ServletException e TODO Auto generated catch block e printStackTrace catch IOException e TODO Auto generated catch block e printStackTrace 网站建设与管理实训 28 删除在线用户信息 public void delOnlineInfo HttpServletRequest request HttpServletResponse response TODO Auto generated method stub System out println StuAction delStuinfo String user name request getParameter user name System out println user name user name 删除指定的数据 int flag service delOnlineUser user name System out println flag String msg if flag 0 删除成功 返回到显示的页面 msg 数据删除成功 else 删除失败 msg 数据删除失败 request setAttribute msg msg try 多次请求 request getRequestDispatcher Manager do method showUserinfo catch ServletException e TODO Auto generated catch block e printStackTrace catch IOException e TODO Auto generated catch block e printStackTrace 网站建设与管理实训 29 7 2 聊天记录管理模块聊天记录管理模块 显示各个用户的聊天信息 发送时间 管理员可以将聊天信息进行删除 聊天记录管理界面 其相关代码 MsgInfoAction public void delMsginfo HttpServletRequest request HttpServletResponse response TODO Auto generated method stub int rownum new Integer request getParameter rownum 删除指定的数据 int flag service del msgInfo rownum String msg if flag 0 删除成功 返回到显示的页面 msg 数据删除成功 else 删除失败 msg 数据删除失败 request setAttribute msg msg 网站建设与管理实训 30 try 多次请求 request getRequestDispatcher msginfo do method showMsginfo catch ServletException e TODO Auto generated catch block e printStackTrace catch IOException e TODO Auto generated catch block e printStackTrace 7 3 公告管理模块公告管理模块 管理员可以添加相关公告 添加的公告内容将在前台显示 也可以将相关 的公告进行删除 公告的内容及时显示到前台的 JSP 页面代码为 function delete publiser rownum var url Publiser do method delPubliserinfo window location url 网站建设与管理实训 31 base href My JSP Manager jsp starting page 后台管理平台 用户管理 聊天记录管理 公告管理 退出系统 网站建设与管理实训 32 公告内容 操作 list rownum list p name 请输入公告的内容 调用的 PubliserAction 代码为 public void delPubliserinfo HttpServletRequest request HttpServletResponse response TODO Auto generated method stub 网站建设与管理实训 33 int rownum new Integer request getParameter rownum 删除指定的数据 int flag service del publiser rownum String msg if flag 0 msg 数据删除成功 else 删除失败 msg 数据删除失败 request setAttribute msg msg try 多次请求 request getRequestDispatcher Publiser do method showPubliserinfo forward request response catch ServletException e TODO Auto generated catch block e printStackTrace catch IOException e TODO Auto generated catch block e printStackTrace 添加公告信息 public void addPubliserinfo HttpServletRequest request HttpServletResponse response throws ServletException IOException String p name new String request getParameter content getBytes ISO 8859 1 utf 8 String p user request getSession getAttribute username toString PubliserVo vo new PubliserVo vo setP name p name vo setP user p user 网站建设与管理实训 34 int flag service add publiser vo String msg if flag 0 msg 数据添加成功 else msg 数据添加失败 request setAttribute msg msg try 多次请求 request getRequestDispatcher Publiser do method showPubliserinfo forward request response catch ServletException e TODO Auto generated catch block e printStackTrace catch IOException e TODO Auto generated catch block e printStackTrace 网站建设与管理实训 35 8 逻辑控制模块的设逻辑控制模块的设计计 该系统采用 JSP Servlets MVC 设计模式 文件上传部分采用 Struts2 框架 采用 Orcal 数据库 Jsp 负责所的页面 Servlet 负责处理页面和 action 中的桥接 Action 则对从页面的获取的相关数据传送给后台 同时 也将后台处理后的结果返回到页面 Dao 则处理根据页面传递的数据进行相 关的对数据库的操作 同时将操作后的结果 返回给 Action Service 则是在 Action 和 Dao 之间的一个桥接 防止耦合 Vo 是封装所有页面表单的数据 Common 用于解析 XML 配置文件 连接数据库 封装所有的数据库操作语句 9 系统的测试和维护系统的测试和维护 对系统测试主要包括一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论