
定一些附加参数,如是否自动创建包括数据模块的User Session单元,如果是ISAPI类型的应用,是否使用ISAPI线程池,以及窗口类型等。IntraWeb会根据你的选择自动创建相应的程序单元和引用代码单元。这时一个IntraWeb应用框架已经搭建好,剩下的就是设计Web应用了。下面先向大家介绍以下不同应用程序类型及其选项参数。
(1)应用程序开发类型
应用程序类型:在IntraWeb New Item上,Application Type 选项有5个可选项。
■ StandAlone Application——独立程序模式:含义是采用此类型开发的Web应用程序最终是一个独立的EXE程序,如果服务端打开这个程序,客户端就能访问这个程序。
■ Service Apllication——服务器程序模式:含义是采用此类型开发的Web应用程序要生成一个系统服务,这样每次开机时服务器会自动启动,而不需要每次手动运行这个程序。
■ ISAPI Extension——ISAPI 扩展模式:含义是要生成一个ISAPI 类型的DLL应用程序,需要将它发布到服务器端的IIS管理界面里,客户端才能正常地访问它。目前比较成熟的Web开发技术是CGI,编写这类程序可以用C语言,或者VB以及其他语言。标准的CGI是基于UNIX操作系统,也可以用在Windows、Windows NT或Windows 2000系统以上。CGI虽然是一种比较成熟的Web服务器应用程序,但它有严重的缺点限制了它的应用,因为它是EXE文件,这就意味着每当前台浏览器发送请求执行CGI程序时,它将在服务器占用一个进程,当请求比较多时,将会严重影响服务器的运行效率。为了解决上述问题可以采用Web服务器提供给开发人员的程序接口,比较多的是微软提出的ISAPI,或者NetScape公司提出的NSAPI,对于微软的操作系统来说使用ISAPI是一个合理的选择。ISAPI与CGI最大的区别在于ISAPI使用动态链接库代替了CGI的EXE文件,而DLL与Web服务器共享单一内存空间,比可执行文件消耗较少的内存资源,相对减少了Web服务器的负担,当多个用户请求时服务器将自动产生多个线程,这些线程共享一个进程,与CGI为每个用户产生一个进程相比执行效率将提高许多,生成ISAPI的DLL文件发布时需要借助于IIS管理器。关于如何发布DLL文件将在后一步Web程序发布中作相关介绍。
■ Apache1.x Share Module——表示要使生成的文件支持Apache1.0环境的共享模式。
■ Apache2.x Share Module——表示要使生成的文件支持Apache2.0环境的共享模式。
程序选项:
■ Pool Data Connections——表示创建的程序是否与随之的数据模块DataModule1相连接。用户管理动态数据接口
■ Create User Session——该选项是默认选项,表示在创建程序的同时可以创建一个用户Session,实际上创建了一个数据模块,并且不要时可以编辑这个模块,所以一般在创建程序中去掉这个选项。
■ Main Form——下列按钮中有Standard4.0、PDA3.2和WAP三个选项,其中Standard4.0表示程序支持HTML4.0标准,一般用于PC机用户。PDA32表示程序支持HTML3.2标准,可以支持PDA的设备。无线应用协议WAP是一个开放的全球标准,可以是移动电话或其他无线终端的用户,可以快速安全获得服务信息。
(2)页面生成向导
IntraWeb在创建Web应用程序框架的同时,自动创建了一个主页面IWForm1,如果还需要添加更多的页面窗口,可以使用New Form Wizard对话框来创建相应的页面,对话框如图8所示。

图8 页面类型选择对话框
对话框中的五个选项都是为Web应用创建页面的。
Page模式的开发需要IntraWeb与WebSnap或者WebBroker协作,IntraWeb仅仅提供输出页面,而框架、管理模式等均由WebSnap或WebBroker承担,开发出的程序类型有WebSnap或WebBroker决定。所以,Page模式的开发仅需要利用IntraWeb创建页面。
值得注意的是,在窗口中上述所有IW组件和Delphi中的非可视组件,但Delphi中的可视组件是不能在IntraWeb中使用的。
(3)框架生成向导
最后有必要提及以下IntraWeb 页面选项中New Frame Wizard,双击页面中的New Frame图标,即出现如图9所示的对话框。

图9 IntraWeb Frame 设计向导
在选择Frame类型的对话框中,HTML4.0选项表示该框架须在HTML4.0以上版本中运行该应用程序,就像上述环境设置中所提到的浏览器必须支持HTML4.0是一个道理,IntraWeb的Frame类型窗体,在功能上与Delphi的Frame是一样的,可以在其上放置IntraWeb的菜单、标签、按钮等控件,以提高代码页面的重用性,减少冗余度。
2.页面模式
页面开发模式是传统的利用Delphi开发Internet或WebSnap程序的方法,由Web Broker或者WebSnap提供应用对象,而IntraWeb用来开发页面。显然,应用可以在商用服务器上发布。页面模式要比应用模式灵活得多。如果用户使用过诸如 Web Broker和WebSnap技术,页面模式实质上与习惯的Web开发模式相同。
通过使用Web Broker和WebSnap页面生成器组件,就可以得到页面模式。作为一种底层接口,IntraWeb的页面模式用于创建独立的交互页面是非常理想的。因此,用于创建高度交互式和复杂的报表、表单、图像等等,页面模式是更为理想的选择。
使用页面模式,IntraWeb不再是框架。相反,IntraWeb组件成为一种在Delphi的IDE模式中可以使用的附加组件。页面模式可以与Web Broker、WenSnap和其他技术完全集成。如果用户已经使用Web Broker、WebSnap开发过Web应用,那么,当使用IntraWeb页面模式时,就会感到得心应手。
总之,两种模式各有优缺点,Application模式快速简便,而页面模式应用方法,灵活性更强一点,Application模式开放方向就是Web应用,Application模式内建Internet服务器,服务端不需要其他Web应用服务器就能很好地工作,所开发的程序作为NT的一个服务在Server上启动,客户端在浏览器中像使用一个普通应用程序一样来完成数据库的操作、表单提交、查询等工作,应当说IntraWeb这种开发模式在Web应用程序方面完成了独创性工作。
六、网站登录页面
为了让读者对IntraWeb设计的应用程序有一个初步印象,先创建第一个Web应用,就是整个网站在线教育的网站入口,在页面上有常规登录页面的基本元素,如标签、输入框、按钮。登录时分学生登录和教师登录两种方式。用户在选择不同的登录类型后,接着输入用户名和密码,应用程序会依据这个请求与后台数据进行验证,通过验证后进入下一个页面,反之发出出错信息,提醒用户输入有误。为了美化登录界面,还可以放置一个TIWIamge控件。
1.工程文件创建
选择File→New→Other菜单命令,然后打开IntraWeb选项卡,创建一个StandAlone Application类型的应用。此时IntraWeb为Web应用程序创建一个普通类型Delphi程序框架,添加一些将使用的文件单元,打开了一个空的IWForm窗口。有了这个窗口,就可以在上面放置所需的组件,并将工程文件以Anyweb.dpr存盘。
2.页面布局
从设计目的出发,在所形成的IWForm窗体上,从IWStandard组件板上加入1个IWTIamge控件、1个IWRadioGroup控件、3个IWLabel控件、2个IWEdit控件和IWButton控件。并调整至合适的位置和大小,设置好相应的属性,如图10所示。主要控件及属性设置见表5所列。

图10 登录界面及控件布置
表5 登录窗口控件及属性设置
编号 |
控件类型 |
控件名称 |
属性项 |
属性设置(值) |
1 |
TIWForm |
F_IWLogin |
Title |
在线教育登录窗口… |
2 |
TIWIamge |
IWIamge1 |
Picture |
Title.bmp |
TIWIamge |
IWIamge1 |
Picture |
Key.bmp |
3 |
TIWRadioGroup |
IWRadioGroup1 |
Items |
教师登录|学生登录 |
4 |
TIWLabel |
IWLabel1 |
Caption |
用户名 |
IWLabel2 |
Caption |
密码 |
IWLabel3 |
Caption |
欢迎您登录本网站... |
5 |
TIWEdit |
iweName |
Text |
空白 |
iwePassword |
Text |
空白 |
PasswordPrompt |
True |
6 |
TIWButton |
IWButton1 |
Capion |
登录 |
IWButton1 |
Capion |
用户注册 |
7 |
TAdoConnection
|
ADOConLogin |
LoginPrompt |
False |
ADOConLogin |
ConnectionString |
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Hmydatabase.mdb;Persist Security Info=False |
8 |
TAdotable |
AdotblLogin |
Connection |
ADOConLogin |
AdotblLogin |
Tablename |
Users
|
3.代码编写
在这个登录界面中因为数据库和其他任务还没有完成,真正需要编写代码和事件不多,主要是两个按钮的功能,一个是“登录”按钮,事件的功能主要有两方面,一方面从数据库中读取用户名和用户密码信息,与用户在页面输入的信息进行比对,验证通过后进入网站主页;另一方面可以依据登录用户类型(学生或教师)身份的不同打开主页的不同使用权限;再一个是“用户注册”按钮,其事件的功能通过实现与今后设计的用户注册模块相联系,实现网站新用户动态注册。这里仅列出登录按钮编写的按钮事件处理程序:
procedure TF_IWLogin.IWButton1Click(Sender: TObject);
begin
if length(iweName.Text)<=0 then
WebApplication.ShowMessage('用户名不能为空!', smAlert); //弹出提醒窗口
case IWRadioGroup1.ItemIndex of
0: //教师登录
begin
AdotblLogin.filter:='登录身份='''+'教师'+''''; //按教师身份筛选
AdotblLogin.open;
AdotblLogin.Locate('用户名',iweName.Text,[loPartialKey]);
if iwePassword.Text = AdotblLogin['登录密码'] then
begin
//TF_IWMain.Create(WebApplication).Show;//登录主页面
end
else WebApplication.ShowMessage('不能登录...', smAlert);
AdotblLogin.Close;
end;
1: //学生登录
begin
AdotblLogin.filter:='登录身份='''+'学生'+''''; //按学生身份筛选
AdotblLogin.Filtered :=true;
AdotblLogin.open;
AdotblLogin.Locate('用户名',iweName.Text,[loPartialKey]);
if iwePassword.Text = AdotblLogin['登录密码'] then
begin
//TF_IWMain.Create(WebApplication).Show;//登录主页面
end
else WebApplication.ShowMessage('不能登录...', smAlert); //弹出警示窗口
AdotblLogin.Close;
end;
end;
end;
至于登录按钮和注册按钮等代码的编写和运行效果的实现,将在随后的讲座中逐一涉及。
4.程序运行与效果测试
上述工作完成了,保存工程文件,接下来就可以编译和运行该网站程序了。按F9,出现IntraWeb默认的Web服务器调试窗口,如图11所示。
