Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

JSP专题:第六部分:用JSP实现聊天室-1

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  Extends子句用于继承一个类,Implements子句声明在当前类中实现的接口,我们将在下面看到这些用法。

  从“String oneUserId;”到“int retimeChat[]=new int[3];”是该类的属性变量,实际上类的属性变量声明时你可以使用变量存取修饰符,在我们的程序中采用了默认的情况,也就是只在本程序域中有效,对于程序域,你可以简单地理解为一对“{}”所引起的程序段。

  “int retimeChat[]=new int[3];”声明了一个int型的名为retimeChat的一维数组,Java中的数组的应用相当灵活,你甚至能使用一个自定义类的数组。在下面,我们将看到这种用法。

  事实上,这里对变量的声明方法也适用于在Java的其他地方声明变量。

  在此之后,我们声明了一系列的类的方法。类的方法决定了一个类可以执行的动作。

  类的方法声明的一般格式是:“[存取限制修饰符] 返回值类型 方法名 ([参数表]) [throws子句]”。

  你可以从两个方面来理解方法的分类。

  首先,从返回值情况看,方法分为有返回值的及无返回值的。对于有返回值的方法,你应该说明返回值类型,在这一类方法的方法体中,必须包含一个return语句,return语句返回的变量类型也就是返回值类型。对于这一类方法,你必须注意确保你的方法体中的确包含一个一定会被执行的return语句,当你的方法体中包含诸如if这样的控制语句时,你会理解什么叫一定会被执行的;对于无返回值的方法,你应该说明其返回值类型为void,只有构造函数例外,如果你还不知道什么是构造函数,你也不用着急,我们将在下一个Java程序中看到它。

  其次,从参数表的情况看,方法分为带参数的和不带参数的,对于带参数,你必须在“()”中说明一个用逗号分隔的参数表,并在参数表中说明参数的数据类型,参数对应的变量名在方法体中不应再被重复定义;对于不带参数的方法,你仍然必须使用“()”,不过现在在这当中是不包含参数表的。

  3.3一个说明当前在线用户的类


userList.java:
package customers;
import java.util.*;
public class userList 
  {oneUser theUserList[];/*在线用户列表*/
   int userCount;/*当前在线用户数*/
   public userList() 
 //构造函数
 {theUserList= new oneUser[100];
  userCount=0;
 }
   public void addUserList(String theOneUserId,String theOneUserName,
   long theOneUserTime,String theOneUserPosion,String theOneUserSwjg,
   String theOneUserSfks)
   //向在线用户列表中添加一个用户,如果该用户在在线用户列表中已存在,
   将不重复添加
 {int i;
  for (i=1;i<=userCount;i++) if (returnUserId(i).equals(theOneUserId)) break;
  if (i==userCount+1)
{userCount=userCount+1;
 oneUser theOneUser=new oneUser();
 theOneUser.setOneUser(theOneUserId,theOneUserName,theOneUserTime,
 theOneUserPosion,theOneUserSwjg,theOneUserSfks);
 theUserList[userCount]=theOneUser;
}
 }
   public int returnUserCount()
   //获取当前在线用户数
 {return userCount;
 }
   public String returnUserId(int i)
   //获取某一在线用户的ID
 {return theUserList[i].getUserId();
 }
   public String returnUserName(int i)
 //获取某一在线用户的用户名
 {return theUserList[i].getUserName();
 }
   public String returnUserName(String userId)
 //获取某一在线用户的用户名
 {String UserName=new String("");
  int i;
  for (i=1;i<=userCount;i++) if (returnUserId(i).equals(userId))
 UserName=theUserList[i].getUserName();
  return UserName;
 }
   }

  在这段程序中,以下几点是新出现的:

  首先,我们使用了构造函数。构造函数是一个类的特殊的方法,该方法与类同名。构造函数在创建一个实例时被自动调用,以完成初始化工作,正如我们前面提到的,构造函数没有返回值类型(包括void)。

  其次,我们使用了“oneUser theUserList[]”这样的一个数组,这也就是我们在前面提到的使用一个自定义类的数组。

  最后,你应该已经注意到我们定义了两个方法名均为returnUsername的方法。这其实是我们常常提到的Java中的方法重载,对于这样的两个或几个方法,它们的参数表应该不同,而Java在引用这一方法时,会根据参数的类型和数量来确定被调用的方法,对于我们这个程序而言,两个方法分别返回某一在线用户列表中固定序号的用户的用户名,以及在线用户列表中ID为某一确定值的用户的用户名。其参数类型分别是int型和String型。

  3.4一个用来连接数据库的类



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Java2下Applet数字签名具体实现方法   下一篇:JSP专题:第六部分:用JSP实现聊天室-2

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章

DBconn.java:
package customers;
import java.sql.*;
public class DBconn 
  {String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";/*JDBC驱动,
  此处采用JDBC-ODBC桥*/
   String ConnStr="jdbc:odbc:tax_js_main";/*定义所连接的数据库*/
   String MyUser="UserName";/*数据库用户名*/
   String MyPassword="Password";/*数据库用户口令*/
   Connection conn = null;/*连接*/
   ResultSet rs = null;/*结果集*/
   public DBconn()
   //构造函数
 {try 
{Class.forName(DBDriver);
}
  catch(java.lang.ClassNotFoundException e) 
{System.err.println("DBconn (): " + e.getMessage());
}
 }
   public ResultSet executeQuery(String sql) 
   //执行SQL语句的方法
 {rs = null;
  try
{conn = DriverManager.getConnection(ConnStr,MyUser,MyPassword);
 Statement stmt = conn.createStatement();
 rs = stmt.executeQuery(sql);
}
  catch(SQLException ex) 
{System.err.println("aq.executeQuery:"+ex.getMessage());
}
  return rs;
 }
  }