??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品免视看,中文字幕精品影院,91在线观看视频http://www.aygfsteel.com/mlh123caoer/category/11359.html无ؓ则可为,无ؓ则至深! zh-cnSun, 15 Jul 2007 04:25:50 GMTSun, 15 Jul 2007 04:25:50 GMT60JSP在TOMCAT中的处理生命周期http://www.aygfsteel.com/mlh123caoer/archive/2007/07/14/130271.html草儿草儿Sat, 14 Jul 2007 06:43:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2007/07/14/130271.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/130271.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2007/07/14/130271.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/130271.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/130271.html1、将WEB应用部v到TOMCAT容器Q容器启动读取应用的部v文gweb.xml,但不?jsp文g做Q何处理请求?/div>
2、客L击连接请求某?jsp文gQ容器开始将.jsp文g转换Z个servrletcȝ.java源代码。查看指令,得到转换的可能需要的信息。创Z个HttpServlet子类Q对于Tomcat5所生成的servlet会扩展org.apache.jasper.runtime.HttpJspBasecR若有一个page指o有import属性,生成的类文g的最上面会写入import语句。例如在Tomcat5中加入包语句Qpackage org.apache.jspQ若有声明容器将q些声明写道cLӞ通常攑֜服务Ҏ的下面。Tomca5声明了自q一个静态方法和一个实例方法。然后徏立服务方法,Ҏ名ؓ_jspService()。所生成的servlet会覆盖servlet类的service()Ҏ。_jspService()直接由service()调用Q要接收HttpServletRequest和HttpServletResponse参数。在建立q个Ҏ的时候,容器会声明ƈ初始化所有的隐式对象。将普通的HTMLQ模板文Ӟ、scrptlet和表辑ּ攑ֈ服务Ҏ里,q行格式化,q写至PrintWrite响应输出?/div>
3、容器尝试将q个servlet.java源文件编译ؓ.class文g?/div>
4、容器家在新生成的servletcR?/div>
5、容器实例化servletQƈDservlet的jspInit()Ҏq行。对象现在已成ؓ一个完整的servlet准备qAQ接受客Lh?/div>
6、容器创Z个新U程来处理客戯求,servlet的service()Ҏq行。以后的处理同普通的servlet处理q程。最lservlet向客戯回一个响应?/div>
需要注意的是:在JSP生命周期中,JSP的{换和~译q程只发生一ơ。一旦第一ơ编译完成,以后的调用同普通的servlet一栗大多数容器开发商提供预{化和~译的办法,是这些工作提前完成?/div>

草儿 2007-07-14 14:43 发表评论
]]>Web信息抽取技术纵览二http://www.aygfsteel.com/mlh123caoer/archive/2007/01/01/91297.html草儿草儿Mon, 01 Jan 2007 07:19:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2007/01/01/91297.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/91297.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2007/01/01/91297.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/91297.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/91297.html阅读全文

草儿 2007-01-01 15:19 发表评论
]]>
Web信息抽取技术纵览一http://www.aygfsteel.com/mlh123caoer/archive/2007/01/01/91293.html草儿草儿Mon, 01 Jan 2007 07:18:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2007/01/01/91293.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/91293.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2007/01/01/91293.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/91293.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/91293.html阅读全文

草儿 2007-01-01 15:18 发表评论
]]>
XFireQ轻杄单地开发Web Serviceshttp://www.aygfsteel.com/mlh123caoer/archive/2006/10/15/75257.html草儿草儿Sun, 15 Oct 2006 04:55:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2006/10/15/75257.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/75257.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2006/10/15/75257.html#Feedback2http://www.aygfsteel.com/mlh123caoer/comments/commentRss/75257.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/75257.html  Web Services使我们能够在|络上徏立分布式pȝQ应用程序组件可以通过Mq_、Q何语a和Q何方式访问。无论应用程序如何开发,使用了什么语aQ以及运行在什么操作系l^CQ只要它作ؓWeb ServiceQƈ且ؓ协同解决问题而设计,那么你的应用E序Q以M语言开发或在Q何^CQ都可以利用它的服务。这是Web Service的主要概c?/p>

  Z实现Web Services的^台无x和实现讉K独立性,软g行业需要遵循一些作为标准的技术。其中一些包?

  ---XML:在Web Services环境中各层之间进行传递的默认数据格式?/p>

  ---SOAP:装和交换信息的默认协议。第一ơ被提出Ӟ它是只取Simple Object Access Protocol(单对象访问协?的首字母。但是现在SOAP更多被认为是一个特定的名词Q以它自p命名,同样很多是用词不?SOAP实际上不是用来访问对象的。另外,它也不再单?/p>

  ---WSDL(Web Services Description LanguageQWeb Services描述语言):描述Web Services的语a。尽基于XMLq且可以被h理解QWSDL主要是由机器处理Q由客户端程序读取和理解?/p>

  下面的高U层ơ图表,ZWWW协会发布的“Web Services Architecture?Web Services架构)文档Q显CZq些技术在实际的工作环境中是如何发挥作?

