在JSP 中,经常使用
2023-11-21
完成本任务所用到的主要知识点:
➢ JSP 内置对象
➢ 会话跟踪技术
使用JSP 技术实现一个简易的即时的在线聊天室。
聊天至少应该包含聊天者,为了辨别说话的用户,每个用户在聊天前必须进行登录。不过可以将登录简单化,只要求用户输入一个昵称就可以了。除此之外,还应该向聊天者提供在线用户列表。所以,一个简易的在线聊天室至少应该包含用户登录、聊天和显示在线用户列表的功能。
(1)聊天室主界面布局。
聊天室主界面采用框架(Frame)进行布局,如图上机5.2 所示为本聊天室的主界面的框架图,这有点类似于QQ 群的布局。
图上机5.2 聊天室界面框架
(2)如何实现聊天功能。
可以提供一个表单供用户输入聊天消息,当用户单击“发送”按钮时就将聊天消息提交到服务器端,服务器端使用一个页面处理提交的聊天消息,使用另一个页面显示聊天消息。在处理聊天消息的页面中,首先获取聊天消息,然后将其存储在application 中;在显示聊天消息的页面中,直接从application 中获取聊天消息显示给用户。
(3)如何实现即时聊天。
即时聊天就要保证一个用户发送的聊天信息在很短的时间内让聊天室的所有用户看到,如果刷新整个聊天室就无法达到即时的效果了。既然是用框架搭建的聊天室界面,就可以只刷新个别需要刷新的页面。下面代码中加粗部分可以让页面自动刷新,content属性用于设置刷新间隔的秒数。
根据图上机5.2 所示的界面结构,聊天室应该包含4 个页面,其中需要自动刷新的页面是显示聊天内容和显示用户列表的页面,因为这两个页面是时常要变化的。显示聊天内容的页面是最需要即时的,所以将其设置为每隔1 s 刷新,而显示用户列表的页面即时性要求不高,可以设置为每隔10 s 刷新。而显示发送消息表单的页面(即发送消息的页面)只需要在用户单击“发送”按钮后再刷新,不必自动刷新。
(1)建立项目sj6_2。
(2)实现登录功能。登录功能包含两个JSP 页面,一个为登录表单页面(login.jsp),另一个为处理登录数据的页面(doLogin.jsp)。
login.jsp 页面的代码如下。
登录页面运行效果如图上机5.3 所示。
图上机5.3 聊天室登录页面
登录页面只需要输入昵称(即用户名)就可以了。处理登录数据的页面doLogin.jsp代码如下。(www.chuimin.cn)
在处理登录数据的页面中对登录用户名进行了验证,只有不为空(null 或空字符串)和没被其他用户占用的用户名才能通过验证。通过验证的用户名将同时存入session和application 中。application 中存储的是所有用户列表,而session 中存储的是当前的会话用户。
(3)聊天室主界面index.jsp。index.jsp 页面由多个页面组成,其代码如下。
index.jsp 被划分成了4 个部分,运行效果如图上机5.4 所示。
图上机5.4 聊天室首页
(4)显示网站Logo 的页面top.jsp 代码如下。
(5)显示用户列表的页面users.jsp 代码如下。
在users.jsp 中首先判断了用户是否登录(根据session 中存储的当前用户名判断),若未登录则转到登录页面。在该页面中,不仅输出了用户列表,也输出了当前用户和在线人数,并且该页面每隔10 s 自动刷新。
(6)发送消息的表单页面(发送消息页面)input.jsp 代码如下。
(7)处理聊天消息的页面doInput.jsp 代码如下。
在处理聊天消息的页面(doInput.jsp)中,实现了对用户发送的消息进行格式化(比如按照一定格式加上发送消息的用户名和时间),然后将消息存入application 中。最后又跳转回input.jsp 页面。
(8)显示聊天消息的页面message.jsp 代码如下。
在显示消息的页面(message.jsp)中,自动从application 中获取用户发送的聊天消息并显示给用户,每隔1 s 自动刷新。这样就保证了用户能即时看到自己或别人发送的聊天消息。
(9)安全退出功能。在发送消息的页面还提供了一个“安全退出”的超级链接,该链接指向的页面loginOut.jsp 就实现了安全退出的功能。loginOut.jsp 代码如下。
在loginOut.jsp 中,首先获取当前登录的用户。若获取到登录用户则从session 中和application 中存储的用户列表中删除该用户。最后重定向至登录页面。
最后将聊天室中的所有页面列出并简单说明,见表上机5.1。
表上机5.1 聊天室包含的页面
(10)运行测试。发布项目,启动Tomcat 服务器。聊天效果如图上机5.5 所示。
图上机5.5 聊天效果
有关Java Web应用开发的文章
在JSP 中,经常使用
2023-11-21
scope指定一个范围,在这个范围内JavaBean 实例的引用是可用的,实际上也是指定JavaBean 实例的作用范围。可取的值有page、request、session 和application,默认的值是page。class指定JavaBean 对象的完整的限定类名。beanName指定Bean 的名字。例6.2:
2023-11-21
完成本任务所用到的主要知识点:JSP 声明与ScriptletJSP 运行机制声明中定义的变量与Scriptlet 中定义的变量有何区别?JSP 声明用于声明变量和方法,实际上JSP 声明将会转换成Servlet 的成员变量或成员方法。建立JSP 文件test.jsp,其代码如下。在JSP 声明中定义的三个方法get()、getCurrentTime()和sayHello()方法都成为了test_jsp 类的成员方法。图上机4.10打开另一个浏览器窗口访问该JSP 页面......
2023-11-21
有参数时可以使用
2023-11-21
在ch05 项目中新建一个JSP 文件life.jsp 用于测试JSP 的生命周期。图4.9JSP 生命周期测试相应的控制台输出:第2 次请求life.jsp 页面,浏览器运行效果如图4.10 所示。图4.11JSP 生命周期测试相应的控制台输出:更改JSP 文件内容之后,第4 次请求life.jsp。图4.12JSP 生命周期测试相应的控制台输出:从测试结果不难看出,初始化方法只会在第一次请求的时候执行,若再次请求将不会执行初始化方法,而直接处理用户的请求。......
2023-11-21
out 对象实际上是PrintWriter 对象的带缓冲的版本,可以通过page 指令的buffer属性来调整缓冲区的大小,默认的缓冲区是8 kb。表5.2out 对象中与缓存区操作相关的方法out 对象针对不同的数据类型,提供了多个重载的print()和println()方法,用于输出数据。out.newLine():输出一个换行符。例5.1:out 对象使用示例。建立Java Web 项目ch06,并在WebRoot 文件夹下建立out.jsp 文件,其内容如下:发布ch06 项目,并启动Tomcat 服务器。图5.1在浏览器中查看运行效果和源代码......
2023-11-21
视频教学资源了解JSP 的起源了解JSP 技术的运行机制掌握在Eclipse 中创建JSP 文件掌握JSP 的生命周期掌握JSP 页面元素的构成请在预习前完成下列单词的学习,并将单词写在横线上。输出数组中的值2.编写一个JSP 页面实现打印九九乘法表,效果如下图所示。......
2023-11-21
问卷调查回答结果提示信息上一章详细介绍了JSP 的基本语法,已经对JSP 技术有一个初步的了解。但是应用上一章讲述的JSP 知识只能编写一部分简单的程序,如果需要实现一些比较复杂高级的功能,例如网上购物、在线聊天室等,仅靠上一章介绍的知识是明显不够的。在上一章介绍JSP 技术原理/运行机制的时候,提到在JSP 技术内部已经定义好了若干个JSP 内部对象,应用这些内部对象,可以实现很多重要的功能来简化页面的开发。......
2023-11-21
相关推荐