JavaEE上机实验报告110.docx

上传人:b****7 文档编号:9239481 上传时间:2023-02-03 格式:DOCX 页数:17 大小:495.02KB
下载 相关 举报
JavaEE上机实验报告110.docx_第1页
第1页 / 共17页
JavaEE上机实验报告110.docx_第2页
第2页 / 共17页
JavaEE上机实验报告110.docx_第3页
第3页 / 共17页
JavaEE上机实验报告110.docx_第4页
第4页 / 共17页
JavaEE上机实验报告110.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

JavaEE上机实验报告110.docx

《JavaEE上机实验报告110.docx》由会员分享,可在线阅读,更多相关《JavaEE上机实验报告110.docx(17页珍藏版)》请在冰豆网上搜索。

JavaEE上机实验报告110.docx

JavaEE上机实验报告110

 

院系:

计算机科学学院

专业:

软件工程

年级:

2014

课程名称:

JavaEE程序设计

组号:

十九

姓名(学号):

指导教师:

2016年12月05日

年级

14

班号

 04

组号

 

  19

专业

软件工程

实验名称

Servlet编程

实验室

9#204

一、实验目的:

(1)熟悉JavaEE编程环境JDK和NetBeans的安装,配置和使用;

(2)掌握Servlet的编写及部署;(3)掌握Servlet的工作原理和编程接口;(4)掌握Servlet中客户端输入数据处理技术;(5)掌握Servlet中的会话跟踪技术;

(5)掌握Servlet中的请求指派技术;

(6)掌握Servlet上下文属性的使用方法;

(7)掌握Servlet中Filter基本编程技术;

(8)掌握Servlet中Listener基本编程技术;

二、实验要求:

1.利用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、需求分析:

随着互联网的迅速普及,以及网络技术的不断发展,人们通过网络的交流方式不断发展。

网络聊天室就是其中的一种。

聊天室的系统即使交流的方式满足了网络中多人同时交流的需要。

(1)用户登录模块:

输入用户名和密码经过登录验证即可进入聊天室进行聊天。

如果验证失败,则跳转到登录失败页面。

(2)记住密码模块:

用户在登录时,选择记住密码,正确登录后,系统自动记住用户名和密码,下次用户登录时即可直接登录,不需要输入用户名和密码。

(3)用户发言的模块:

除了提供聊天的内容输入外,还可显示当前用户正在对谁发言,完成聊天的内容输入外,通过单击“提交”按钮或者按回车按钮外,即可显示聊天的内容。

(4)在线用户列表显示模块:

其实现在线用户登陆后提示欢迎信息,并将在线用户昵称显示出来。

(5)统计系统当前在线总人数模块:

通过检测当前系统登陆用户人数,在聊天首页显示当前系统在线总人数。

 

 

 

 

 

 

 

 

4、概要设计:

系统结构示意图:

图1.系统结构示意图

 

 

 

 

 

 

 

具体解释:

(1)打开浏览器,进入网上聊天系统首页登录界面login.jsp。

输入用户名和密码,点击登陆;

(2)Main.java类获取login.jsp用户输入的用户名和密码,进行逻辑验证,验证成功则跳转到聊天界面welcome.jsp,否则跳转到登陆失败提示界面loginFail.jsp;

(3)Welcome.jsp聊天界面,其中头部界面显示当前登陆用户昵称和当前在线总人数(统计当前在线人数通过调用OnlineListener类来实现);左部为聊天好友列表界面,此处仅作展示页面,未写具体逻辑处理代码;中间主体页面main.jsp页面实现用户在聊天输入框中输入消息,发送并显示在聊天消息显示框中功能。

(实现聊天功能通过调用InputInformation.java类来实现)具体页面如下图所示:

图2.聊天主页页面

五、详细设计:

(1)用户登录功能:

输入用户名和密码经过登录验证即可进入聊天室进行聊天。

如果验证失败,则跳转到登录失败页面。

其具体核心代码如下:

StringuserName=request.getParameter("username");

StringpassWord=request.getParameter("password");

StringcheckBox=request.getParameter("save_password");

System.out.println("userName:

"+userName+"\n"+"passWord:

"+passWord);

request.getSession().setAttribute("nameSession",userName);//将用户名存入session中

String[]name_one={"柳真","刘仁杰","吴超","张浩东","陈初相"};

String[]pwd_one={"201421092073","201421092068","201421092077","201421092082","201421092119"};

Stringname_two="";

Stringpwd_two="";

booleanlogin_test=false;//登陆判定布尔值,验证成功则为true

for(inti=0;i<5;i++){

name_two=name_one[i];

pwd_two=pwd_one[i];

if(userName.equals(name_two)&&passWord.equals(pwd_two))

login_test=true;

}

登陆首页页面如下图所示:

图3.网上聊天室登陆首页

(1)记住密码功能:

此处使用两个Cookie分别获取登陆首页的用户名和密码,并存入浏览器的Cookie中,使得用户在下次登陆时,记住用户名和密码。

其核心代码如下:

if(login_test){//登陆验证成功后,将用户名和密码存入Cookie

if("save".equals(checkBox)){

//Cookie存取时用URLEncoder.encode进行编码(PS:

读取时URLDecoder.decode进行解码)

Stringname=URLEncoder.encode(userName,"UTF-8");

//创建两个Cookie对象

CookienameCookie=newCookie("username",name);

//设置Cookie的有效期为3天

nameCookie.setMaxAge(60*60*24*3);

Stringpwd=URLEncoder.encode(passWord,"UTF-8");

CookiepwdCookie=newCookie("password",pwd);

pwdCookie.setMaxAge(60*60*24*3);

response.addCookie(nameCookie);

response.addCookie(pwdCookie);

}

request.getRequestDispatcher("welcome.jsp").forward(request,response);

}