点击攑֤此图? src=

  q个程图显CZWeb Services中的核心技术是如何工作的?/p>

  q里QProvider是提供服务的应用E序lgQRequester是用服务的客户端程序。很多其他技术也会参与到交互中,但是q个囑֏昄了在Web Services环境中必需的核心技术组件?/p>

  XFire是一个免费的开源SOAP框架Q它不仅可以极大方便地实现这样一个环境,q且可以提供许多Web Services规范中高U特征,q些特征在多数的商业或者开源工具都没有提供。你要恰当的理解q些单词:great ease and simplicity(非常L和简?。你会看到使用XFire创徏Web Services是多么的单?/p>

  假如你的Web应用有一个Javac,q且你想把它的一个方法发布ؓWeb ServicesQ当使用XFireӞ你不需要编写一行额外的Java代码。只需要编辑发布描q符Q然后你׃得到一个Web Services。是的,它相当地单。我们来看一个例子?strong>一个简单的Javac?/strong>

  我们的例子是一个银行业应用E序Q服务器是运行在J2SE1.4.2_07下的Apache Tomcat5.5.7。假定你已经了解如何使用Java~写Web应用E序Qƈ知道应该如何把它部v到Apache Tomcat服务器上。我们的Web应用E序非常?它只做一件事——将资金从一个̎戯{到另外一个̎户上。一个普通的JavacBankingService包含了一个叫做transferFunds()的方法来为我们完成这工作。它需要四个输入参?

  •   1?String fromAccount
  •   2?String toAccount
  •   3?double amount
  •   4?String currency

  代码如下:

package com.mybank.xfire.example;

import java.text.NumberFormat;
import java.text.DecimalFormat;

/** XFire WebServices sample implementation class.
*/
public class BankingService implements IBankingService {
   
    //Default constructor.
    public BankingService(){   
    }
   
    /** Transfers fund from one account to another.
    */
    public String transferFunds(
        String fromAccount, String toAccount, double amount, String currency){
       
        String statusMessage = "";
                     
        //Call business objects and other components to get the job done.
        //Then create a status message and return.
        try {
            NumberFormat formatter = new DecimalFormat("###,###,###,###.00");      
            statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+
            " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;
        } catch (Exception e){
            statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();
        }
        return statusMessage;
    }
   
}

  在这里你看到了什么异常的东西了吗?或许没有Q除了默认的构造函敎ͼcd是public。这是必ȝ。否则,XFire不能够初始化q个cR因Z用接口的设计是一个好的实践,所以我们的JavacM实现了一个称为IBankingService的接口。代码十分简?

package com.mybank.xfire.example;

public interface IBankingService { 

    public String transferFunds(
        String fromAccount, String toAccount, double amount, String currency);
       
}

  在实际实CQ这样一个方法可能包括各U类型的复杂调用、查询和处理操作。但是我们的CZ代码已经最化了,以至于我们可以集中精力在主要目标?把这个方法发布ؓWeb Services?/p>

  你可以看到BankingService是一个普通的Javac,没有M代码告诉我们它将会在Web Services中用。好的,q里我们不需要增加Q何东ѝ我们所有的工作都在部v描述W里完成?/p>

  Web应用的部|描q符

  在Java中,Web应用E序通常需要至一个部|描q符(叫做web.xml)对其q行配置。XFire本n是一个基于servlet的应用程序。因此,我们需要增加必要的引用到描q符文g中。然后我们还必须配置要创徏的Web Services。我们用一个称为services.xml的新文g来完成这件事?/p>

  web.xml

  首先Q修改web.xml。我们需要增加下面的XFire servlet相关的条?

<servlet>
        <servlet-name>XFireServlet</servlet-name>
        <display-name>XFire Servlet</display-name>
        <servlet-class>org.codehaus.xfire.transport.http.XfireConfigurableServlet
         </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/servlet/XFireServlet/*</url-pattern>
    </servlet-mapping>
   
    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

services.xml

  现在我们不得不说一下我们的Web Services的由什么组成的了。这׃个叫做services.xml的文件完成,它存攑֜META-INF/xfire目录下,而这整个目录攑֜WEB-INF/classes文g夹中Q它在Web应用E序的标准类路径中。这里是services.xml中的基本配置条目:

<beans xmlns="http://xfire.codehaus.org/config/1.0">
 
  <service>
    <name>Banking</name>
    <namespace>mybank</namespace>
    <serviceClass>com.mybank.xfire.example.IBankingService</serviceClass>
    <implementationClass>com.mybank.xfire.example.BankingService</implementationClass>
  </service> 
 
</beans>

   让我们看看这里都包含了什么内宏VWeb Services的定义包含在元素中,它还含有一些子元素。第一个子元素?name>Q它可以是你提供M的合法名字。这会被客LE序和其它需要定位你的服务的lg用到。例如,在服务准备好以后Q你在览器上使用q个名字来查看WSDL?/name>

  下一个子元素?lt;namespace>。Q何合法的XML名字都是可以的?lt;namespace>用来唯一标识你的服务的各个参数?br /><serviceClass>元素包含了Javacȝ名字Q它指定了方法签名。在我们的例子中Q它是接口IBankingService。如果JavacL有实CQ何接口,你就需要把cȝ名字攑֜q里。在你的JavacL者接口中可能有几个方法。只需要一个入口把它们全部发布为Web Services?/font>

  <implementationClass>保存了实现方法的Javacd。这是一个可选元素。如果上一个元?lt;serviceClass>包含了一个接口,那么相应的实现类必须在这里指定?/font>

  是q样。我们的Web Services配置完成?/font>?/p>

  XFire和其它类?/strong>

  现在是最后一步了Q需要得到所有必需的类库。我们怎样得到它们?去XFire|站Q下载xfire-distribution-1.0.zipQ然后解压到一个本地文件夹。复制下面的jar文g和它的库文g夹到WEB-INF/lib?

  •   ?activation-1.0.2.jar
  •   ?commons-codec-1.3.jar
  •   ?commons-httpclient-3.0.jar
  •   ?commons-logging-1.0.4.jar
  •   ?jaxen-1.1-beta-8.jar
  •   ?jdom-1.0.jar
  •   ?log4j-1.2.x.jar
  •   ?mail-1.3.3_01.jar
  •   ?spring-1.2.x.jar
  •   ?stax-api-1.0.jar
  •   ?wsdl4j-1.5.2.jar
  •   ?wstx-asl-2.9.jar
  •   ?xbean-2.1.0.jar
  •   ?xbean-spring-2.2.jar
  •   ?xfire-all-1.0.jar
  •   ?XmlSchema-1.0.jar

  一切妥当。我们来部v和启动应用程序。ؓ了部|示例应用,只需要复制websvc.war到Apache Tomcat的webapps文g夹中Q再{待几秒钟。它会自动启动。这个应用的全部源代码也包含在这个war文g中。我们的E序已经准备作ؓ一个Web Service了?strong>我们如何知道Web Service正在工作?

  Z了解Web Service是否正在工作Q我们需要测试。首先,我们试来看WSDL是否可用。我们在览器中输入URL。哪个URL?因ؓ我们的应用程序的war文g是websvc.warQƈ且在services.xml中给出的服务名是BankingQWSDL的URL应该?http://localhost:8080/websvc/services/Banking?wsdl?/p>

  h?URL的第一部分Q例如,http://localhost:8080Q可能会Ҏ你的应用服务器不同而不同。无论怎样Q当你输入URL后,会看到一个XML文档Q它的根元素??xml:namespace prefix = wsdl /?>。这个文档叫做服务的WSDL。如果你看到了,q就是你的应用作为Web Service已经可用的第一个证明?/wsdl:definitions>

  但是q个试是不够的。可能会发生q种情况Q可以看到WSDLQ但是从客户端程序可能会讉K不到服务。因此ؓ了核实服务是否可以访问了Q我们必M用一个客Lq行服务的实际调用来q行一个真正的试?/p>

  开发一个客L

  你可以用Q何的SOAP工具创徏客户端,例如Q?Net或者Apache AxisQ有很多U方?使用从WSDL产生的stubsQ用动态代理,{等。在例子中,我们使用一个动态代理,以一个简单的Servlet形式Q叫做WsClient.java。ؓ了保持代码两最,所有在屏幕昄的元素都攑֜了doGet()Ҏ中。对Web Service的实际调用由callWebService()Ҏ完成Q它相当地简单。和下面的类?

/* Call the Web service
    *
    */
    public String callWebService(
        String fromAccount, String toAccount, double amount, String currency)
        throws MalformedURLException, Exception {
       
        //Create a metadata of the service     
        Service serviceModel = new ObjectServiceFactory().create(IBankingService.class);       
        log.debug("callSoapServiceLocal(): got service model." );
  
        //Create a proxy for the deployed service
        XFire xfire = XFireFactory.newInstance().getXFire();
        XFireProxyFactory factory = new XFireProxyFactory(xfire);     
   
        String serviceUrl = "http://localhost:8080/websvc/services/Banking";
       
        IBankingService client = null;
        try {
            client = (IBankingService) factory.create(serviceModel, serviceUrl);
        } catch (MalformedURLException e) {
            log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());
        }   
              
        //Invoke the service
        String serviceResponse = "";
        try {
            serviceResponse = client.transferFunds(fromAccount, toAccount, amount, currency);
       } catch (Exception e){
            log.error("WsClient.callWebService(): EXCEPTION: " + e.toString());                
            serviceResponse = e.toString();
        }       
        log.debug("WsClient.callWebService(): status=" + serviceResponse);             

        //Return the response
        return serviceResponse;
    }

  q个代码是如何工作的?我来解释一?首先Q我们创Z个服务模型,它包含服务的说明——换句话_是服务的元数据。我们用XFire的ObjectServiceFactory从IBankingService.class接口创徏q个模型?/p>

  接着QؓXFire获得一个代理工厂对象,它包含了常规的代码,也相当地单和易懂。这一步中没有M特定应用的东ѝ从q个proxyFactoryQ用服务模型和服务端点URL(用来获得WSDL)Q我们可以得C个服务的本地代理。就是它了。这个代理就是实际的客户端。现在,我们可以调用它的transferFunds()Ҏ来得到我们需要的Web Service?/p>

  一旦示例应用发布ƈ启动Q就可以试servlet URL:

  http://localhost:8080/websvc/ws?/p>

  q个Servlet使用默认参数来调用Web Service和显C接收到的响应。页面的最后两行应该读?

  Response Received
  COMPLETED: CDN$ 500.00 was successfully transferred from A/C# 11111-01234 to A/C# 99999-05678

  现在你可以确定Web Service已经发布q且在运行中了?/p>

  Z试不同的输入|你可以用完整的URLQ例?

  http://localhost:8080/websvc/ws?from=11-2345&to=77-9876&amt=250.00&cur=EUR?/p>

  基本的Web Services开发步骤清?/strong>

  q个清单ȝ了将一个JavaҎ发布为Web Service所必须的步?

  •   1?查JavacȝҎ和默认构造函数确保ؓpublic
  •   2?增加XFire servlet相关条目到web.xml?
  •   3?创徏services.xmlQ把它放到WEB-INF/classes/META-INF/xfire目录?
  •   4?增加XFire和第三方包到你的Web应用的WEB-INF/lib文g夹中

  q就是所有需要的步骤Q是的,相当单?/p>

  XFire的其他高U特?/strong>

  XFire的用可能比较简单,但是在特性和功能性上Q它却占据着领导者的位置。下面是它的高Ҏ?

  •   ---本地数据l定支持POJOs(plain-old Java objects)、XMLBeans、JAXB(Java Architecture for XML Binding)、Castor{等。数据绑定说明了Web Services的XMLh和映到Java对象的XML响应?
  •   ---使用StAX(Streaming API for XML)处理XML文档。同DOM的基于树和SAX的事仉动的处理方式相比QStAX使用了拉(pull)机制Q它使处理更快速,内存效率更高?
  •   ---支持多种传输协议Q如HTTP、JMS(Java Message Service)和JVM内部传输?
  •   ---嵌入式,q是XFire的核心功能之一。你可以把这个SOAP引擎嵌入C的应用中Q完全隐藏所有XFire特定引用Q同h有配|都是程序驱动?
  •   ---丰富的APIQ它使XFire可高度自定义Q允许开发者在不同的阶D|莯求,q且对他们进行处理?
  •   ---兼容最新的标准例如SOAP1.1(没有加密q程工程调用Q或者RPC)?.2、WSDL1.1、the Web Services Interoperability Organization’s Basic Profile 1.0、Web Services Addressing和WS-Security?/li>

  最重要的是QXFire属于C代Web Services引擎。不仅仅是营销用语Q“新一代”有一些重要的意义。Apache Axis是第一代Java语言的Web Services引擎Q已l成Z所有后来工L参考标准。在q去的几q里QAxis以及q些其它的工具已l在很多生环境中进行了实地试。从中得出的一个关键的问题是Web Servicesq不最适合RPCcd的通信。对于性能和效率,面向文档的消息Ş式是最好的方式。但是Apache Axis和很多其他的Web Services引擎都被设计成了面向RPC?管它们支持文档形式)。现在,整个行业正在开发新一代的SOAP引擎Q设计ؓ面向文档的。Apache已经宣布l束旧版本的Axis引擎开发,现在专注于Axis2Q现在它的预发布版本?.95。XFire在今q的2月䆾发布了它的第一个品版?1.0)。它的下一个版?1.1)仅仅在几个星期之后就q行了发布?strong>性能

  Web Services需要消耗很多资源,但是性能斚w它们不是那么引h注目。XFire打破了这U趋ѝ它消耗更的内存(部分因ؓ StAX的?Q但是表现却比多数可比较的SOAP引擎。你可以在资源中提供的链接中看到比较的结果?/p>

  此外QXFireq提供了各种Ҏ来进一步优化性能。一个方法是使用JVM内置传输(in-JVM transport)。如果你知道Web Services和客Lq行在同一个JVM上,你可以选择使用本地传输Q它可以大幅提升性能。在CZ中的客户端代码,看以下指定服务端点URL的这?

  String serviceUrl = "http://localhost:8080/websvc/services/Banking";

  替换?/p>

  String serviceUrl = "xfire.local://Banking";

  你会看到性能上的明显提高Q因为它l过了整个网l层?/p>

  局限?/strong>

  XFire有些重要的局限性你应该清楚:

  •   ---开发Web Services的好的实跉|从WSDL开始。大部分的SOAP引擎提供了从WSDL生成服务stub的工兗XFire也提供了q样一个工兗但是它是基于注?annotations-based)的,因此需要J2SE5.0。对于仍坚持使用J2SE1.4.x的h来说Q它不是一个o人拍手叫好的工具Q因为我们有很多其他方式来编写客LQ一个就是文章中演示的方式?
  •   ---附g支持Q它会包含在未来发行的版本中?
  •   ---易于学习的用户向对{XFire团队在这个方面还有很多工作需要做?/li>

  l论

  Java当前的趋势是化技术的使用。因此,我们正看C波基于POJO的开发成。同Ӟ面向服务架构(SOAQServices-oriented architecture)和Web Services已经变成了当前行业的热点话题。XFire正是在这U情况下产生的。它能够使POJO发布为最的Web ServicesQ而只需要付出最化的努力。从而,它希望使用q项技术的初开发者的学习曲线变得q缓。同Ӟ׃它兼Ҏ新标准和提供了丰富的APIQXFire为高U用h供了更多的大好机会?/p>

版权声明QTechtarget获Matrix授权发布,如需转蝲误pMatrix
作?Shahid Ahmed ;mydeman
原文:http://www.javaworld.com/javaworld/jw-05-2006/jw-0501-xfire.html
Matrix:http://www.matrix.org.cn/resource/article/2006-09-24/XFire_6bd1061c-4bc6-11db-978f-43b3336b7e51.html



草儿 2006-10-15 12:55 发表评论
]]>
AJAX .Net Wrapper usage guidehttp://www.aygfsteel.com/mlh123caoer/archive/2006/07/22/59519.html草儿草儿Sat, 22 Jul 2006 03:19:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2006/07/22/59519.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/59519.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2006/07/22/59519.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/59519.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/59519.html阅读全文

