1. 引言: 目前动态网站设计技术主要有:利用Perl/C++/Delphi等开发的CGI,两种有名的API-ISAPI/NSAPI,还有ColdFusion,以及最近几年流行起来的3p技术-ASP,PHP,JSP(据Internet上有关网站统计约有近百种); ASP-Ative Server Page,由微软公司开发 ,是一个WEB服务器端的开发环境,主要采用脚本语言VBScript(或Javascript/perl等)作为自己的开发语言,可用ODBC或直接驱动法访问Window平台的数据库。PHP-Person Server Page ,是由Rasmus个人创立的一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,.是一种很有个性的网站开发语言,它支持目前绝大多数数据库。JSP-Java Server Page , 是Sun公司推出的新一代站点开发语言,Sun 公司除Java 应用程序 和 Java Applet 之外,又创立了JSP,其可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序开发,特别是有许多访问数据库的方法。在电子商务平台设计中,主要需要解决"网站结构的设计","注册界面","交易界面","后台数据库",以及 "配套模块"诸如购物/用户/论坛/反馈/搜索/会话等设计;考虑篇幅,本文只给出统一的前台界面及后台数据库的3p设计方法;可以说ASP,PHP,JSP与网络数据库的操作是电子商务网站平台设计的坚强基石。
2. 构建三种设计技术的运行环境2 .1构建ASP的运行环境:NT5.0Server,IIS5.0 ,ASP3.0 。 安装Windows2000Server(NT5.0Server)时选择IIS5.0有关选项。安装完后ASP3.0便内嵌于IIS5.0中。测试ASP:启动浏览器,在地址栏处输 127.0.0.1:80/default.asp ,若浏览到IIS服务器的ASP欢迎页面,说明安装成功 2.2构建PHP4的运行环境:NT5.0Server, Apache1.3.12 php4.0 安装支持PHP的web服务器Apache1.3.12,将Apache服务器压缩文件解压缩,根据提示进行整个安装过程,自己选择安装到目录d:\apache下。安装PHP4,将PHP4压缩文件解压缩到d:\php4即可,同时将其中的php.ini-dist文件拷贝到winnt目录中,将文件更名为php.ini,打开该文件将其中extension_dir 设置为:d:/php4,并加载扩展模块:将文件中含有;extention=*.dll的各项前面的";"号去掉即可;修改设置Aphache服务器,用文本编辑器编辑目录d:\aphache目录下的子目录conf下名为httpd.conf的文本文件,首先将"#ServerName *"这一行下加入"ServerName 127.0.0.1/" ; ,其次将"Port 80"改为"Port 81(或其他与IIS5.0不冲突的端口)",再其次设置更改Apache虚拟目录,将"Documentroot "d:/Apache/htdocs""改为Documentroot "d:/trade"(该目录即是电子商务网站目录,可用任意方法建立目录trade),最后加入支持php4的如下语句:ScriptAlias /php4/ "d:/php4/" AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml Action application/x-httpd-php4 "/php4/php.exe";测试php:完成上述步骤后,在d:\trade目录下,用如何文本编辑器,生成扩展名为.php(或phtml)的文件test.php,在文件中输入如下php代码,存盘后,启动Apache,接着你在浏览器中输入 127.0.0.1 :81/test.php,若看到php的版本和扩展模块等信息,说明环境安装设置成功。2.3构建JSP的运行环境:NT5.0Server,Resin1.13, jdk1.3 安装Java编译器jdk1.3:运行jdk1_3-win.exe,按照提示完成安装即可,将其安装在d:\java1.3目录,也可安装在其他目录。 设置系统环境参数:控制面板/系统/环境页中选择path 参数加入d:\jdk1.3\bin;增加新的环境参数classpath=d:\jdk1.3\lib\tools.jar;d:\jdk1.3\lib\dt.jar;,然后重新启动计算机即可安装支持JSP的web服务器Resin1.1.3,将RESIN-1.1.3.zip释放为d:\Resin1.1.3 即可。配置服务器端口,打开d:/resin1.1.3/conf/目录下的resin.conf文件在
8080 标签处将端口设置为82(在我的NT5.0上装有三个服务器,这样三个服务器的端口分别为IIS :80;Apache:81;Resin:82其实也可设置为其他互不冲突的端口号). 测试JSP:启动Resin服务器,启动浏览器,在地址栏处输 127.0.0.1:82/ ,若浏览到Resin服务器的JSP欢迎页面,说明安装成功
3.生成三种格式的动态表单页面 为了通用,这里采用可能用到的表单对象为例,至于下面设计具体数据表用到的字段,只要转成给出的表单域相应对象即可.3.1用ASP动态生成与数据库进行数据交流的操作表单: form.asp: 生成表单域头: 生成普通文本: 生成密码文本: 生成滚动文本: 生成单选: 生成复选: 生成列表框: 生成提交按钮 生成重填按钮 生成表单域尾 3.2用PHP动态生成与数据库进行数据交流的操作表单: form.php 生成表单域头:"?> 生成普通文本:"?> 生成密码文本:"?> 生成滚动文本:"?> 生成单选:"?> 生成复选:"?> 生成列表框:网络数据库Asp技术Php技术Jsp技术网站设计 "?> 生成提交按钮 "?> 生成重填按钮"?> 生成表单域尾"?> 3.3用JSP动态生成与数据库进行数据交流的操作表单 form.jsp 生成表单域头: 生成普通文本: 生成密码文本: 生成滚动文本: 生成单选: 生成复选: 生成列表框: 生成提交按钮 生成重填按钮 生成表单域尾
4.设计用于存储商务网站交互数据的MySql数据库4.1启动MySql数据库服务器(MySql的安装及ODBC驱动程序的安装与设置请参阅相关书籍) 可在NT5.0下用启动服务法/NET命令法/命令窗口键入MySqld-shareware法,启动MySql数据库服务器,启动数据库服务器后,在d:\mysql\bin>提示符下键入mysql-h 127.0.0.1 -u root 即可出现mysql>提示符,从这开始即可进行对MySql数据库的各种操作。若要退出可键入quit/exit,若要关闭数据库服务器,可在d:\mysql\bin>提示符下键mysqladmin -u root shutdown 4.2建立MySql数据库 在MySql数据库的提示符mysql>键入Create database tradedb ;(或go) 4.2.建立MySql数据库表 这里以商务网站中常用的几种数据表为例,主要用到的数据表和生成数据表的SQL代码如下:(这里的数据表字段只要分别对应上述表单域对象即可实际操作,数据表统一用tablename表示) 客户登录管理数据表 CREATE TABLE users ( ID int not null auto_increment, UserName varchar(30) not null, Password varchar(20) not null ) 客户信息数据表 CREATE TABLE usermessage ( UserName varchar(30) not null, Email varchar(80) not null, Address varchar(120) not null , Fax varchar(40) null, Phone varchar(40) not null, Cerreycard varchar(50) not null ) 客户定购商品数据表 CREATE TABLE catalog ( ProductId int not null , Name varchar(64) not null, Price float(6,2) not null, Description ;text null )
5.设计处理表单数据的3p程序5.1设计处理表单数据的ASP程序 form_cl.asp 建立与数据库的连接:这里采用直接驱动法 Set conn = Server.CreateObject("ADODB.Connection"); conn.open "driver={MySQL};server=localhost;uid=user;pwd=xxxxxx;database=tradedb" 获取表单提交的数据: data1=request("ptwbk");data2=request("mmwbk");data3=request("gdwbk") data4=request("dxk");data5=request("fxk");data6=request("lbk") 用SQL语句对数据库进行操作 查询数据记录: sql="select * from tablename" ;set rs=conn.execute(sql) " 增加数据记录: sql="insert into tablename(ptwbk,mmwbk,gdwbk,dxk,fxk,lbk) values('data1','data2','data3','data4','data5', 'data5')"; set rs=conn.execute(sql) 更改某条数据记录: sql="update tablename set data1="request(ptwbk )", where ID="num"; set rs=conn.execute(sql) 删除某条数据记录: sql="delete from tablename where ID="num";set rs=conn.execute(sql) 将SQL语句处理的数据结果输出 Response.Write "
" Response.Write " " For i=0 to rs.Fields.Count-1 Response.WRITE " " & rs.Fields(i).Name & " " Next Response.Write " " While Not rs.EOF Response.Write " " For i=0 to rs.Fields.Count-1 Response.WRITE " " & rs.Fields(i).Value & " " Next Response.Write " " rs.MoveNext Wend Response.Write " " 关闭数据库: rs.close;conn.Close5.2设计处理表单数据的PHP程序 form_cl.php 建立与数据库的连接:这里采用PHP的MySql函数法(也可用ODBC函数法) $conn=odbc_connect("localhost","user","xxxxxx"); 选择数据库: mysql_select_db("tradedb","$conn"); 获去表单提交的数据: $data1=$ptwbk; $data2=$mmwbk; $data3=$gdwbk; $data4=$dxk; $data5=$fxk; $data6=$lbk; 用SQL语句对数据库进行操作 查询数据记录: $sql="select * from tablename" ;$result=odbc_do($conn,$sql); 增加数据记录: $sql="insert into tablename(ptwbk,mmwbk,gdwbk,dxk,fxk,lbk) values('$data1','$data2','$data3','$data4','$data5','$data6')";$result=odbc_do($conn,$sql); 更改某条数据记录: $sql="update tablename set $data1=ptwbk where ID=num" $result=odbc_do($conn,$sql); 删除某条数据记录:$sql="delete from tablename where ID=num";$result=odbc_do($conn,$sql); 将SQL语句处理的数据结果输出 odbc_result_all($result,"border=1"); 关闭数据库: odbc_close($conn);5.3设计处理表单数据的JSP程序 form_cl.jsp 建立与数据库的连接:这里采用JDBC-ODBC桥生成JavaBean法 创建一个JavaBean命名为conndb.java,并保存在d:/resin1.1.3/doc/web-inf/classes/trade目录下,代码如下:(限于篇幅这里没按标准书写,而采用不换行写法,其他类同) package trade; import java.sql.*; public class conndb { String url="jdbc:inetdae:localhost";String login="user"; String password = "xxxxxx"; String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";String sConnStr = "jdbc:odbc:Dsnmysql"; Connection conn = null; ResultSet rs = null; public conndb() {try {Class.forName(sDBDriver); Connection conn = DriverManager.getConnection(url,login,password);} catch(java.lang.ClassNotFoundException e) {System.err.println("conndb(): " + e.getMessage ());}} Public/ResultSet/executeQuery(String/sql)/{rs=null;try{conn=DriverManager.getConnection(sConnStr); Statement stmt = conn.createStatement();rs = stmt.executeQuery(sql); } catch(SQLException ex) {System.err.println("aq.executeQuery: " + ex.getMessage());} return rs; }} 然后用javac编译conndb.java生成与其同目录的conndb.class文件,在form_cl.jsp文件中加入如下标签即可建立与数据库的连接 获去表单提交的数据: String data1=request.getParameter("ptwbk"); String data2=request.getParameter("mmwbk ") String data3=request.getParameter("gdwbk ") String data4=request.getParameter("dxk ") String data5=request.getParameter("fxk ") String data5=request.getParameter("lbk ") 语句对数据库进行操作 查询数据记录: String sql="select * from tab lename"; connbean.executeQuery(sql); 增加数据记录: String sql="insert into tablename values('" + data1 + "','" +data2 +"','" +data3 + "','" + data4+ "'+"','" + data5+"','" + data6+'")";connbean.executeQuery(sql); 更改某条数据记录: String sql="update tablename set data1='" + ptwbk + "',data2='" + mmvbk + "',data3='" +gdwbk + "' where ID='" + num + "'" ;connbean.executeQuery(sql) 删除某条数据记录: String sql="delete from tablename where ID='" +num+ "'" ; connbean.executeQuery(sql); ;将SQL语句处理的数据结果输出 ResultSet rs = connbean.executeQuery(sql); While (rs.next()) {out.print(" "+rs.getString(