JavaEE实验报告1091Word下载.docx
《JavaEE实验报告1091Word下载.docx》由会员分享,可在线阅读,更多相关《JavaEE实验报告1091Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
03
组号
专业
软件工程
实验名称
聊天室系统
实验室
9#204
实
验
目
的
和
要
求
一、实验目的:
(1)熟悉JavaEE编程环境JDK和NetBeans的安装,配置和使用;
(2)掌握Servlet的编写及部署;
(3)掌握Servlet的工作原理和编程接口;
(4)掌握Servlet中客户端输入数据处理技术;
(5)掌握Servlet中的会话跟踪技术;
(5)掌握Servlet中的请求指派技术;
(6)掌握Servlet上下文属性的使用方法;
(7)掌握Servlet中Filter基本编程技术;
(8)掌握Servlet中Listener基本编程技术;
二、实验要求:
利用JavaEE相关技术实现一个简单的Web聊天室系统,具体要求如下。
(1)编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息。
(2)编写一个Servlet程序Main.java通过请求指派来处理用户提交的登录信息,如果用户名为本小组成员的名字且密码为对应的学号时,跳转到LoginSuccess显示聊天界面(类似于QQ群聊天界面,可使用HTML中的frameset标签生成两个窗口,一个用来实现用户信息输入,另一个显示所有用户聊天记录的);
否则跳转到LoginFail页面,提示用户重新登录(注:
此页面要包含前面的登录界面)。
(3)编写两个Servlet程序,分别用来显示“信息输入”窗口和“聊天记录显示”窗口的内容;
用户在“信息输入”窗口中键入聊天内容,点击“发送”按钮后,在“聊天记录显示”窗口中显示发送消息的用户名称和聊天内容。
提示:
利用HTML中的textarea标签来实现。
(4)在登录界面上实现记住用户名和密码的功能,使得当用户选择了此功能并成功登录后,在其下次登录时可以不用再输入用户名和密码即可登录。
此功能可通过两个Cookie来实现。
以下功能选做:
(5)编写一个Listener程序来监听会话的创建和销毁事件,以此统计当前在线(登录)人数,并将其显示在聊天界面上。
(6)添加一个Filter对本系统所有的Servlet程序进行过滤,该Filter实现对请求和响应对象的编码格式的设置(实现此功能后,Servlet可以直接从请求对象中获取参数信息而无需实现对请求进行格式的编码)。
在【GlassFishServer】视图中输出程序在Filter和其它资源之间的执行顺序。
概
设
计
(
整
体
流
程
)
3、系统概要设计
3.1、系统的需求分析
该系统是一个简单的聊天室,由于之前做的时候没有连接数据库所以该系统的用户名和密码都是通过代码写死的。
首先用户通过输入用户名和密码登陆到聊天室窗口,如果用户的用户名和密码不对会提示用户用户名和密码不正确再次输入后登陆,登陆后用户会看到两个窗口,上面的窗口是显示输入内容,下面的窗口是用来输入对话的,对话框的内容三秒刷新一次,保证对话的最新。
3.2、系统的流程图
Y
N
用户通过输入ip地址,进入登录的界面,用户输入账号和密码,可以根据自己的需求选择是否记住密码,
、
(写不完时,可另加附页。
3.1、系统功能图如下:
详
细
算
法
现
4、系统详细设计
4.1、登录界面的实现及cookie的读取
4.2、主聊天界面其主要功能的实现
主聊天界面主要由三部分构成,第一部分是记录当前在线人数,通过SessionListener监听实现;
第二部分则是输入框,该部分是通过Content.Java实现的;
第三部分是好友发送的消息用户可以在输出框显示,已达到相互聊天的功能。
第一部分源代码的实现:
publicclassSessionListenerimplementsHttpSessionListener{
@Override
publicvoidsessionCreated(HttpSessionEventse){
Stringcurrent=(String)se.getSession().getServletContext().getAttribute("
online"
);
if(current==null){
current="
0"
;
}
intc=Integer.parseInt(current);
c++;
current=String.valueOf(c);
se.getSession().getServletContext().setAttribute("
current);
Stringhis=(String)se.getSession().getServletContext().getAttribute("
Counter"
if(his==null){
his="
inttotal=Integer.parseInt(his)+1;
his=String.valueOf(total);
Conter"
his);
publicvoidsessionDestroyed(HttpSessionEventse){
c--;
}
第二部分输入框的实现,它主要包含发送、以及发送时间的实现,源代码如下所示:
1)发送按钮的实现:
out.println("
<
inputtype=\"
submit\"
align=\"
right\"
name=\"
btn_submit\"
value=\"
发送\"
>
"
2)发送内容的实现:
Stringtalkingtime=time.getTimeShort();
content+=(request.getSession().getAttribute("
username"
)+"
"
+talkingtime+"
\r\n"
content+=(request.getParameter("
talkingtext"
3)发送时间的实现:
publicclasstime{
publicstaticvoidmain(Stringagrs[]){
getTimeShort();
publicstaticStringgetTimeShort(){
StringdateString=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,Locale.CHINESE).format(newjava.util.Date());
returndateString;
}
在该部分中还实现页面跳转的功能,主要使用forward方法:
request.getRequestDispatcher("
webchat"
).forward(request,response);
第三部分输入框的实现,主要使用textarea方法:
out.println("
tablewidth=\"
50%\"
borde=\"
1\"
align=\"
center\"
>
tr>
td>
h4>
聊天信息输出<
/4>
textareaname=\"
talkingwindow\"
cols=\"
100\"
rows=\"
10\"
style=\"
overflow.auto\"
+message+"
/textarea>
/tr>
/td>
/table>
4.3、退出功能的实现:
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("
text/html;
charset=UTF-8"
request.getSession().invalidate();
PrintWriterout=response.getWriter();
try{
!
DOCTYPEhtml>
html>
head>
title>
ServletAbort<
/title>
/head>
body>
h1>
center>
退出成功...<
/center>
/h1>
ahref=\"
login.html\"
重新登录<
/a>
/body>
/html>
}finally{out.close();
}}
结
果
及
分
析
5、实验结果分析
5.1、登录界面
5.2、主聊天界面
5.3、主聊天界面2
5.4、退出界面
组
内
工
毕建权主要指导组员怎么去做和最后的实验报告的编写;
高维珍、李欣负责登录界面的记住密码功能和跳转界面;
蒋智琳、丁其鑫负责聊天界面。
心
得
会
毕建权:
高维珍:
蒋智琳:
李欣:
丁其鑫:
成
绩
评
定
教师签名:
年月日