草儿 2006-07-22 11:19 发表评论
]]>
六步使用ICallbackEventHandler实现无刷新回?http://www.aygfsteel.com/mlh123caoer/archive/2006/06/10/51810.html草儿草儿Sat, 10 Jun 2006 04:49:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2006/06/10/51810.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/51810.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2006/06/10/51810.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/51810.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/51810.html    关于ICallbackEventHandler|上已经有很多文章介l了Q这实为画蛇添?

ICallbackEventHandler存在于System.Web.UI中,我们先做一个非常简单的例子来试用一下?/p>

   W一步,在VS2005中徏立一个新的WEBHg?br />   W二步,在ASPX中,放上一DHTML代码(如下)Q?br />

1<body>
2    <form id="form1" runat="server">
3    <div>
4        <button onclick="CallServer()">CallServer</button>
5    </div>
6    </form>
7</body>


   W三步,然后?lt;HEAD></HEAD>中放入一DJavaScript脚本Q?br />

 1 <script type="text/javascript">
 2     function CallServer()
 3     {
 4         var product = "";
 5         <%= ClientScript.GetCallbackEventReference(this"product""ReceiveServerData",null)%>;
 6     }

 7     
 8     function ReceiveServerData(rValue)
 9     {
10         alert(rValue);
11     }

