### JSP简易聊天室知识点解析 #### 一、JSP基础概述 JSP(Java Server Pages)是一种基于Java技术的动态网页技术标准。它通过在传统的静态HTML页面中嵌入Java代码片段(Scriptlets)、表达式(Expressions)以及声明部分(Declarations),使得Web页面能够动态地生成内容。JSP页面最终会被编译成Servlet类,然后由Web容器执行。 #### 二、JSP页面结构分析 在给定的JSP聊天室示例中,我们可以看到以下关键元素: 1. **声明指令(Directive)**:`<%@page contentType="text/html;charset=GBK" import="java.util.*" %>` - `contentType`: 指定了页面输出的内容类型为HTML文本,并且字符集为GBK。 - `import`: 导入了Java的实用工具包`java.util.*`,以便于在页面中使用日期等对象。 2. **HTML头部信息** - `<title>`标签定义了网页的标题。 - `<head>`标签包含了页面的一些元数据,如标题等。 3. **JSP脚本元素** - **脚本片段(Scriptlet)**: - `<% %>`之间的代码是Java代码片段,这些代码片段可以在页面执行时动态生成HTML内容。 - 示例中的脚本片段主要处理了页面缓存控制、时间显示、用户输入处理等功能。 - **表达式(Expression)**: - `<%= %>`之间的代码用于输出变量或表达式的值到页面上。 - 如`<%=application.getAttribute("chat")%>`用于输出聊天记录。 - **声明(Declaration)**: - `<%! %>`之间的代码用于声明变量或方法,但在这个例子中并未出现。 #### 三、功能实现解析 1. **缓存控制** - 为了防止浏览器缓存导致页面数据不更新,使用了以下代码控制浏览器的缓存行为: ```jsp if (request.getProtocol().compareTo("HTTP/1.0") == 0) { response.setHeader("Pragma", "no-cache"); } else if (request.getProtocol().compareTo("HTTP/1.1") == 0) { response.setHeader("Cache-Control", "no-cache"); } response.setDateHeader("Expires", -1); ``` 2. **时间显示** - 使用`java.util.Date`对象获取当前时间,并设置页面每30秒自动刷新一次来更新时间: ```jsp response.setHeader("Refresh", "30"); Date d = new Date(); out.println("" + d.toLocaleString()); ``` 3. **用户会话管理** - 使用`HttpSession`对象来保存用户的名称。如果用户未登录,则默认名称为“Guest”: ```jsp String userName = (String) session.getAttribute("userName"); if (userName == null) { userName = "Guest"; } ``` 4. **聊天记录处理** - 用户输入的聊天内容通过表单提交,并保存到`ServletContext`对象中: ```jsp String chat = request.getParameter("mychat"); String chats = (String) application.getAttribute("chat"); ``` - 当有新消息时,将新消息追加到聊天记录中,并更新到`ServletContext`: ```jsp if (chat != null) { chat = userName + "(" + d.toLocaleString() + "):" + chat; if (chats == null) { chats = chat; } else { chats = chats + "<br>" + chat; } application.setAttribute("chat", chats); } ``` 5. **表单提交** - 提供了一个简单的表单让用户可以输入聊天内容并提交: ```jsp <FORM ACTION="chat.jsp" METHOD="post"> <INPUT TYPE="TEXT" SIZE="30" NAME="mychat" VALUE=""> <INPUT TYPE="SUBMIT" name="submit" VALUE="说一句"> </FORM> ``` #### 四、总结 通过上述分析可以看出,该JSP聊天室虽然简单,但涵盖了JSP的基本语法和常用功能,包括页面缓存控制、时间显示、用户会话管理、聊天记录处理等。这对于初学者来说是一个很好的学习示例,能够帮助他们理解JSP的工作原理和开发流程。同时,这个示例也提供了一个基础框架,可以根据具体需求进行扩展和优化,比如添加更多的用户交互功能、改进用户体验等。
<html>
<head>
<title>带自动刷新的简易聊天室</title>
</head>
<body>
<center>
<%
if (request.getProtocol().compareTo("HTTP/1.0") == 0)
response.setHeader("Pragma", "no-cache");
else if (request.getProtocol().compareTo("HTTP/1.1") == 0)
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", -1);
%>
当前时间:
<%
response.setHeader("Refresh","30");
Date d=new Date();
out.println(""+ d.toLocaleString());
//使用session对象,确定当前用户名,如果不是登录用户,用户名为Guest
//也可以限制必须为登录用户,这样的话非登录用户转向登录页
String userName = (String)session.getAttribute("userName");
if (userName == null )
userName="Guest";
//使用request对象获取文本框的输入
request.setCharacterEncoding("GBK");
String chat = request.getParameter("mychat");
//使用application对象保留聊天内容,然后使用表格显示聊天内容
- 粉丝: 9
- 资源: 55
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助