网络通讯薄(多用户)
设计文档
团 队
组长:张建波
成员:黄隆徽李旸黄健陈文佳王丰张林昆
一、网络通讯簿说明
功能概述:(1)支持在线添加、修改、删除、查询联系人
(2)支持“多用户”,用户只需进行简单的注册就可以使用。
(3)用户之间数据隔离,互相看不到的对方的数据,达到了数据保密!
系统特点:(1)使用java开发,数据库采用mysql方便移植!
(2)数据库与系统分离,只需要修改index.jsp就可以支持其他数据库
开发平台:
操作系统:Windows2003
开发工具:Borland JBuilder 2005 Enterprise
JDK版本:JDK1.4
WEB服务器:Tomcat5.0
后台数据库:MySQL Server 5.0
网络通讯薄运行要求:
操作系统: Win2000/XP/2003
WEB服务器:Tomcat4.0/5.0或weblog
Tomcat4.0+JDK1.40+JRE1.40
或Tomcat5.0+JDK1.50+JRE1.50
数据库:MySQL 4.0或MySQL 5.0
Web浏览器:IE5.0以上
二、设计思想与关键程序片
我们的“网络通讯簿”采用 JSP+JavaBean结合HTML的方式开发。
本系统共有3个JavaBean
分别是:1-login.java
2-getCnn.java
3-people.java
(一)login.java
login.java负责初始化MySQL数据库连接,同时保存数据库连接字符串,代码如下:
private static String db= null; //"jdbc:mysql://localhost/myteldb";
private static String db_user= null; //"root";
private static String db_password= null; //"123";
声明了三个静态变量db ,db_user ,db_password通过主页index.jsp传入,这样设计的目的是为后面的getCnn.java提供数据库连接字符串。
login.java包含2个主要方法,方法声明如下:
public String checkUPWD(String userName, String userPwd)
//用户登录密码验证
public int RegNewId(String UserName, String UserPwd)
//用户注册
(二)getCnn.java
getCnn.java从login.java获得数据库连接字符串后,对数据库进行连接,并把“数据连接”Connection对象返回给主调函数。
注:本通讯薄的所有对数据库的操作,都基于getCnn。这样设计的目的是为了简化其他部分的代码编写,同时保证数据连接的统一性,便于今后的维护。
数据库连接代码如下:
public class getCnn {
private getCnn() { }//私有构造函数
static Connection con = null; //数据库连接
public static Connection GetConnection() {
Connection con;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException e) {}
try {
con= DriverManager.getConnection(
login.GetDBName(),
login.GetDBUserName(),
login.GetDBUserPassword()
);
//从login bean里获得数据库名称、登录用户、密码
return con;
}
catch (SQLException e) {
return null;
}
}
public static void CloseCnn() {
try {if (con!=null) {con.close();}} //关闭数据连接
catch (Exception e) {} ;
}
}
(三)people.java
该Bean目前只负责数据的删除
方法声明如下:
public String DeletePeople(String SqlStr)
(四)具体代码请参看,光盘上的mytl/mytel/src/mytel/下的源代码文件
二、模块概述
(一)网络通讯薄共分为6大模块
(1)用户登录模块
(2)用户注册模块
(3)添加联系人信息模块
(4)修改联系人信息模块
(5)查询模块
(6)删除联系人信息模块
(二)关键模块所涉及的程序片说明
(1)首页index.jsp
<jsp:useBean id="login" scope="session" class="mytel.login"/>
<%!
//数据库连接信息
String db = "jdbc:mysql://localhost/myteldb"; 数据库连接地址
String db_user = "root"; //数据库登录用户名
String db_password = "123"; //数据库登录用户密码
%>
<%
login.SetDB(db,db_user,db_password); //设置数据库连接字符
%>
(2)登录 login.jsp,负责验证用户的登录信息
<jsp:useBean id="login" scope="session" class="mytel.login"/>
<%
String logname = "NULL";
String logpwd = "NULL";
%>
<%
String message = "flase";
if (!(session.isNew())) {
//提交信息后,验证信息是否正确
logname = request.getParameter("user"); //获取用户名
logpwd = request.getParameter("pwd"); //密码
if (!(logname.equals(""))) {
// message = checkUPWD(logname, logpwd); //验证用户名密码
message=login.checkUPWD(logname,logpwd);
if (message == null) {
message = "false";
}
}
}
%>
<%
if (!(session.isNew())) {
if (message.equals("true")||message.equals("admin")) {
session.setAttribute("user_name", logname); //保存用户名
session.setAttribute("user_pwd", logpwd); //用户密码
if(message.equals("admin"))session.setAttribute("power","0");
else
session.setAttribute("power","1");
String url = response.encodeURL("main.jsp");
response.sendRedirect(url);
}
else
{
out.print("用户名密码错误!");
out.print("<p align='center'><a href='index.jsp'>返回</a></p>");
}
}
%>
(3)表格绘制,以及数据输出模块showtable.jsp
该模块负责显示数据,它被设计为自页面提供给其他页面调用。例如:查询、修改、删除等模块
<%
Statement sql;
ResultSet rs;
String sqlstr = "select * from t_tel_book";
String str_findfiled = request.getParameter("findfiled"); //查询条件姓名
String str_findwhere = request.getParameter("findwhere"); //查询条件= < >
String str_findTxt = getString(request.getParameter("findTxt")); //查询数据
if (!str_findTxt.equals("")) { //如果查询条件为空,则显示所有数据
sqlstr = sqlstr + " where " + str_findfiled + str_findwhere + "'" + str_findTxt + "'";
sqlstr = sqlstr + " and owner='" + (String) session.getAttribute("user_name") + "'";
}
else
sqlstr = sqlstr + " where owner='" + (String) session.getAttribute("user_name") + "'";
try {
sql=getCnn.GetConnection().createStatement();
rs = sql.executeQuery(sqlstr);
rs.last();
int lastRow=rs.getRow(); //获取最后一条记录
pageCount=(lastRow%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
String integer=request.getParameter("showPage"); //计算分页显示数据
if(integer==null)integer="1";
try{
showPage=Integer.parseInt(integer);
}catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1)showPage=1;
if(showPage>=pageCount)showPage=pageCount;
posion=(showPage-1)*pageSize+1;
rs.absolute(posion);
for(int i=1;i<=pageSize;i++)
{ //绘制数据表格
out.println("<TR>");
out.println("<TD>" + rs.getString("name") + "</TD>");
out.println("<TD>" + rs.getString("tel") + "</TD>");
out.println("<TD>" + rs.getString("address") + "</TD>");
out.println("<TD>" + rs.getString("email") + "</TD>");
out.println("<TD>" + rs.getString("QQ") + "</TD>");
out.println("<TD>" + rs.getString("mtel") + "</TD>");
out.println("<TD>" + rs.getString("teltype") + "</TD>");
out.println("</TR>");
rs.next();
}
sql.close();
getCnn.CloseCnn(); //关闭数据连结
}
catch (SQLException e) {}
%>
(4)查询以及数据修改删除代码如下
数据删除程序片:
<jsp:useBean id="people" scope="page" class="mytel.people"></jsp:useBean>
<%
String sqlstr =null;
sqlstr= "DELETE FROM t_tel_book where name='" + getString(request.getParameter("name")) + "'";
sqlstr = sqlstr + " and owner='" + (String) session.getAttribute("user_name") + "'";
String msg=people.DeletePeople(sqlstr); //删除数据
if(msg.equals("OK")){
out.print("<p align='center'>数据删除成功!</p>");
out.print("<p align='center'><a href='deleteman.jsp'>继续删除</a> <a href='wellcome.htm'>返回</a></p>");
}
else
{ out.print(msg); //数据删除失败
}
%>
数据修改程序片:
<jsp:useBean id="getCnn" scope="session" class="mytel.getCnn"></jsp:useBean>
<%
Statement sql;
ResultSet rs;
String sqlstr = "select * from t_tel_book where name='" + getString(request.getParameter("name")) + "'";
try {
sql = getCnn.GetConnection().createStatement();
rs = sql.executeQuery(sqlstr);
if (rs.next()) {
name = rs.getString("name");
tel = rs.getString("tel");
address = rs.getString("address");
email = rs.getString("email");
qq = rs.getString("QQ");
mtel = rs.getString("mtel");
teltype = rs.getString("teltype");
}
sql.close();
getCnn.CloseCnn();
} catch (SQLException e) {}
%>
数据查询程序片请参考“表格绘制,以及数据输出模块”showtable.js”
三、网络通讯簿安装说明
(一)必备软件:(Win2000环境)
(1)安装JDK1.5+JRE1.5
(2)安装Tomcat5.5(具体安装说明,请查看相关文档)
(3)安装MySQL5.5
注意:数据库root管理员密码请设置为:123456(如果安装时,密码设置的是其他的密码,则需要修改 index.jsp 的)
(二)安装系统:
(1)拷贝:mytel到Tomcat5.0的webapps/root下
(2)拷贝:mytel/classes/下的 mytel到Tomcat5.0下的/common/classes
(3)拷贝:mysql-connector-java-3.2.0-alpha-bin.jar到Tomcat/common/lib/
(4)拷贝:mysql-connector-java-3.2.0-alpha-bin.jar到 jre1.50/lib/
(5)拷贝:mysql-connector-java-3.2.0-alpha-bin.jar到 jre1.50/lib/ext
注:mytel在附带光盘里
(三)环境配置:(需要根据具体情况修改)
PATH=;.;E:/Borland/JBuilder2005/jdk1.4/bin CATLINA_HOME=E:/Borland/JBuilder2005/thirdparty/jakarta-tomcat-5.0.27
JAVA_HOME=E:/Borland/JBuilder2005/jdk1.4
CLASSPATH=E:/Borland/JBuilder2005/jdk1.4/jre/lib/rt.jar;.;E:/Borland/JBuilder200
5/jdk1.4/jre/lib/mysql-connector-java-3.2.0-alpha-bin.jar
TOMCAT_HOME=E:/Borland/JBuilder2005/thirdparty/jakarta-tomcat-5.0.27
(四)数据库初始化:(SQL脚本代码如下)
启动MySQL:
程序||MySQL||MySQL Server 5.0||MySQL Command Line Client
输入以下脚本:
//初始化的管理员为: admin密码 123
create database myteldb; /*创建myteldb数据库*/
use myteldb; /*切换到myteldb数据库*/
drop table if exists t_admin; /*用户表*/
create table t_admin /*创建用户登录表*/
(
username char(20),
userpassword char(20),
power char(20)
)
TYPE=MyISAM,default character set gbk;
drop table if exists t_tel_book;
create table t_tel_book /*创建通讯薄*/
(
owner char(20),
name char(20),
tel char(20),
address char(100),
email char(20),
QQ char(20),
teltype char(20),
mtel char(20)
)
TYPE=MyISAM,default character set gbk;
/*添加系统默认管理员*/
insert into t_admin values('admin','123','0');
/*登录名:admin密码 123*/
/*______________END___________*/
(五)测试
在IE浏览器输入: htpp://127.0.0.1/mytel/MyJspWebModule/index.jsp
就可以看到效果了!
附录:光盘说明
光盘共包括4个部分:
1. 网络通讯薄源代码 mytel.rar
2. 必备软件Tomcat5.0 JDK/JRE5.0 MySQL5.0
3. MySql数据库连接插件: mysql-connector-java-3.2.0-alpha-bin.jar
4. 附带WindowsNT Svere虚拟机,已经安装配置好了。(主要是提供网络通讯薄的演示用。)直接复制到硬盘,使用VM5.0打开。就可以使用“网络通讯薄“
VM虚拟机说明:(VM虚拟机需要VMware Workstation5.0)
本光盘所带的虚拟机,已经配置好了MySQL/JDK/mytel了。
Windows系统登录密码:123456
网络通讯薄:用户admin密码123
启动Windows后,桌面上有一个图标“网络通讯薄”,直接双击就可以使用了。
2005/12/8