12 </script>

 

   W四步,在此ASPX的后台CS代码中,l承ICallbackEventHandler接口Qƈ实现接口中的两个ҎQ?br /> ICallbackEventHandler.GetCallbackResult()
    ?br /> ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

   W五步,增加一个变量CallBackValueQƈ修改接口的两个方法ؓQ?br />

 1 private string CallBackValue = string.Empty;
 2    
 3 string ICallbackEventHandler.GetCallbackResult()
 4 {
 5  return CallBackValue + ",ok";
 6 }

 7
 8 void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
 9 {
10  this.CallBackValue = eventArgument;
11 }

12

 

    W六步,q行Q界面上会出C个按钮,点击后,会将“测试”这个字W串传至后台Q后台C#代码字W串加上“,OK”后q回l客L的JavaScript代码Qƈ昄?/p>

    以上六步Q就可以实现无刷新回调了。现在,我们来分析一下几D代码?br />    先看W三步中的JavaScript代码Q其中的CallServer()Ҏ中进行了回调Q回调的语句为:
<%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
   
    里面四个参数中第二个参数指定productq个JavaScript中的字符串变量传回后収ͼW三个参数指定了从后台返回时接收q回信息的JavaScriptҎReceiveServerData(string Value)?/p>

    W五步中后台的两个方法,一个ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)用来接收前台JavaScript中传来的字符串变量,q赋值给内部变量this.CallBackValueQ另一个方法ICallbackEventHandler.GetCallbackResult()变更后的内部变量this.CallBackValueq回l前台JavaScriptҎReceiveServerData(string Value)?/p>

    调用的顺序是Q?(前台)CallServer() --> (后台)ICallbackEventHandler.RaiseCallbackEvent(string eventArgument) --> (后台)ICallbackEventHandler.GetCallbackResult() --> (前台)ReceiveServerData(string Value)?/p>

    整个调用q程非常单,而其中非常关键的一步是W三步的
<%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
q个ҎQ以下是从网上找来的一D资料,大家可以看看?/p>

GetCallbackEventReference使得客户端方法在客户端请求结束时得到回收?它也让CallBackManager 定产生哪种回叫Ҏ?在这个例子内使用的被重蝲的方法是Q?/p>

   public string GetCallbackEventReference(
      string target, string argument,
      string clientCallback, string  context,
string clientErrorCallback)
Table 1. GetCallBackEventReference Ҏ的参数描q?br />Parameters Description target ID of the page where the callback invocation is handled. For more see the other overloaded options available in the next immediate section.In our sample "this" is the argument value, since the callback is handled in the same page.  argument This is the parameter defintion used to send value to the server. This value is received by parameter "eventArgument" at the server end using the RaiseCallbackEvent event."arg" becomes the first parameter name in our sample. The value is passed through this argument from the client. clientCallback Method name of the callback that is invoked after successful server call."CallBackHandler" is the method name that handles the callback.   context A parameter that is associated with the "argument" from the client. It usually should be used to identify the context of the call. You will understand this better from the sample implementation.In the sample "ctx" is just another parameter definition used. The value for this is passed from the client. clientErrorCallback Name of the method that is called from the CallBackManager in case of any errors.
从这个方法返回的string?

  
   __doCallback('__Page',arg,CallBackHandler,ctx, ErrorCallBack)
 
另一个重载方法是:

   public string GetCallbackEventReference(
      Control control, string argument,
      string clientCallback, string  context)
  
   public string GetCallbackEventReference(
      Control control, string argument,
      string clientCallback,  string  context,
string clientErrorCallback)



草儿 2006-06-10 12:49 发表评论
]]>
ajax W记ȝ1http://www.aygfsteel.com/mlh123caoer/archive/2006/06/06/50809.html草儿草儿Tue, 06 Jun 2006 08:46:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2006/06/06/50809.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/50809.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2006/06/06/50809.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/50809.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/50809.html        大家往往只从技术的角度来解释AjaxQ而事实上Ajaxq不是一个单一的技术概c在技术范畴之外,Ajaxq包含了很多web用户体验斚w的元素,q也是ؓ什么舆论普遍认为Ajax是一Uweb2.0技术的原因。毕竟web2.0的创Ch值有很大一部分来自于对用户体验和用户作用的重视。Ajax所倡导的方式则能够大大优化用户的用感受。由于在服务器和览器之间的数据传递交由JavaScript控制Q开发h员得以蟩Z往严格的请求应{模式从而构建更h用户友好性的web应用?br />       Ajax首先׃是一纯_的技术,而更q似于一个技术框架。同时Ajax体系当中也ƈ没有什么新的技术元素,其核心是Javascript技术,一U以往被认Z企业应用l缘而只适用于在客户端展CZ?把?的编E语aQ而XMLQXHTML,DOM,XML-HTTPREQUEST,CSS{经常被用于实现Ajax的技术元素也是多q应用的成熟技术?br />        用户与浏览器的操作交互,览器与服务器的数据交互是可?异步"q行的,q也是Ajaxq个名字的由来,Ajax的英文全U是Asynchronous Javascript and XML ,是指一U创Z互式|页应用的网开发技术?具体来说QAjaxZ以下的技?
        XHTML:对应W3C的XHTML规范Q目前是XHTML1.0?
  CSS:对应W3C的CSS规范Q目前是CSS2.0
  DOM:q里的DOM主要是指HTML DOMQXML DOM包括在下面的XML?
  JavaScript:对应于ECMA的ECMAScript规范
  XML:对应W3C的XML DOM、XSLT、XPath{等规范
  XMLHttpRequest:对应WhatWG的Web Applications1.0规范
       当用戯求新的数据内ҎQ传l的web机制只能{待服务器将全部数据q回Q然后刷新ƈ重新昄整个面Q而Ajax只请求那些需要改变的内容Q同时只改变那些需要改变的区域Q而ƈ不对q个面q行hQ这U能力不但h成了Ajax带给用户的最主要印象Q而且׃数据传递量的有效降低得Ajax成ؓ~解web性能瓉的重要武器?br />       无论是Ajax的模式还是所依托的具体技术在很多q前已l出CQ之所以到今天才获得应用和认同Q说明再先进的东西也只有在被需要的情况下才能得到真正的发展。Ajax技术之中,最核心的技术就是XMLHttpRequestQ它最初的名称叫做XMLHTTPQ是微Y公司Z满开发者的需要,1999q在IE5.0览器中率先推出的。后来这个技术被上述的规范命名ؓXMLHttpRequest。XMLHttpRequest行于览器中的JavaScript脚本提供了一U在面之内与服务器通信的手Dc页面内的JavaScript可以在不h面的情况下从服务器获取数据Q或者向服务器提交数据?br />Ajax应用与传l的Web应用的区别主要在3个地?
     1. 不刷新整个页面,在页面内与服务器通信?

     2. 使用异步方式与服务器通信Q不需要打断用L操作Q具有更加迅速的的响应能力?

     3. 应用仅由量面l成。大部分交互在页面之内完成,不需要切换整个页面?br />IBM?月底已经发布了Open Ajax目的Ajax Toolkit Framework(ATF)1.0Q是一个基于Eclipse IDE的Ajax开发工兗异步交互、JavaScript脚本和XML装数据是AJAX的三大特征?br />首先Q您拥有一些简单的定位Ҏ讎ͼ它连接到一个JavaScriptcastVote(rank)函数?
function castVote(rank) {
  var url = "/ajax-demo/static-article-ranking.html";
  var callback = processAjaxResponse;
  executeXhr(callback, url);
}

  该函Cؓ您想要与之通信的服务器资源创徏一个URLq调用内部函数executeXhrQ提供一个回调JavaScript函数Q一旦服务器响应可用Q?br />该函数就被执行。由于我希望它运行在一个简单的Apache环境中,“cast vote URL”只是一个简单的HTML面。在实际情况中,被调用的
URL记录票数ƈ动态地呈现包含投票L的响应?

  下一步是发出一个XmlHttpRequesthQ?
function executeXhr(callback, url) {
  // branch for native XMLHttpRequest object
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = callback;
    req.open("GET", url, true);
    req.send(null);
  } // branch for IE/Windows ActiveX version
  else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = callback;
      req.open("GET", url, true);
      req.send();
    }
  }
}


  如您所见,执行一个XmlHttpRequestq不单,但非常直观。和q_一P在JavaScript领域Q大部分的工作量都花在确保浏览器兼容?br />面。在q种情况下,首先要确定XmlHttpRequest是否可用。如果不能用Q很可能要用Internet ExplorerQ这样就要用所提供的ActiveX?br />现?

executeXhr()Ҏ中最关键的部分是q两行:

req.onreadystatechange = callback;
req.open("GET", url, true);

  W一行定义了JavaScript回调函数Q您希望一旦响应就l它p动执行,而req.open()Ҏ中所指定的“true”标志说明您惌异步执行该请求?

  一旦服务器处理完XmlHttpRequestq返回给览器,使用req.onreadystatechange指派所讄的回调方法将被自动调用?

function processAjaxResponse() {
  // only if req shows "loaded"
  if (req.readyState == 4) {
    // only if "OK"
    if (req.status == 200) {
      502 502'votes').innerHTML = req.responseText;
    } else {
      alert("There was a problem retrieving the XML data:
" +
      req.statusText);
    }
  }
}

现在processVoteResponse()函数开始显C出其意义了。它首先查XmlHttpRequest的整体状态以保证它已l完成(readyStatus == 4Q,
然后Ҏ服务器的讑֮询问h状态。如果一切正常(status == 200Q?׃用innerHTML属性重写DOM的“votes”节点的内容?



草儿 2006-06-06 16:46 发表评论
]]>
java使用sax对xml文档的解?http://www.aygfsteel.com/mlh123caoer/archive/2006/05/21/47304.html草儿草儿Sun, 21 May 2006 09:10:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2006/05/21/47304.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/47304.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2006/05/21/47304.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/47304.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/47304.html随着互联|技术的发展QXML技术变得越来越重要Q从而出C很多
与XML的整合应用方面的技术,SAX是其中之一。在q里Q我q?br />谈谈java怎样使用sax对xml文档的解析?/p>

首先Q让我们来谈谈SAX对XML文档的解析机制。一般情况下QSAX 处理?br />分析XML代码生成以下事Ӟ


Start document
Start element ()
Characters (white space)
Start element ()
Characters ()
End element ()
............
End element ()

具体解析步骤如下
一?创徏事g处理E序QSAX 提供应用E序可扩展的c?DefaultHandler?br />创徏的解析类config必须l承c?DefaultHandler?br />如:public class Config extends DefaultHandler{}
二、?JAXP 来创析器Q?JAXP 中的c?XMLReaderFactory
来创析器。首先声?XMLReader的一个对?parser。然后?br />XMLReaderFactory的createXMLReaderҎ来创?SAXParser?br />XMLReader parser =
XMLReaderFactory.createXMLReader(
"org.apache.xerces.parsers.SAXParser");
三、一旦创Z解析器,则需要将 config 讄为内容处理程序,
以便于其接收事g?br />parser.setContentHandler(this);

但是Q当然M有可能在试图q行解析Ӟ数据有问题。这时应该创?br />ErrorHandler 在这L情况下,有一个处理程序来处理错误和内宏V?br />parser.setErrorHandler(this);
四、准备对文gq行实际解析。应用程序文件传递给 parse()Q然后应用程?br />会l运行?br />parser.parse(confFile);
五、接下来开始对文档q行解析了。前面说qSAX的处理机ӞSAX在处理XML?br />的过E中Q首先生startDocument()事gQ实际上该事件什么也没有发生Q因?br />q没有定义Q何解析的事g。?startDocument() 事g只是Z通知文档的开
始。类似其?SAX 事gQ该事g抛出 SAXException?br />例如Q?br />public void startDocument()
throws SAXException {
System.out.println(
"Tallying survey results...");
}