else{

response.sendRedirect("loginFail.jsp");

}

第一次登陆,选择记住密码功能,具体如下图:

图4.网上聊天室登陆首页

登陆成功后,第二次打开登陆首页页面,发现用户名和密码已被浏览器记住,具体如下图:

图5.网上聊天室再次首页

(3)统计当前系统在线人数功能:

通过调用OnlineListener类来实现,该类核心代码如下:

publicclassOnlineListenerimplementsHttpSessionListener{

publicvoidsessionCreated(HttpSessionEventarg0){

ServletContextcontext=arg0.getSession().getServletContext();

Integercount=(Integer)context.getAttribute("peopleOnline");

if(count==null){

count=1;

}else{

count++;

}

context.setAttribute("peopleOnline",count);

}

publicvoidsessionDestroyed(HttpSessionEventarg0){

ServletContextcontext=arg0.getSession().getServletContext();

Integercount=(Integer)context.getAttribute("peopleOnline");

count--;

context.setAttribute("peopleOnline",count);

}

}

IE浏览器登陆,显示在线人数1人,具体如下图:

图6.IE浏览器登陆,显示在线人数1人

谷歌浏览器登陆,显示在线人数2人,具体如下图:

图7.谷歌浏览器登陆,显示在线人数1人

 

(2)过滤所有Servlet:

使得所有页面显示字符均为UTF-8格式,即汉字正确显示,不出现乱码情况。

核心代码如下:

publicclassCodeFilterimplementsFilter{

@Override

publicvoiddestroy(){

System.out.println("destroy---CodeFilter");

}

@Override

publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)

throwsIOException,ServletException{

System.out.println("start----doFilter--CodeFilter");

HttpServletRequestrequest=(HttpServletRequest)arg0;

HttpServletResponseresponse=(HttpServletResponse)arg1;

//以上是强制内型转换,使用request对象和response对象

request.setCharacterEncoding("utf-8");//设置过滤页面提取数据的编码

response.setContentType("text/html;charset=utf-8");//设置过滤页面显示数据的编码

arg2.doFilter(arg0,arg1);//在页面跳转之前执行此语句前面的代码,执行完页面的代码之后,在执行后面的语句

System.out.println("第一个字符过滤器");

System.out.println("end------doFilter--CodeFilter");

}

@Override

publicvoidinit(FilterConfigfilterConfig)throwsServletException{

System.out.println("init----CodeFilter");

}

}

以上代码实现所有Servlet类提取和发送数据时,均以UTF-编码格式进行传输,从而实现汉字能够在客户端界面正确显示,不出现乱码情况。

 

(6)用户聊天功能:

用户在welcome.jsp聊天界面输入聊天消息,点击发送即可实现聊天功能,此处主要通过调用InputInformation.java类来实现,其核心代码如下:

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

//response.setContentType("text/html;charset=utf-8");

//此出注解是因为使用CodeFilter类过滤所有Servlet,转换编码

//request.setCharacterEncoding("utf-8");

Stringinput_textarea=request.getParameter("input_textarea");

Datenow=newDate();//创建日期对象,及系统当前时间

SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ss");//设置日期格式

Stringtime=dateFormat.format(now);//按照给定的日期格式获取系统当前时间

Stringt=(String)request.getSession().getAttribute("nameSession");//获取登陆页面用户名

chat_record+=t+""+input_textarea+""+time+"\n";//聊天记录存储

request.setAttribute("input_textarea",chat_record);//将当前聊天输入内容存储

request.getRequestDispatcher("main.jsp").forward(request,response);//跳转到当前聊天输入界面,即界面布局不变

}

下图为用户柳真用谷歌浏览器登录成功后发送一条消息,具体如下图:

图8.用户柳真登录后发送第一条消息

下图为用户刘仁杰在IE浏览器登陆后,发送一条消息,具体如下图

 

图9.用户刘仁杰登录后发送第二条消息

下图为用户吴超在360浏览器登陆后,发送一条消息,具体如下图:

图10.用户吴超登录后发送第三条消息

通过本次实验,主要存在的问题是如何实现用Servlet获取页面表单用户输入的用户名和密码,以及如何使用Cookie来获取和存储用户名和密码并实现浏览器记住用户名和密码的功能;其次,最重要的一点是通过使用Servlet获取用户聊天输入的信息,并显示在聊天显示框中,实现用户聊天的功能,在实现这一功能中,我们小组通过查阅书籍以及查看网上博客资料,最终成功解决了这一问题。

并实现系统记录当前在线总人数以及过来所有Servlet类,完全实现了实验一所有要求。

(1):

张浩东负责编写登录页面代码。

(2):

吴超负责编写登录成功和失败两个页面。

(2):

柳真编写Main.java(Servlet类)通过请求指派来处理login.jsp页面用户提交的登录信息(并使用Cookie实现记住用户登录用户名和密码功能),成功则跳转到welcome.jsp,失败则跳转到loginFail.jsp。

(3):

陈初相和刘仁杰负责编写InputInformation.java(Servlet类)通过请求指派获取main.jsp聊天输入框中输入信息,跳转到main.jsp页面,并在聊天记录显示框中显示聊天信息。

柳真:

 

吴超:

 

刘仁杰:

 

张浩东:

 

陈初相:

 

 

教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1