一、有关聊天室
网上的聊天室比比皆是,在凡上过网的不知道聊天室的应该不多。从技术角度看,聊天室所需要处理的是这样三种信息:
- 当前用户
- 各聊天室中的在线用户
- 各聊天室中用户发出的聊天信息
二、有关我们的程序
在这里,我们将提供一个聊天室的简单的JSP程序。我们的程序是按照JSP Model 2的规范来实现的。简而言之,就是我们将绝大多数处理用户请求的任务交给Servlet来执行,而我们的JSP仅仅是用来完成显示。
在阅读我们的程序之前,你最好已经具备了Java和JSP的基础知识,但是如果你对Java和JSP不是太熟悉,你也可以直接阅读我们的程序,对于每一项涉及到Java和JSP的内容,在我们的程序中第一次出现时,我们会作简要的说明。
当然,你还是需要阅读其他的相关教程,因为我们的这篇文章毕竟不是一个教程。
此外,我们的聊天室是挂接在另一个应用系统上的,对于其中一些特殊的命令方法,你可以不必太介意。
三、用户登录
3.1保存用户信息的数据库
作为一个聊天室,你需要永久性地保存一些有关用户的信息。这时,你最好使用数据库来完成。
在我们的数据库中建立了一个表:x_yyxtyh以保存用户的信息:
CREATE TABLE x_yyxhyh (
id_swgzry char(6),/*用户ID*/
id_swjg char(10),/*该字段对本聊天室无意义*/
name_swgzry char(8),/*用户名*/
yyxtyhkl char(30),/*用户口令*/
sfks char(1)/*该字段对本聊天室无意义*/
);
|
3.2一个说明用户的类
oneUser.java:
package customers;
import java.util.*;
public class oneUser
{String oneUserId;/*用户ID*/
String oneUserName;/*用户名*/
long oneUserTime;/*用户时间*/
String oneUserPosion;/*用户位置*/
String oneUserSwjg;/*该属性对本聊天室无用*/
String oneUserSfks;/*该属性对本聊天室无用*/
int retimeUser[]=new int[3];/*用户在各聊天室中用户列表自动刷新时间*/
int retimeChat[]=new int[3];/*用户在各聊天室中聊天信息自动刷新时间*/
public void setOneUser(String thisOneUserId,String thisOneUserName,
long thisOneUserTime,String thisOneUserPosion,String thisOneUserSwjg,
String thisOneUserSfks)
//新用户设定
{oneUserId=thisOneUserId;
oneUserName=thisOneUserName;
oneUserTime=thisOneUserTime;
oneUserPosion=thisOneUserPosion;
oneUserSwjg=thisOneUserSwjg;
oneUserSfks=thisOneUserSfks;
retimeUser[1]=20;
retimeChat[1]=20;
retimeUser[2]=20;
retimeChat[2]=20;
}
public void setPosition(String thisOneUserPosion)
//用户位置设定
{oneUserPosion=thisOneUserPosion;
}
public void setUserTime(long thisOneUserTime)
//用户时间设定
{oneUserTime=thisOneUserTime;
}
public void setRetimeUser(int thisRetimeuser,int intchatroom)
//用户列表自动刷新时间设定
{retimeUser[intchatroom]=thisRetimeuser;
}
public void setRetimeChat(int thisRetimechat,int intchatroom)
//聊天信息自动刷新时间设定
{retimeChat[intchatroom]=thisRetimechat;
}
public String getUserId()
//获取用户ID
{return oneUserId;
}
public String getUserName()
//获取用户名
{return oneUserName;
}
public long getUserTime()
//获取用户时间
{return oneUserTime;
}
public String getUserPosion()
//获取用户位置
{return oneUserPosion;
}
public String getUserSwjg()
//该方法对本聊天室无用
{return oneUserSwjg;
}
public String getUserSfks()
//该方法对本聊天室无用
{return oneUserSfks;
}
public int getRetimeUser(int intchatroom)
//获取用户在某聊天室中用户列表刷新时间
{return retimeUser[intchatroom];
}
public int getRetimeChat(int intchatroom)
//获取用户在某聊天室中聊天信息刷新时间
{return retimeChat[intchatroom];
}
}
|
事实上,这是一个典型的Java类的声明。按照Java的某种可能算是极端的观念:世间万物都是类。让我们跟随这段源代码来看看如何申明一个Java类。
首先,第一行是“package customers;”,这一行用来说明这个类所隶属的包。在我们的程序中,我们的包的名字是customers,包是一种命名和可视控制的机制,而其最基本的作用应该是一种命名机制。“包名.类名”将唯一对应一个特定的类的声明。
第二行是“import java.util.*;”,import语句必须在package语句之后(如果有的话),而必须在任何类定义之前,import语句的一般格式是import p1[.p2].(classname|*),这里,p1是顶层包名,p2是下一层包名,其间用点号“.”隔开。除了文件系统的限制外,对包的层次深度没有限制。最后,指定一个显式的classname或星号“*”,其指示Java编译器应该引入整个包。通过import语句引入的某些类或整个包将变得可见。说得通俗一点,就是在引用相应的类时,你可以直接使用类名,而不必使用“包名.类名”的格式。
从“public class oneUser”开始我们声明了一个名为oneUser的类。在其下的内容全部是该类的类体。
类声明的完整语法是“[类修饰符] class 类名 [Extends子句] [Implements子句] 类体”。
类修饰符我们一般选用public,那么该类可以被任何对象引用或继承,如果你不使用类修饰符,默认的情况是只局限于同一个包中的其他对象可以引用和继承该类。此外类修饰符还有final、abstract等。
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页12 3 4 下一页
上一篇:Java2下Applet数字签名具体实现方法
下一篇:JSP专题:第六部分:用JSP实现聊天室-2
|