六、跟下来Q就正式开始对文gq行解析了。这时SAX会生一个startElement()
事gQ对于每个元素,都会回送一个传递给 startElement() 事g的名U。不q?br />解析器实际所传递是Q该元素的名U空间信息;该元素的实际名称?localNameQ?br />名称I间别名?localName 的组合(否则是限定名?qnameQ;以及该元素Q?br />属性。startElement() 事gq提供对元素属性的讉K。将q些属性传递进UCؓ
Attributes的数据结构。根据属性在数组中位|或属性的名称Q可以检索该属性倹{?br />例如Q?br />public void startElement(
String namespaceURI,
String localName,
String qName,
Attributes atts)
throws SAXException {
String s = (!"".equals(localName)) ? localName : qName;

System.out.print("Start element: ");
System.out.println(localName);
tag = s;
if (localName == "Connector") {
System.out.println("name: "
+ atts.getValue("name"));
} else if (localName == "port") {
thisQuestion = atts.getValue("servername");
}else if (localName == "maxThreadPoolSize") {
thisQuestion = atts.getValue("poolname");
}
if (localName == "Database") {
System.out.println("name: "
+ atts.getValue("name"));
} else if (localName == "driverName") {
thisQuestion = atts.getValue("dataname");
}else if (localName == "encoding") {
thisQuestion = atts.getValue("codename");
}
thisElement = localName;


for (int att = 0;att < atts.getLength(); att++) {
String attName = atts.getLocalName(att);
System.out.println(" "
+ attName + ": "
+ atts.getValue(attName));
}


}
七、有了元素,接下来用 characters() 来检索实际的数据。这时可以用下面的
Ҏ获得实际的数据:
可以用String s = new String(ch, start, length).trim();
q个Ҏ来获得数据?br />例如Q?br />public void characters(char[] ch,
int start,
int length)
throws SAXException {

String s = new String(ch, start, length).trim();
if (!"".equals(s)) {
if ("port".equals(tag)) {
System.out.println(Integer.parseInt(s));
} else if ("maxThreadPoolSize".equals(tag)) {
System.out.println(Integer.parseInt(s));
}
//System.out.println(tag+" = "+s);
}

s = new String(ch, start, length).trim();
if (!"".equals(s)) {
if ("driverName".equals(tag)) {
System.out.println(s);
} else if ("encoding".equals(tag)) {
System.out.println(s);
}
//System.out.println(tag+" = "+s);
}
}
八、接下来的要做的是用endElement()来结束对一个xml?element的解析?br />例如Q下面的Ҏ
public void endElement(String namespaceURI,
String localName,
String qName)
throws SAXException {

printIndent(indent);
System.out.println("End Element: "+localName);
indent = indent - 4;
thisQuestion = "";
thisElement = "";
九、最后就是告诉程序,xml文g解析完毕Q此Ӟ用endDocument()来结束程序?br />例如Q?br />public void endDocument() {}

ȝ来说Qsax处理xml的方法还基本上是差不多的Q只是一二步的方法相对多一?
那些其他的方法我q里׃多说了,p者自己去查找资料?br />



草儿 2006-05-21 17:10 发表评论
]]>
Ajax 学习资源http://www.aygfsteel.com/mlh123caoer/archive/2006/05/21/47302.html草儿草儿Sun, 21 May 2006 09:05:00 GMThttp://www.aygfsteel.com/mlh123caoer/archive/2006/05/21/47302.htmlhttp://www.aygfsteel.com/mlh123caoer/comments/47302.htmlhttp://www.aygfsteel.com/mlh123caoer/archive/2006/05/21/47302.html#Feedback0http://www.aygfsteel.com/mlh123caoer/comments/commentRss/47302.htmlhttp://www.aygfsteel.com/mlh123caoer/services/trackbacks/47302.htmlAJAX开发h员的~译模式:http://www.ajaxpatterns.org
•  XMLHttpRequest教程Q“动态网|口?http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
?JavaScript性能基准:http://blogs.ebusiness-apps.com/dave/?p=14
?AJAX资源:http://www.ajaxmatters.com
?JavaScript规范:http://www.ecma-international.or ... ndards/Ecma-262.htm
?介绍JavaScript对象标识:http://www.crockford.com/JSON/index.html
•  Mozilla 的Venkman JavaScript调试?http://www.mozilla.org/projects/venkman/
•  XML DOM参?http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
xmlsdk/html/e9da2722-7879-4e48-869c-7f16714e2824.asp
?Microsoft Dynamic HTML reference: http://msdn.microsoft.com/library/default.asp?url=/
workshop/author/dhtml/reference/dhtml_reference_entry.asp
?Gecko DOM Reference: http://www.mozilla.org/docs/dom/domref/
?"“移植IE应用到Mozilla?br />http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/
?Mozilla XUL reference:
http://www.xulplanet.com/
?Microsoft XAML reference:
http://windowssdk.msdn.microsoft ... t.asp?url=/library/
en-us/wcp_conceptual/html/0ff5f36e-dd84-44d1-aa3e-5bb4f147b169.asp?frame=true
?James Jesses Garret introduced the term AJAX in his article "AJAX: A New Approach to Web Applications," (Adaptive Path, February 2005): “AJAXQ新的网应用开发方式?br />http://www.adaptivepath.com/publ ... archives/000385.php
?JetBrains IntelliJ IDEA:
http://www.jetbrains.com/
?Microsoft Visual Studio:
http://msdn.microsoft.com/vstudio/
?JSEditor:
http://jseditor.sourceforge.net/
?JSEclipse:
http://www.interaktonline.com/Pr ... JSEclipse/Overview/
?ActiveState Komodo:
http://www.activestate.com/Products/Komodo/
?XHTML:
http://www.w3.org/TR/xhtml1/
?Document Object Model:
http://www.w3.org/DOM/
?Cascading Style Sheets:
http://www.w3.org/Style/CSS/
?Extensible Stylesheet Language:
http://www.w3.org/Style/XSL/
?XForms:
http://www.w3.org/MarkUp/Forms/
?Scaling Vector Graphics:
http://www.w3.org/Graphics/SVG/
?XPath:
http://www.w3.org/TR/xpath
?AJAX.Net:
http://ajax.schwarz-interactive.de/csharpsample/default.aspx
?Backbase:
http://www.backbase.com
?Bitkraft:
http://www.tiggrbitz.com/
?Django:
http://www.djangoproject.com/
?Dojo:
http://www.dojotoolkit.org/
?DWR (Direct Web Reporting):
http://getahead.ltd.uk/dwr/
?MochiKit:
http://mochikit.com/
?Prototype:
http://prototype.conio.net/
?Rico:
http://openrico.org/rico/home.page
?Sajax:
http://www.modernmethod.com/sajax/
?Sarissa:
http://sarissa.sourceforge.net/doc/
?Script.aculo.us:
http://script.aculo.us/
?Ruby on Rails:
http://www.rubyonrails.org/
?For more on AJAX and DWR, read "AJAX Made Simple with DWR," Cloves Carneiro Jr. (JavaWorld, June 2005): 关于AJAX和DWRQ请阅读“AJAX使用DWR更简单?br />http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr.html
?For more articles on Java development tools, browse the Development Tools section of JavaWorld’s Topical Index: 更多Java开发工L文章Q请览JavaWorld的开发工具部分烦引页
http://www.javaworld.com/channel_content/jw-tools-index.shtml
?For more articles on XML, browse the Java and XML section of JavaWorld’s Topical Index: 更多XML的文章,h览JavaWorld的Java和XML部分索引?br />http://www.javaworld.com/channel_content/jw-xml-index.shtml
?For more articles on UI design, browse the User Interface Design section of JavaWorld’s Topical Index: 更多UI设计的文章,h览JavaWorld的UI设计部分索引?br />http://www.javaworld.com/channel_content/jw-ui-index.shtml

草儿 2006-05-21 17:05 发表评论
]]>
վ֩ģ壺 ӱʡ| | ׼| | | Ͱ| | | ƽ| | | | | | | ɽ| | ÷| | ɳƺ| | | ũ| | | | ̩| | | ־| | ƽ| ͼʲ| | ױ| | | Ƽ| ȫ| ˮ| |