📄 28-3.cfm.htm
字号:
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">IwriteCookie </FONT></TD>
<TD WIDTH="67%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">设置Cookie的内容</FONT></TD>
</TR>
</TABLE>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">建立组件</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 使用Explorer创建一个Asp Unleashed 文件夹,它假设在C盘上以c:\AspUnleashed的形式出现。</P>
<P ALIGN="JUSTIFY"> 启动Visual Studio或J++,选择File|new显示工作区对话框,单击Workspace表栏,输入Chaper28作为工作区名称,将路径设为:c:\AspUnleashed\chapter28,如图28.1所示。(如果你已尝试了Visual Basic例子的话,这个工作区已存在)。</P>
<P ALIGN="JUSTIFY"> 在工作里需要一个Java项目工程,选择File|New,单击Projects表头,从列表中选择Java Project并输入JavaSoaringSites作为项目工程名,如图28.2所示,确保选择Add to Current Workspace单选按钮。</P>
<P ALIGN="JUSTIFY"> 最后创建Java源文件,再次选择File|New,单击Files表头,从列表中选择JavaSource File并输入JsoaringSites作为文件名,如图28.3所示。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><IMG SRC="Image15.gif" tppabs="http://210.74.168.175/guide/asp/part28/Image15.gif" WIDTH=602 HEIGHT=373><B>图28.1 创建chapter28工作区</P>
<P ALIGN="JUSTIFY">图28.2 在chapter28工作区内创建JavaSoaringSites项目工程</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
</B><P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">列表28.1是一个简单的Java日程表组件,错误-陷阱在例子中省略,为的是突出重点,在列表28.4只将显示用Visual Basic编写的组件代码。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">表28.1 JsoaringSites.java</P>
<P ALIGN="JUSTIFY"><HR ALIGN="RIGHT" SIZE=1>// JSoaringSites// This small Java example demonstrates how to create an// ASP component in Java</P>
<P ALIGN="JUSTIFY">import com.ms.com.*;import asp.*;</P>
<P ALIGN="JUSTIFY">class JSoaringSites{ IResponse m_iResponse = null; IRequest m_iRequest = null; String m_sReturnString = ""; </P>
<P ALIGN="JUSTIFY">public void OnStartPage(IScriptingContext objScriptContext) { m_iResponse = objScriptContext.getResponse(); m_iRequest = objScriptContext.getRequest(); }</P>
<P ALIGN="JUSTIFY"> public void OnEndPage() { m_iResponse = null; m_iRequest = null; }</P>
<P ALIGN="JUSTIFY"> public void ListSoaringSites(String sState) { Variant vOutput = new Variant(); vOutput.putString("Requested State: "+sState); m_iResponse.Write(vOutput); m_sReturnString = "<P>"; if (sState.equalsIgnoreCase("WA")) { m_sReturnString += "Arlington, WA<BR>"; m_sReturnString += "Burlington, WA<BR>"; m_sReturnString += "Pullman, WA<BR>"; m_sReturnString += "Richland, WA<BR>"; m_sReturnString += "Wenatchee, WA<BR>"; m_sReturnString += "Yakima, WA<BR>"; } else if (sState.equalsIgnoreCase("WI")) m_sReturnString += "<BR>West Bend, WI<BR>"; else m_sReturnString += "No sites found for "+sState; vOutput.putString(m_sReturnString); m_iResponse.Write(vOutput); }}</P>
<P ALIGN="JUSTIFY"><HR ALIGN="LEFT" SIZE=1> 其中的两行代码是Java 的基本组成元素。import com.ms.com.*和import asp.*语句同C中的include文件相似,这个两语句分别引用了你先前安装的COM和ASP类库。</P>
<P ALIGN="JUSTIFY"> On Start Page和On End Page是两个特殊的事件,它们在当组件初始化和终止时自动执行。ASP自动调用它们,而不需要你为它们特殊考虑。事实上,这个组件可以根本不改动这两个事件的内容。但是,在这个例子里你可以修改其代码以便特定的需要,例如你可能希望当网页打开时组件初始化就进行数据库打开操作。</P>
<P ALIGN="JUSTIFY"> 通过使用equalsIgnoreCase 我们就可以将任何大小写组合匹配作为有效输入,因此wa,Wa,和WA都可以作为Washington的缩写。</P>
<P ALIGN="JUSTIFY">我们的例子中只涉及到两个州的信息,所以通过选择语句可以避免许多不必要的代码,但在现实生活中,不可能用大量的if语句来列出开展滑翔机活动的州,这个组件代码应重新改写使用数据库查询语句,但在这里我们可以这样写</P>
<P ALIGN="JUSTIFY">当输入这些代码或从CD上拷贝之后,接下来构建此Java组件,然后将这个组件拷贝到WinNT\Java\TrustLib目录下,以命令行形式显示(确信在TrustLib目录下):</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>\Program Files\DevStudio\VJ\Bin\Javareg</FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">/register/class:JsoaringSites/progid:chapter28.JSoaringSites</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY"> 如果你已经注册登记了组件,不要忘记在登记最近的组件之前首先键入以下的命令行来注销先前的组件:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>\ProgvamFiles\DevStudio\VJ\Bin\Javareg</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> /unregister/calss:JsoaringSites/progid:chapter28.JsoaringSites</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">通过使用OLEView.exe确保没有其它的组件在你的Java\bin中注册。出于某些原因,可能与Visual J++ 1.1不能从所有目录都注册成功组件有关——所以注销工作有时不起作用。如果你在OLEView中发现对这个class的其它引用,唯一的办法是搜索到所有的引用这个class的登记文件,然后手来工地删除它们。每个class有三个引用文件。</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">技巧</P>
</B><P ALIGN="JUSTIFY"> OleView是一个很好的跟踪工具。但有时区分问题很困难,究竟是注册/构造问题,还是ASP的问题呢?当你在OleView中双击一个class时,你创建了COM对象的一个实例。</P>
<P ALIGN="JUSTIFY"> 如果对象注册正确,OleView将显示与组件相联系的COM接口,如果OleView显出一个错误信息,可能是一个构造/注册问题。</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY"> 在Java1.1或更高版本里,你不需要将你的组件复制到一个公共目录中去,因为注册过程将产生一个你实际所在注册路径的映射,这样你就可以避免将你所有组件都保存在同一公共目录中去时可能碰到的麻烦。因为没有一种工具可以显示组件是在哪个路径下注册的。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">以下的两个ASP页将使用组件,第一页是一个简单的表单,用来接受用户输入的不同州的选择。第二页将处理请求并将其传递给Java组件,因为在Java组件中只有两个州(Washigton 和Wisconsin),所以大多数查询简单地返回No Sites found信息。</P>
<P ALIGN="JUSTIFY">列表28.2说明了Soaring Sites组件是如何使用的。其中的HTML代码询问用户选择一个要搜寻滑翔运动俱乐部的州,然后用户的请求通过HTML的FORM对象传递到列表28.3的代码。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">列表28.2 JavaSoaringSites.asp</P>
<P ALIGN="JUSTIFY"><HR ALIGN="LEFT" SIZE=1></P>
<P ALIGN="JUSTIFY"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//EN"><HTML><HEAD> <TITLE>Soaring Sites Results</TITLE></HEAD></P>
<P ALIGN="JUSTIFY"><BODY BGCOLOR="#FFFFFF"><FONT SIZE="2" FACE="Verdana, Arial, Helvetica"></P>
<P ALIGN="JUSTIFY"><CENTER><H1>Soaring Sites</H1></CENTER></P>
<P ALIGN="JUSTIFY"><HR Color="Red"><FORM ACTION="JavaSoaringSitesAction.asp"> Enter a state abbreviation to search for a site: &nbsp; <INPUT NAME="State" SIZE="2"><BR> <INPUT TYPE="SUBMIT"></FORM></P>
<P ALIGN="JUSTIFY"><HR ALIGN="LEFT" SIZE=1></BODY></HTML></P>
<P ALIGN="JUSTIFY">列表28.3显示了Jsoaring Sites真正的调用过程,HTML代码从REQUEST对象(一个内建ASP组件)获得用户的请求并将信息通过调用ListSoaringSites方法,来传递给在定制的组件。组件本身将格式化的结果以HTML代码形成返回给页面。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">列表28.3 JavaSoaringSitesAction.asp</P>
<P ALIGN="JUSTIFY"><HR ALIGN="LEFT" SIZE=1></P>
<P ALIGN="JUSTIFY"><% Option Explicit %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <TITLE>Soaring Sites Results</TITLE></HEAD></P>
<P ALIGN="JUSTIFY"><BODY BGCOLOR="#FFFFFF"><FONT SIZE="2" FACE="Verdana, Arial, Helvetica"></P>
<P ALIGN="JUSTIFY"><CENTER><H1>Soaring Sites</H1></CENTER><HR Color="Red"></P>
<P ALIGN="JUSTIFY"><%Dim SoaringSitesSet SoaringSites = Server.CreateObject("Chapter28.JSoaringSites")SoaringSites.ListSoaringSites Request("State")Set SoaringSites = Nothing%></P>
<P ALIGN="JUSTIFY"></BODY></HTML></P>
<B><P ALIGN="JUSTIFY">技巧</P>
</B><P ALIGN="JUSTIFY"> 你可以跳过组件注册,Microsoft已经将这个功能附加在Java 组件中,通过以下形式实现。</P>
<P ALIGN="JUSTIFY">Set SoaringSites=Server.Create Object(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Java:Chapter28.JsoaringSites</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY"> 当这本书出版的时候,这项功能还没有,所以在这章中的例子没有使用这种增强功能。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P></FONT></BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -