一个用于J2EE应用程序的Backbase Ajax前端

  动态HTML技术已经出现了多年。最近,Google的最新Web应用程序GMail、Google Suggests和Google Maps,在前端页面中重新引入了基于标准的DHTML开发模型。Google证明了,DHTML开发模型能够让开发人员创建具有可视化吸引力和高度交互式的Rich Internet Application(丰富网络应用程序,RIA)。

  Adaptive Path公司的Jesse James Garrett为这个基于标准的RIA开发模型创造了术语Ajax (Asynchronous JavaScript + XML)。与传统的基于页面的Web应用程序模型相比,Ajax有3点不同之处:

  • 有一个客户端引擎担任用户界面(UI)和服务器之间的中介。
  • 用户行为由客户端引擎处理,而不是生成发往服务器的页面请求。
  • XML数据在客户端引擎和服务器之间传输。

  换言之,Ajax解决方案包括一个客户端引擎,它用于呈现用户界面,并使用XML格式与服务器通信。这个引擎由很多JavaScript函数组成,位于Web浏览器中,它不需要插件,也不需要用户安装。

  基于Ajax的RIA正在迅速成为Web应用程序前端的基准,因为它可以同时提供二者的优点:丰富性和可达性。Ajax应用程序和桌面应用程序一样丰富,响应高度灵敏,并且可以在一个页面上提供所有数据,无需刷新页面。它们还拥有基于标准的浏览器应用程序的可达性特点,这类应用程序可以在不具备浏览器插件或客户端applet的情况下进行部署。

  Backbase所提供的Ajax软件具有以下特点:基于标准、功能全面且易于使用。Backbase Presentation Client (BPC)基于Ajax技术,它使用称为Backbase XML (BXML)的附加标签扩展了DHTML。Backbase XML Server Edition for J2EE (BXS)包含了一些服务器端的组件,利用这些组件,J2EE开发人员可以快速开发J2EE应用程序的Ajax前端。

  在本文中,我使用Backbase为Java Pet Store开发了一个基于Ajax的前端。该案例分析说明了如何使用Backbase技术作为J2EE应用程序的Ajax表示层。您可以查看文中所描述的应用程序的在线演示,网址是http://www.backbase.com/xmlserver

Backbase Ajax表示层

  Web开发人员应该能够轻松创建具有以下特点的Rich Internet Application (RIA):完全基于HTML标准(W3C),不需要最终用户安装插件,速度超快,能够在所有浏览器上进行操作,并与J2EE运行时和开发环境完全集成。RIA利用客户端(Web浏览器)资源创建和管理用户界面,从而为最终用户提供一个响应灵敏而且具有应用程序风格的用户界面。

  这种方法最近被称为Ajax。Ajax这个术语的灵感来源于Gmail、Google Maps和Google Suggests这类应用程序,它把现有的浏览器技术提高到了一个新的水平上。RIA从根本上改进了在线应用程序的可用性和有效性。Ajax RIA只使用标准的浏览器技术(如JavaScript、XHTML和XMLHttpRequest对象)就做到了这一点。通过使用XMLHttpRequest,在将数据异步加载到界面中时就无需刷新页面。

  Backbase在J2EE架构中提供一个Ajax表示层,它结合了目前的J2EE服务器和先进的富客户端技术的优点。Backbase表示层控制了富用户界面的每个方面:与最终用户的交互模型,与后端系统的集成,以及整个客户端-服务器通信。Backbase直接提供了用于聚合来自任意位置的XML的下一个范型,将数据绑定到先进的富用户界面控件,并在一个统一的富用户界面中交付组合应用程序。

  Backbase表示层由一个客户机和一个服务器组成。Backbase Presentation Client (BPC)是一个基于Ajax的GUI引擎,它允许开发人员以声明性的方式快速构建RIA。Backbase XML(BXML)是对XHTML的扩展。它为开发人员提供了交付富前端功能的附加标签(B tag)。Backbase XML Server (BXS)提供一种XML流水线架构,利用它可以从Web服务、数据库或Java对象获取数据,可以聚合和转换这些数据,并将其绑定到BPC中的UI元素。BPC和BXS相结合,可以在Web浏览器和应用服务器之间搭建一座功能强大的桥梁,并提供一个分布在客户端和服务器上的完整的富Internet表示层。

  图1说明了在逻辑和物理应用程序架构中,Backbase所处的位置。应用程序由一个J2EE后端和一个基于Ajax的RIA前端组成。从逻辑上说,Backbase提供了表示层,而J2EE提供了业务逻辑和数据层。从物理上说,表示层分布在客户端和服务器上。在客户端上,Backbase使用BPC扩展了浏览器。在服务器上,Backbase使用BXS扩展了应用服务器。

图1. Backbase富Internet表示层

Pet Store案例分析

  我们将使用Java Pet Store作为案例来分析如何为J2EE应用程序添加Backbase RIA前端。Java Pet Store Demo是Sun Microsystems提供的一个示例应用程序,其目的是为了演示如何使用Java 2 Platform, Enterprise Edition(J2EE)构建Web应用程序(详情请参见http://java.sun.com/developer/releases/petstore)。

  Java Pet Store是业内一个著名的参考应用程序(pet store还有.NET和Flash版本)。由于以下两个原因,它成为为J2EE应用程序添加基于Ajax的RIA前端的完美案例:

  • Java Pet Store是一个完整的Web应用程序。

    Sun设计Pet Store的目的是演示所有常见的Web应用程序功能。通过使用Pet Store作为案例,我可以说明为J2EE应用程序添加RIA层的所有方面。

    作为一个典型的在线商店,它包含以下功能:

    • 浏览产品类别。
    • 在购物车中添加和删除物品。
    • 填写订单表单。
    • 提交订单。
  • Java Pet Store有一个传统的HTML前端。

    使用RIA前端的目的是提供更简单和响应更灵敏的GUI,以及通常更为丰富的Web用户体验。我将说明,如何通过Backbase RIA技术极大地改进应用程序的前端,同时无需对后端和总体系统需求做任何修改。

    Pet Store的RIA前端将通过以下方式改善可用性:

  • 把前端变为一个单页面的界面(SPI)。
  • 提供更先进的UI控件(如模态弹出式菜单)。
  • 使用可视化效果(例如,把宠物放入购物车)。
  • 更加有效地利用电脑屏幕的操作区域。

RIA Pet Store前端

  在这一节中,我将讨论经过改进的新Pet Store RIA前端。

  下面的两个屏幕快照演示了前端的改进。要获得对Backbase RIA前端更直观的感受,请访问http://www.backbase.com/xmlserver上的在线演示,或者到http://www.backbase.com/download下载Backbase社区版本。

下面两个图对两个前端进行了可视化的比较。图2显示的是原来静态的多页面HTML前端。图3显示的是新的Backbase SPI前端:

图2. 原始HTML前端

图3. 新Backbase前端

  Backbase为创建丰富的单页面Web界面提供了许多可能性。下面列出了一些Pet Store所使用的例子。

  • 选项卡式的单页面浏览

    在Web界面上,不同的动物种类(狗、猫等等)被表示为不同的选项卡。点击一个选项卡就会打开相应的类别,显示可供出售的宠物。

    在Backbase SPI中,无需刷新页面就可以打开选项卡。BPC只从服务器请求所需的数据,然后更新客户端的视图。SPI机制可以极大地缩短响应时间,让客户随心所欲地在类别之间来回穿梭。

  • 活动的多功能界面

    界面有三个主要功能——类别浏览、购物车和页面引导历史记录,它们在界面上都是一直可见的。因此,购物者总是能够查看购物车的当前内容或最近看过的宠物的记录。

    这些功能是高度同步的:浏览一个宠物时,历史记录将自动更新为在记录中显示该宠物。定购一个宠物时,它将被添加到购物车中。上述一切都发生在客户端的一个页面上(例如,无需重新加载页面就可以更新界面的各个部分)。

  • 界面变化的流畅可视化效果

    进行浏览时,客户将会看到不断变化的界面视图。例如,他可以按照价格和名称对宠物进行排序。界面需要根据新的排列顺序显示更新以后的宠物清单。

    在Backbase RIA前端中,以前的视图被使用可视化效果的新视图所代替,新视图向最终用户显示什么正在改变。图4说明了如何通过流畅的定位效果,把按名称排列的顺序转变为按价格排列的顺序:

    图4.类别视图的排列顺序转换

  • 用于提高转换速度的信息栏验证

  为了执行购买,购买者必须在一份表单中填入个人详细信息。Backbase极大地简化了这个购买过程,通过客户端的信息栏验证提供即时的反馈,并在提供所有数据的过程中提供逐步的指南和概述。

  图5显示了在填写表单的第一个步骤中,对于e-mail地址信息栏的验证。当购买者填写下一栏时,就会提供即时的反馈。

图5. 信息栏验证—e-mail栏

Backbase RIA Pet Store的架构

  增强Pet Store(或其他任何Web应用程序)的前端时,我们将继续依赖于以下两条架构基本原则:

  • 最终用户仍然使用标准的Web浏览器访问Pet Store,无需添加任何插件。
  • 由J2EE业务逻辑和数据组成的整个后端保持不变。

  现有的后端在开发期间是完全孤立的,而且不会改变,这个事实对于架构师和IT管理人员十分有利。通过一个规整的、模块化的架构,他们将能够控制风险和成本,同时显著提高Web应用程序的用户友好性。

  Backbase的富表示层技术由两个模块组成,它们将被加入到架构中。在客户端,BPC管理着SPI,并通过异步响应事件来处理与最终用户之间的交互。在服务器端,Backbase XML Server这个灵活的XML管道可以连接到任意服务器端的数据源,包括Web服务、文件、数据库或本地Java对象。图6说明了BPC和BXS如何共同为RIA提供一个声明式的、基于XML的端到端表示层。

图6. 声明式的端到端表示层

Backbase表示客户端

  BPC是一个基于Ajax的GUI引擎,它运行在标准的Web浏览器中。运行时,BPC被加载到浏览器中,然后它会接收BXML代码,构造对应的B树,并不断地把这种表示转换为浏览器所呈现的DOM树。图7说明了运行时转换过程。

图7. BPC运行时

Backbase XML

  Backbase XML (BXML)是XHTML的扩展。开发人员通过创建BXML应用程序来开发富前端,包括BXML标签、标准的XHTML和CSS。BXML是一种声明性语言,它包含了XHTML中所没有的标签(B标签)

  BXML包含用于下列用途的标签:

  • 定义屏幕分区()
  • 交互式客户端控制()
  • 处理标准的用户交互事件(onClick)
  • 处理高级的用户交互事件(拖放和调整大小)
  • 管理客户端状态
  • 处理可视化效果(使修改任意CSS属性的过程动画化)
  • 数据绑定
  • 使用XSLT的一个子集进行客户端转换

用于J2EE的Backbase XML Server

  Backbase XML Server (BXS)是一个服务器端的引擎,用于把BPC链接到任意J2EE后端。和BPC一样,BXS是完全基于XML的,其编程是声明性的。它使用一种XML管道架构,提供功能强大的服务器端转换和聚合。

  BXS附带一些用于访问最常用的数据源(包括Web服务、数据库、文件系统和本地Java对象)的开箱即用任务。我们使用Backbase标签对从这些源获得的数据进行聚合,然后使用XSLT进行转换。结果以无格式XML数据或BXML表示代码的形式返回给BPC。

  BXS还提供一些应用服务,包括身份验证、授权、日志记录和用户跟踪。图8显示了BXS的总体架构。

图8. BXS架构

Eclipse开发工具

  为了让J2EE开发人员可以只使用一种开发工具就能创建完整的Web应用程序,包括富前端,Backbase提供了一个Eclipse插件。如图9所示,该插件提供了在Eclipse中突出显示语法和Backbase标签代码自动完成的功能。

图9. Backbase Eclipse插件

  注意:Eclipse的可视化拖放开发插件还处在开发阶段。

部署到BEA WebLogic

  BXS是一个与标准兼容的J2EE应用程序,可以将其部署到任何J2EE应用服务器上。图10显示了如何使用WebLogic控制台把BXS部署到BEA WebLogic Server

图10. 把BXS部署到BEA WebLogic

实现Backbase RIA Pet Store

  下面的顺序图包括更多详细信息,可以帮助您更好地理解如何实现Backbase pet store。该顺序图显示了在应用程序的初始化加载期间BPC与BXS之间的交互,如图11所示,它包括以下4个步骤:

  • 初始化:用户在浏览器中输入宠物商店的URL;对BPC进行初始化。
  • 应用程序布局:触发正在构造的事件;BPC构建整体应用程序布局;宠物类别被加载并显示在选项卡中。
  • 默认数据:默认情况下加载狗的类别;最初显示8张狗的图片,并带有向前/向后和排序功能。

  用户交互:用户点击Next按钮便可显示编号从9到16的狗图片。

图11.顺序图:富商店前端

  • 初始化

    从用户在浏览器中输入宠物商店的URL开始,这将导致从Web服务器请求一个索引页面。

    索引页面包含用于实例化BPC的代码。索引页面是XHTML和BXML标签的结合,包含负责启动富前端的初始化事件处理程序。

    BPC初始化代码:

    <...>
    
    <...>
    
      
    
        <s:loading>
    
          <div style="position:absolute;width:20%;
    
                         top: 50px;left: 35%;">
    
            <center>Please wait while loading...
    
            </center>
    
          </div>
    
        </s:loading>
    
        <...>
    
        <!-- Include petshop specific behaviors -->
    
        <s:include b:url="petshop.xml"/>
    </pre></li> 
       <li>应用程序布局 <p>加载页面之后,BPC就会处理正在构造的事件,以便开始构建总体的应用程序布局。</p><p>应用程序布局由几个面板组成,它们将屏幕划分为几个部分。顶行有一个固定高度的宠物商店徽标,接下来的主行是实际的商店,大小可以调整。主行分为两列,左边一列是产品类别,右边一列是购物车和历史记录。</p>产品类别使用选项卡式的导航,每个宠物类别一个选项卡。这些选项卡是动态构造的,具体过程是通过BXS从一个XML文件加载类别,然后通过一个客户端模板把这些类别转换为选项卡,该转换模板的BPC代码如下: <pre class="code"><s:task b:action="transform"
    
        b:stylesheet="b:xml('categories')"
    
        b:xmldatasource="b:url('categories.xml')"
    
        b:destination="id('main-content')" 
    
        b:mode="aslastchild" />
    
    </pre><p>下面是用于从文件系统把类别加载为XML的BXS代码:</p><pre class="code"><bsd:pipeline equals="categories.xml"
    
                                     access="public">
    
        <bsd:readxml input="file:/categories.xml"/>
    
    </bsd:pipeline>
    </pre><p>下面是用于创建选项卡式导航的BPC客户端模板:</p><pre class="code"><b:tabrow>
    
      <s:for-each b:select="categories/category">
    
        <b:tab>
    
          <s:attribute b:name="b:followstate">
    
            id('<s:value-of b:select="name"/>')
    
          </s:attribute>
    
          <s:value-of b:select="name"/>
    
        </b:tab>
    
      </s:for-each>
    
    </b:tabrow>
    </pre><p>所有BPC代码(用蓝色表示)都在客户端执行,而所有BXS代码(用红色表示)都在服务器端执行。注意,在本例中,我选择了在客户端进行转换,因为数据集很小。下面我会给出一个在服务器端转换的例子。两种转换都要用到XSLT语法。Backbase的一个强大功能就是,前端开发人员可以根据情况选择在客户端还是服务器端处理表示逻辑。语法似乎允许轻松地把代码从客户端移到服务器端,或者反之。</p><p>以上的代码示例应该可以使您了解到,借助于Backbase,Ajax编程变得多么轻松。结合了DHTML的声明性方法则更容易上手。使用附加的B标签不仅可以使界面更加丰富,而且可以使开发人员的效率更高。诸如<b:tab>之类的单个标签可以代替多行HTML和JavaScript代码,而且保证可以用于各种浏览器。</p></li> 
       <li>默认数据 <p>显示商店前端时,默认情况下显示的是狗的类别。对于本案例,BXS负责此项操作。BXS从一个Web服务获得数据,将其放入缓存,然后生成BXML表示代码,再把这些表示代码发回给BPC。服务器还通过一项配置设置确定一个页面上可以显示的动物数量,并根据需要加入了Next和Previous按钮。最后,服务器还提供了按照名称或价格进行排序的功能。</p><p>下面的代码片断演示了服务器功能。外部管道products-overview.xml首先调用catalog.xml子管道。该子管道要么返回缓存中的宠物信息,要么调用另一个子管道catalog.ws。在缓存没有命中的情况下,内部管道catalog.ws会从Web服务获取宠物信息。</p><p>外部管道获得宠物信息,然后进行XSLT转换,从而以4x2表格显示这些信息,并带有Next和Previouse按钮,然后把BXML格式的代码发回给BPC。BPC呈现它接收到的BXML。</p><p>有3个嵌套的BXS管道分别用于从Web服务获取数据、将其放入缓存,以及通过XSLT转换创建BXML输出: </p><pre class="code"><bsd:pipeline equals="products-overview.xml"
    
                                  access="public"/>
    
      <bsd:callpipe pipe="catalog.xml"/>
    </pre><pre class="code"><bsd:pipeline equals="catalog.xml" access="private">
    
      <bsd:exist field="{global:petstore-catalog}">
    
        <bsd:readxml>{global:petstore-catalog}
    
        </bsd:readxml>
    
        <bsd:otherwise>
    
          <bsd:callpipe pipe="catalog.ws"/>
    </pre><pre class="code"><bsd:pipeline equals="catalog.ws"
    
                                   access="private">
    
      <bsd:try>
    
        <bsd:callws wsdl="PetstoreCatalog.wsdl"
    
                                   method="getAll"/>
    
        <bsd:callpipe pipe="strip-root-ns"/>
    
        <bsd:catch>
    
          <bsd:xslt xslt="error.xslt">
    
            <bsd:param name="errormsg">{error:message}
    
            </bsd:param>
    
            <bsd:param name="errorsrc">{error:source}
    
            </bsd:param>
    
          </bsd:xslt>
    
        </bsd:catch>
    
      </bsd:try>
    
    </bsd:pipeline>
          <bsd:writexml>{global:petstore-catalog}
    
          </bsd:writexml>
    
        </bsd:otherwise>
    
      </bsd:exist>
    
    </bsd:pipeline>
    <bsd:extractfilter xpath=
    
      "category[name/text()='{requestparam:category}']"/> 
    
      <bsd:xslt xslt="products/products-overview.xslt">
    
        <bsd:param name="category">
    
          {requestparam:category}
    
        </bsd:param>
    
        <bsd:param name="stepsize">
    
          {global:stepsize}
    
        </bsd:param>
    
        <bsd:param name="sortorder">
    
          {requestparam:sortorder}
    
        </bsd:param>
    
        <bsd:param name="sortfield">
    
          {requestparam:sortfield}
    
        </bsd:param>
    
      </bsd:xslt>
    
    </bsd:pipeline>
    </pre><p>代码示例再次清楚地说明了,借助于Backbase,以声明性的方式创建Ajax前端是多么容易的事情。例如,只要使用带有一个WSDL引用作为属性的<bsd:callws>标签,就可以调用一个Web服务。</p></li> 
       <li>用户交互 <p>现在,最终用户可以与宠物商店类别进行交互。可以使用Next或Previous按钮或者排序功能在动物类别中进行浏览。或者,只要点击一下相应的选项卡,就可以转到另一个类别中。</p><p>BPC和BXS对这种交互进行了无缝处理。显示已经在客户端上的数据时,无需与服务器进行任何通信。例如,购物者已经从狗类别转到了猫类别,然后再回到狗类别。客户端仍然拥有狗类别的数据,所以可以马上显示出来,这使得购物体验变得更完美。其他的类别需要从BXS获取。BXS要么立即从其缓存返回它们,要们访问Web服务来获得新数据。</p></li> 
      </ul> 
      <p>  为了详细说明Backbase Ajax宠物商店的实现,我把重点放在了初始化的步骤上。完整的宠物商店(可以从<font color="#002c99">http://www.backbase.com/xmlserver</font>下载)还包括以下功能:</p> 
      <ul> 
       <li> 
        <ul> 
         <li>商店前端 
          <ul> 
           <li>初始化。 </li> 
           <li>使用从文件加载的宠物类别创建选项卡。 </li> 
           <li>默认情况下从Web服务加载Dog选项卡。 </li> 
           <li>通过缓存浏览Dog并对其进行排序。 </li> 
          </ul></li> 
         <li>宠物详细情况 
          <ul> 
           <li>使用跟踪聚合来自缓存和数据库的宠物详细情况。 </li> 
           <li>创建可视化历史记录。 </li> 
          </ul></li> 
         <li>购物车 
          <ul> 
           <li>使用跟踪添加到购物车。 </li> 
          </ul></li> 
         <li>登录 
          <ul> 
           <li>登录和身份验证。 </li> 
          </ul></li> 
         <li>退出 
          <ul> 
           <li>退出和授权。 </li> 
           <li>确认。 </li> 
          </ul></li> 
        </ul></li> 
      </ul> 
      <p><strong>结束语</strong></p> 
      <p>  最近有很多人都在研究Ajax。Ajax的优点已经在实践中得到了证明。定制Ajax的缺点在于它的复杂性和不兼容性。大量客户端JavaScript的出现意味着开发人员很可能陷入到浏览器实现差别的泥潭中去。另外,JavaScript这种语言不适用于复杂的应用程序。</p> 
      <p>  为了开发易于管理的、可伸缩的和适应未来变化的Ajax解决方案,开发人员所需使用的工具应该具有比定制部件开发更多的功能。Backbase Ajax软件提供了一个功能全面的客户端GUI管理引擎(Backbase Presentation Client)、一个灵活的服务器端XML管道(Backbase XML Server)和一种声明性的基于标签的UI语言,BXML(Backbase eXtensible Markup Language)。该方法具有几个优点。</p> 
      <p>  首先,Backbae易于使用。它的声明性语言水平地扩展了DHTML;它完全对开发人员隐藏了浏览器兼容性的问题;而且它带有一套开发和调试工具。</p> 
      <p>  其次,Backbase是一个功能全面的Ajax GUI管理系统。Backbase的先进性大大超过了其他Ajax框架,它完全把重点放在提供一个部件库或客户端-服务器通信(如DWR)上。在控件和客户端-服务器通信的基础上,Backbase提供了用于如下用途的标签:提供电影效果,随需应变的数据加载,数据绑定和客户端的数据转换,对于Back和Forward按钮的支持,完善的GUI状态管理,等等。所有这些功能对于目前的Ajax Web应用程序来说都是必需的。</p> 
      <p>  最后,Backbase是以兼容的方式提供所有客户端和服务器端的功能。用户可以使用富Ajax前端扩展现有的应用程序,同时无需修改后端。对于整个表示层来说,它的架构是时新的、模块化的,而且它基于XML。</p> 
      <p><strong>参考资料</strong></p> 
      <ul> 
       <li><font color="#002c99">Java Pet Store Demo</font>。 </li> 
       <li><font color="#002c99">Ajax: A New Approach to Web Applications</font>,作者Jesse James Garrett(Adaptive Path,2005年2月)。 </li> 
      </ul> 
      <p><strong>原文出处</strong></p> 
      <p>A Backbase Ajax Front-end for J2EE Applications</p> 
      <p><font color="#002c99">http://dev2dev.bea.com/pub/a/2005/08/backbase_ajax.html</font> </p> 
      <div class="dot001">  
      </div> 
      <table width="100%" border="0"> 
       <tbody> 
        <tr valign="bottom"> 
         <td colspan="2" height="20"> <span class="h2b">作者简介</span></td> 
        </tr> 
        <tr> 
         <td valign="top" align="center"></td> 
         <td><font color="#002c99">Mark Schiefelbein</font>自2005年2月以来一直担任Backbase的产品管理主管。Mark极大地推动了Backbase Rich Internet Application的全球推广。 </td> 
        </tr> 
       </tbody> 
      </table> 
     </div> 
    </div>
                                </div>
                            </div>
                        </div>
                        <!--PC和WAP自适应版-->
                        <div id="SOHUCS" sid="1187955553436016640"></div>
                        <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                        <!-- 文章页-底部 动态广告位 -->
                        <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                    </div>
                    <div class="col-md-3">
                        <div class="row" id="ad">
                            <!-- 文章页-右侧1 动态广告位 -->
                            <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                            </div>
                            <!-- 文章页-右侧2 动态广告位 -->
                            <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                            </div>
                            <!-- 文章页-右侧3 动态广告位 -->
                            <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="container">
            <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(AJAX)</h4>
            <div id="paradigm-article-related">
                <div class="recommend-post mb30">
                    <ul class="widget-links">
                        <li><a href="/article/1894554822108049408.htm"
                               title="用selenium爬取拉钩网的职位信息" target="_blank">用selenium爬取拉钩网的职位信息</a>
                            <span class="text-muted">wg5foc08</span>
    <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a>
                            <div>拉钩网的职位信息数据为ajax数据,抓取ajax数据可以直接分析数据的url接口,但是直接用requests库发送url请求会被拉钩网识别出来。1.可以通过session保存会话信息模拟请求,这时可以爬取部分信息数据,但是仍然不能爬取大量的或者完整的数据2.用selenium模拟浏览器爬取拉钩网的数据,可以完整的爬取本文拟爬取的url代码1:importrequestsfromlxmlimport</div>
                        </li>
                        <li><a href="/article/1894097281808920576.htm"
                               title="Ajax购物车添加多产品的最佳实践" target="_blank">Ajax购物车添加多产品的最佳实践</a>
                            <span class="text-muted">t0_54coder</span>
    <a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E5%BC%80%E5%8F%91/1.htm">个人开发</a>
                            <div>在电子商务平台中,购物体验的流畅性直接影响用户的购买决策。特别是在使用Ajax技术处理购物车操作时,确保每个步骤都能够无缝进行至关重要。今天,我们来讨论一下如何通过Ajax添加多个产品到购物车,并解决一个常见的技术问题。背景介绍假设你有一个在线商店,用户可以选择一系列附加产品(如交叉销售产品)并通过一个事件将它们全部添加到购物车中。这听起来简单,但实际上,这涉及到如何正确处理数据结构和Ajax请求</div>
                        </li>
                        <li><a href="/article/1894033235608924160.htm"
                               title="AJAX 简介" target="_blank">AJAX 简介</a>
                            <span class="text-muted">宇哥资料</span>
    <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                            <div>AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。AJAX是什么?AJAX=AsynchronousJavaScriptandXML.AJAX是一种用于创建快速动态网页的技术。AJAX通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着可以在不重载整个页面的情况下,对网页的某些部分进行更新。传统的网页(不使用AJAX)如果需要更新内容,必须重载整个页面。有很多使用A</div>
                        </li>
                        <li><a href="/article/1893870466863525888.htm"
                               title="前端大厂常见面试题目|react|5-reacr ajax,axios,消息订阅发布机制,react-routerdom的api,基本路由使用,rdirct,antd,navlink,switch," target="_blank">前端大厂常见面试题目|react|5-reacr ajax,axios,消息订阅发布机制,react-routerdom的api,基本路由使用,rdirct,antd,navlink,switch,</a>
                            <span class="text-muted">学习记录wanxiaowan</span>
    <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%85%AB%E8%82%A1%E6%96%87/1.htm">前端八股文</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a>
                            <div>第4章:Reactajax4.1.理解4.1.1.前置说明React本身只关注于界面,并不包含发送ajax请求的代码前端应用需要通过ajax请求与后台进行交互(json数据)react应用中需要集成第三方ajax库(或自己封装)4.1.2.常用的ajax请求库jQuery:比较重,如果需要另外引入不建议使用axios:轻量级,建议使用封装XmlHttpRequest对象的ajaxpromise风格</div>
                        </li>
                        <li><a href="/article/1893594238373916672.htm"
                               title="React - ajax 配置代理" target="_blank">React - ajax 配置代理</a>
                            <span class="text-muted">来一碗刘肉面</span>
    <a class="tag" taget="_blank" href="/search/React/1.htm">React</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                            <div>React本身只关注于界面,并不包含发送ajax请求的代码;前端应用需要通过ajax请求与后台进行交互(json数据);React应用中需要集成第三方ajax库(或者自己封装)。方法一在package.json中追加如下配置:"proxy":"http://localhost:5000"//5000端口号说明:优点:配置简单,前端请求资源时可以不加任何前缀;缺点:不能配置多个代理;工作方式:上述方</div>
                        </li>
                        <li><a href="/article/1893507499676463104.htm"
                               title="Vue.js 与 Ajax(Axios)的深入探索" target="_blank">Vue.js 与 Ajax(Axios)的深入探索</a>
                            <span class="text-muted">wjs2024</span>
    <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>Vue.js与Ajax(Axios)的深入探索引言在当前的前端开发领域,Vue.js已经成为了最受欢迎的JavaScript框架之一。它以其简洁的语法、高效的性能和强大的生态系统获得了广泛的应用。而在与后端服务交互时,Ajax技术是不可或缺的。本文将深入探讨Vue.js与Ajax(Axios)的结合,帮助读者更好地理解这两种技术的协同工作。Vue.js简介Vue.js是一个渐进式JavaScrip</div>
                        </li>
                        <li><a href="/article/1893449866898632704.htm"
                               title="react-router@4.2.0系列-Redirect组件" target="_blank">react-router@4.2.0系列-Redirect组件</a>
                            <span class="text-muted">kiramario(长期接受兼职机会)</span>
    <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/react-router/1.htm">react-router</a><a class="tag" taget="_blank" href="/search/react/1.htm">react</a>
                            <div>很久没有碰前端,最近重新学习react-router,发现版本升级到了4.2.0,使用方法都做出了相应的调整。Redirect组件开发中遇到的需求,ajax请求返回状态如果成功则跳转成功页面(很常见吧)。由于是单页应用,跳转前后用Route组件渲染,跳转用Redirect进行控制。测试demo结构如下:其中index.html,server.js和wepack.config.dev.js是我在写w</div>
                        </li>
                        <li><a href="/article/1893438521646051328.htm"
                               title="JavaScript学习笔记" target="_blank">JavaScript学习笔记</a>
                            <span class="text-muted">丢内楼道</span>
    <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>JavaScriptJavaScript1.JavaScript简介1.1历史1.2快速入门2.基本语法2.1定义变量2.2基本条件控制2.3浏览器必备调试js2.4数据类型2.5严格检查模式3.数据类型3.1字符串及方法3.2数组3.3对象3.4流程控制3.5Map和Set4.函数及面向对象4.1定义函数4.2变量的作用域4.3方法5.内部对象5.1Date5.2Json对象5.3Ajax(自己</div>
                        </li>
                        <li><a href="/article/1893369301977591808.htm"
                               title="Ajax与IndexedDB的数据处理流程" target="_blank">Ajax与IndexedDB的数据处理流程</a>
                            <span class="text-muted">t0_54coder</span>
    <a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E5%BC%80%E5%8F%91/1.htm">个人开发</a>
                            <div>在现代web开发中,异步操作和数据存储是常见的需求。本文将探讨如何正确处理Ajax请求并将数据存储到IndexedDB中,特别是当这些操作需要按照特定顺序执行时。背景介绍假设我们需要完成以下任务:发送一个主Ajax请求获取数据。处理并存储这些数据到IndexedDB。根据主数据发起一个子Ajax请求获取依赖数据。存储子数据到IndexedDB。触发最终数据处理。问题分析在原始代码中,ajaxSto</div>
                        </li>
                        <li><a href="/article/1892895083745832960.htm"
                               title="python上传文件进度_Django Ajax 文件上传及进度显示" target="_blank">python上传文件进度_Django Ajax 文件上传及进度显示</a>
                            <span class="text-muted">天天小宇</span>
    <a class="tag" taget="_blank" href="/search/python%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E8%BF%9B%E5%BA%A6/1.htm">python上传文件进度</a>
                            <div>在Django1.0版本后,文件上传的处理做了很大的改变,其中很重要的一点就是引入了UploadHandlers的概念。UploadHandlers这是个和Django中的Middleware差不多的东西,可以通过在settings.py文件中设置FILE_UPLOAD_HANDLERS定义一系列UploadHandlers,和Middleware相似的地方主要表现为以下两点:1、Django会按</div>
                        </li>
                        <li><a href="/article/1892716858470100992.htm"
                               title="Springboot 集成 netty-socketio + Vue前端分离" target="_blank">Springboot 集成 netty-socketio + Vue前端分离</a>
                            <span class="text-muted">Synologs过客</span>
    <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/socket/1.htm">socket</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                            <div>Springboot集成netty-socketionetty-socketio:仿`node.js`实现的socket.io服务端1.将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口2.使用时,不用担心兼容问题,底层会自动选用最佳的通信方式3.适合进行服务端和客户端双向数据通信pom.xmlcom.corundumstudio.socketionetty-socketio</div>
                        </li>
                        <li><a href="/article/1892645648461787136.htm"
                               title="前端与后端的对接事宜、注意事项" target="_blank">前端与后端的对接事宜、注意事项</a>
                            <span class="text-muted">ZhooooYuChEnG</span>
    <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E5%90%8E%E7%AB%AF%E5%AF%B9%E6%8E%A5/1.htm">前后端对接</a>
                            <div>前端与后端的对接事宜、注意事项一、对接核心流程(完整生命周期)需求分析接口设计开发联调测试验证上线部署二、前端视角:对接方法与注意事项1.对接流程接口文档确认:阅读后端提供的OpenAPI/Swagger文档请求构造:处理参数、请求头、认证信息发送请求:通过AJAX/Fetch/Axios发起HTTP调用响应处理:解析数据、错误处理、状态管理数据渲染:将接口数据转换为UI可用的格式2.关键代码示例</div>
                        </li>
                        <li><a href="/article/1892566084595281920.htm"
                               title="百度地图显示多个infoWindow信息窗口时只展示最后一条数据" target="_blank">百度地图显示多个infoWindow信息窗口时只展示最后一条数据</a>
                            <span class="text-muted">射手buff</span>
    <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a>
                            <div>这两天遇到一个问题,百度地图在循环加载多个信息窗口的时候所有的窗口显示的都是最后一条数据的内容效果如下:如图所示两个信息窗口都是一样的值,代码如下$.ajax({type:"POST",url:"../api/zhandian.json",success:function(res){vardata=res.data;for(vari=0;i联系电话:"+data[i].phone,opts);//</div>
                        </li>
                        <li><a href="/article/1892529999513186304.htm"
                               title="AJAX使用和固定格式" target="_blank">AJAX使用和固定格式</a>
                            <span class="text-muted">乐多_L</span>
    <a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                            <div>ajax的全称AsynchronousJavaScriptandXML(异步JavaScript和XML)。ajax是一种创建交互式网页应用的网页开发技术。其中最核心的依赖是浏览器提供的XMLHttpRequest对象,是这个对象使得浏览器可以发出HTTP请求与接收HTTP响应。实现了在页面不刷新的情况下和服务器进行交互。方法描述newXMLHttpRequest()生成一个XMLHttpRequ</div>
                        </li>
                        <li><a href="/article/1892408765760729088.htm"
                               title="XML的介绍及使用DOM,DOM4J解析xml文件" target="_blank">XML的介绍及使用DOM,DOM4J解析xml文件</a>
                            <span class="text-muted">late summer182</span>
    <a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>1XML简介XML(可扩展标记语言,ExtensibleMarkupLanguage)是一种用于定义文档结构和数据存储的标记语言。它主要用于在不同的系统之间传输和存储数据。作用:数据交互配置应用程序和网站Ajax基石特点XML与操作系统、编程语言的开发平台无关实现不同系统之间的数据交换2XML文档结构王珊.NET高级编程包含C#框架和网络编程等李明明XML基础编程包含XML基础概念和基本作用2.1</div>
                        </li>
                        <li><a href="/article/1892202821386825728.htm"
                               title="JAX-WS与JAX-RS比较分析及与SpringMVC集成实现" target="_blank">JAX-WS与JAX-RS比较分析及与SpringMVC集成实现</a>
                            <span class="text-muted">零度anngle</span>
    <a class="tag" taget="_blank" href="/search/SpringMVC/1.htm">SpringMVC</a><a class="tag" taget="_blank" href="/search/Restful/1.htm">Restful</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/JAX-RS/1.htm">JAX-RS</a><a class="tag" taget="_blank" href="/search/JAX-WS/1.htm">JAX-WS</a>
                            <div>1、导言过去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念。如果你还不了解REST,那这个简短的介绍将有助你快速掌握REST,此外还可以点击这里了解关于REST的更多信息。现在有越来越多的公司希望能以简单而又贴合Web架构本身的方式公开WebAPI,因此REST变得越来越重要也就不足为奇了。使用Ajax进行通信的富浏览器端也在朝这个目标不断迈进。这个架构原则提升了万维网</div>
                        </li>
                        <li><a href="/article/1892131069923225600.htm"
                               title="jQuery AJAX 方法详解" target="_blank">jQuery AJAX 方法详解</a>
                            <span class="text-muted">froginwe11</span>
    <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>jQueryAJAX方法详解引言随着互联网技术的不断发展,前端开发领域的技术也在不断更新迭代。jQuery作为一种广泛使用的前端JavaScript库,极大地简化了DOM操作和事件处理。在众多jQuery功能中,AJAX(AsynchronousJavaScriptandXML)方法尤为突出,它允许我们在不重新加载整个页面的情况下与服务器进行异步通信。本文将详细介绍jQueryAJAX方法的使用,</div>
                        </li>
                        <li><a href="/article/1892049576282615808.htm"
                               title="java代码走查_java代码开发完成后,代码走查规范" target="_blank">java代码走查_java代码开发完成后,代码走查规范</a>
                            <span class="text-muted">游凯超</span>
    <a class="tag" taget="_blank" href="/search/java%E4%BB%A3%E7%A0%81%E8%B5%B0%E6%9F%A5/1.htm">java代码走查</a>
                            <div>代码走查注意事项:1、不变的值,尽量写个常量类2、尽量使用if{}else,不要一直if去判断3、减少循环调用方法查询数据库4、dao层尽量不要用逻辑,尽量在service里写业务逻辑5、金额使用Bigdecimal类型的,0.00这种格式靠右显示6、iframe的弹框,要放到js里,可以缓存,放到jsp里每次都需要加载。7、ajax对应success对应一个error异常,尽量用error,网络</div>
                        </li>
                        <li><a href="/article/1891884606475530240.htm"
                               title="Dest1ny漏洞库:用友 U8-CRM 系统 ajaxgetborrowdata.php 存在 SQL 注入漏洞" target="_blank">Dest1ny漏洞库:用友 U8-CRM 系统 ajaxgetborrowdata.php 存在 SQL 注入漏洞</a>
                            <span class="text-muted">Dest1ny(信息安全业务随时dd)</span>
    <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a>
                            <div>大家好,今天是Dest1ny漏洞库的专题!!会时不时发送新的漏洞资讯!!大家多多关注,多多点赞!!!用友U8-CRM系统ajaxgetborrowdata.php存在SQL注入漏洞,文件多个方法存在SQL注入漏洞,未经身份验证的攻击者通过漏洞执行任意SQL语句,调用xp_cmdshell写入后门文件,执行任意代码,从而获取到服务器权限。hunterapp.name="用友CRM"fofatitle</div>
                        </li>
                        <li><a href="/article/1891768463291117568.htm"
                               title="Ajax请求 动态查询回显数据" target="_blank">Ajax请求 动态查询回显数据</a>
                            <span class="text-muted">zkm-dakn</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/p2p/1.htm">p2p</a>
                            <div>1.同步和异步例:普通B/S模式(同步)AJAX技术(异步)同步:提交请求-->等待服务器处理-->处理完毕返回-->这个期间客户端浏览器不能干任何事异步:请求通过时间触发-->服务器处理(这时浏览器任然可以作其他事情)-->处理完毕同步是指:发送方发出数后,等待收方发回响应以后才发下一个数据包的通讯方式异步是指:发送方发出数据后,不等待收方发回响应,接着发送下个数据包的通讯方式通俗点说:异步传输</div>
                        </li>
                        <li><a href="/article/1891500664517881856.htm"
                               title="springboot 上传图片 转存成webp" target="_blank">springboot 上传图片 转存成webp</a>
                            <span class="text-muted">键盘侠007</span>
    <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                            <div>第一步先引入包org.sejda.imageiowebp-imageio0.1.6下面就是上传的时候处理的了/***通用上传请求(单个)*/@PostMapping("/upload")publicAjaxResultuploadFile(MultipartFilefile)throwsException{try{//上传文件路径StringfilePath=RuoYiConfig.getUplo</div>
                        </li>
                        <li><a href="/article/1891495363429330944.htm"
                               title="Ajax基础学习" target="_blank">Ajax基础学习</a>
                            <span class="text-muted">喜欢代码的新之助</span>
    <a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a>
                            <div>AJAX浏览器本身就具备网络通信的能力,但在早期浏览器并没有把这个能力开放给JS最早是微软在IE浏览器中把这一能力向JS开放,让JS可以在代码中实现发送请求,这项技术在2005年被正式命名为AJAX(AsynchronousJavascriptAndXML)这套API主要依靠一个构造函数完成;该构造函数的名称为XMLHttpRequest,简称为XHR由于XHRAPI有着诸多缺陷,在HTML5和E</div>
                        </li>
                        <li><a href="/article/1891249758090096640.htm"
                               title="给Kkfileview加请求头鉴权接入" target="_blank">给Kkfileview加请求头鉴权接入</a>
                            <span class="text-muted">qq_41369135</span>
    <a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a><a class="tag" taget="_blank" href="/search/kkfileview/1.htm">kkfileview</a>
                            <div>所有接入前端token放localStorage,或者后端cookie中获取鉴权本案例以放localStorage为例一、创建global.js$(document).ready(function(){//设置全局的AJAX请求头$.ajaxSetup({headers:{'Authentication':localStorage.getItem('Authentication')}});});二</div>
                        </li>
                        <li><a href="/article/1891017632551858176.htm"
                               title="中科院空天院的面试题总结-Java" target="_blank">中科院空天院的面试题总结-Java</a>
                            <span class="text-muted">web18285997089</span>
    <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>JAVA1.谈谈ajax的异步请求,与同步请求的区别答:同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。自己说了一堆,面试官直接这两句回我,简洁明了,这就是功力,惭愧2.数据库中有成绩字段,给出查询排名前10的语句答:select*from(select*from表orderby成绩desc)</div>
                        </li>
                        <li><a href="/article/1890891278174973952.htm"
                               title="PrimeFaces实战:IdleMonitor与Ajax的完美结合" target="_blank">PrimeFaces实战:IdleMonitor与Ajax的完美结合</a>
                            <span class="text-muted">t0_54program</span>
    <a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E5%BC%80%E5%8F%91/1.htm">个人开发</a>
                            <div>在现代的Web开发中,用户交互的实时反馈是一个重要的用户体验环节。PrimeFaces作为一个强大的JavaEEUI库,提供了许多便捷的功能组件,其中之一就是IdleMonitor。通过IdleMonitor,我们可以轻松地检测用户何时处于空闲状态以及何时从空闲状态恢复活跃状态。结合Ajax技术,我们可以在用户状态变化时动态地更新页面内容,而无需重新加载整个页面。接下来,我们将通过一个简单的示例来</div>
                        </li>
                        <li><a href="/article/1890811727436640256.htm"
                               title="疯狂前端面试题(四)" target="_blank">疯狂前端面试题(四)</a>
                            <span class="text-muted">吃蛋糕的居居</span>
    <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/firefox/1.htm">firefox</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a>
                            <div>一、Ajax、JSONP、JSON、Fetch和Axios技术详解1.Ajax(异步JavaScript和XML)什么是Ajax?Ajax是一种用于在不刷新页面的情况下与服务器进行数据交互的技术。它通过`XMLHttpRequest`对象实现。优点-支持同步和异步请求。-能够发送和接收多种格式的数据(如JSON、XML等)。缺点-原生代码较复杂。-不支持跨域请求(需要服务器配置CORS或使用JSO</div>
                        </li>
                        <li><a href="/article/1890741236332032000.htm"
                               title="使用jQuery、Ajax、ASP和MySQL实现动态加载更多内容" target="_blank">使用jQuery、Ajax、ASP和MySQL实现动态加载更多内容</a>
                            <span class="text-muted">来自日本的亮仔</span>
    
                            <div>本文还有配套的精品资源,点击获取简介:“加载更多”功能改善网页用户体验,适用于大量数据场景。本文将探讨如何通过结合jQuery监听滚动事件、使用Ajax技术与服务器交互、ASP后端处理请求、以及MySQL数据库查询,实现无需刷新页面即可动态加载内容的完整步骤。1.页面滚动事件监听与处理在当今的网络应用中,页面滚动事件是一种常见的用户交互方式,它直接影响到用户体验。监听和处理滚动事件,能够帮助开发者</div>
                        </li>
                        <li><a href="/article/1890728627411152896.htm"
                               title="AJAX 与 ASP:现代 Web 开发的关键技术" target="_blank">AJAX 与 ASP:现代 Web 开发的关键技术</a>
                            <span class="text-muted">csbysj2020</span>
    <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>AJAX与ASP:现代Web开发的关键技术引言在当今的Web开发领域,AJAX(AsynchronousJavaScriptandXML)和ASP(ActiveServerPages)是两项至关重要的技术。AJAX允许网页在不重新加载整个页面的情况下,与服务器交换数据和更新部分网页内容。而ASP则是一种服务器端脚本环境,用于动态生成交互性网页。本文将深入探讨AJAX和ASP的技术细节、应用场景以及</div>
                        </li>
                        <li><a href="/article/1890716398792011776.htm"
                               title="jQuery.ajax" target="_blank">jQuery.ajax</a>
                            <span class="text-muted">weixin_48357623</span>
    <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                            <div>下面是关于FetchAPI、umi-request、jQuery.ajax和axios的对比表格:FetchAPIumi-requestjQuery.ajaxaxios技术基础基于Promise的现代浏览器API基于fetch的封装,提供统一API和请求层治理原生JavaScript中的XMLHttpRequest封装基于Promise的HTTP客户端,封装XMLHttpRequest使用场景适用</div>
                        </li>
                        <li><a href="/article/1890688532536684544.htm"
                               title="支持ajax的移动webui,Vue移动端项目配合第三方ui库快速搭建开发环境" target="_blank">支持ajax的移动webui,Vue移动端项目配合第三方ui库快速搭建开发环境</a>
                            <span class="text-muted">七月的流浪猫</span>
    <a class="tag" taget="_blank" href="/search/%E6%94%AF%E6%8C%81ajax%E7%9A%84%E7%A7%BB%E5%8A%A8webui/1.htm">支持ajax的移动webui</a>
                            <div>//copycnpminstall--savees6-promisecnpminstall--savebabel-polyfillcnpminstallfastclick-Scnpmilib-flexible-Scnpminstallpx2rem-loader-S-dcnpminstallvuex-Scnpminstallaxios--savecnpminstallstylus--save-dev</div>
                        </li>
                                    <li><a href="/article/58.htm"
                                           title="多线程编程之理财" target="_blank">多线程编程之理财</a>
                                        <span class="text-muted">周凡杨</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E4%BA%A7%E8%80%85/1.htm">生产者</a><a class="tag" taget="_blank" href="/search/%E6%B6%88%E8%B4%B9%E8%80%85/1.htm">消费者</a><a class="tag" taget="_blank" href="/search/%E7%90%86%E8%B4%A2/1.htm">理财</a>
                                        <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现实生活中,我们一边工作,一边消费,正常情况下会把多余的钱存起来,比如存到余额宝,还可以多挣点钱,现在就有这个情况:我每月可以发工资20000万元 (暂定每月的1号),每月消费5000(租房+生活费)元(暂定每月的1号),其中租金是大头占90%,交房租的方式可以选择(一月一交,两月一交、三月一交),理财:1万元存余额宝一天可以赚1元钱,</div>
                                    </li>
                                    <li><a href="/article/185.htm"
                                           title="[Zookeeper学习笔记之三]Zookeeper会话超时机制" target="_blank">[Zookeeper学习笔记之三]Zookeeper会话超时机制</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a>
                                        <div>首先,会话超时是由Zookeeper服务端通知客户端会话已经超时,客户端不能自行决定会话已经超时,不过客户端可以通过调用Zookeeper.close()主动的发起会话结束请求,如下的代码输出内容 
    Created /zoo-739160015 
    CONNECTEDCONNECTED 
    .............CONNECTEDCONNECTED 
    CONNECTEDCLOSEDCLOSED 
    </div>
                                    </li>
                                    <li><a href="/article/312.htm"
                                           title="SecureCRT快捷键" target="_blank">SecureCRT快捷键</a>
                                        <span class="text-muted">daizj</span>
    <a class="tag" taget="_blank" href="/search/secureCRT/1.htm">secureCRT</a><a class="tag" taget="_blank" href="/search/%E5%BF%AB%E6%8D%B7%E9%94%AE/1.htm">快捷键</a>
                                        <div>ctrl + a : 移动光标到行首ctrl + e :移动光标到行尾crtl + b: 光标前移1个字符crtl +&nbsp;f: 光标后移1个字符crtl +&nbsp;h&nbsp;: 删除光标之前的一个字符ctrl + d :删除光标之后的一个字符crtl + k :删除光标到行尾所有字符crtl +&nbsp;u : 删除光标至行首所有字符crtl + w:&nbsp; 删除光标至行首</div>
                                    </li>
                                    <li><a href="/article/439.htm"
                                           title="Java 子类与父类这间的转换" target="_blank">Java 子类与父类这间的转换</a>
                                        <span class="text-muted">周凡杨</span>
    <a class="tag" taget="_blank" href="/search/java+%E7%88%B6%E7%B1%BB%E4%B8%8E%E5%AD%90%E7%B1%BB%E7%9A%84%E8%BD%AC%E6%8D%A2/1.htm">java 父类与子类的转换</a>
                                        <div>&nbsp; &nbsp; 最近同事调的一个服务报错,查看后是日期之间转换出的问题。代码里是把 java.sql.Date 类型的对象 强制转换为 java.sql.Timestamp 类型的对象。报java.lang.ClassCastException。 
    &nbsp; 
    &nbsp; &nbsp; 代码: 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
                                    </li>
                                    <li><a href="/article/566.htm"
                                           title="可视化swing界面编辑" target="_blank">可视化swing界面编辑</a>
                                        <span class="text-muted">朱辉辉33</span>
    <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/swing/1.htm">swing</a>
                                        <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天发现了一个WindowBuilder插件,功能好强大,啊哈哈,从此告别手动编辑swing界面代码,直接像VB那样编辑界面,代码会自动生成。 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先在Eclipse中点击help,选择Install New Software,然后在Work with中输入WindowBui</div>
                                    </li>
                                    <li><a href="/article/693.htm"
                                           title="web报表工具FineReport常用函数的用法总结(文本函数)" target="_blank">web报表工具FineReport常用函数的用法总结(文本函数)</a>
                                        <span class="text-muted">老A不折腾</span>
    <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8%E5%B7%A5%E5%85%B7/1.htm">web报表工具</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E8%BD%AF%E4%BB%B6/1.htm">报表软件</a><a class="tag" taget="_blank" href="/search/java%E6%8A%A5%E8%A1%A8/1.htm">java报表</a>
                                        <div>文本函数 
    CHAR 
    CHAR(number):根据指定数字返回对应的字符。CHAR函数可将计算机其他类型的数字代码转换为字符。 
    Number:用于指定字符的数字,介于1Number:用于指定字符的数字,介于165535之间(包括1和65535)。 
    示例: 
    CHAR(88)等于“X”。 
    CHAR(45)等于“-”。 
    &nbsp; 
    CODE 
    CODE(text):计算文本串中第一个字</div>
                                    </li>
                                    <li><a href="/article/820.htm"
                                           title="mysql安装出错" target="_blank">mysql安装出错</a>
                                        <span class="text-muted">林鹤霄</span>
    <a class="tag" taget="_blank" href="/search/mysql%E5%AE%89%E8%A3%85/1.htm">mysql安装</a>
                                        <div>[root@localhost ~]# rpm -ivh MySQL-server-5.5.24-1.linux2.6.x86_64.rpm&nbsp;Preparing...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #####################</div>
                                    </li>
                                    <li><a href="/article/947.htm"
                                           title="linux下编译libuv" target="_blank">linux下编译libuv</a>
                                        <span class="text-muted">aigo</span>
    <a class="tag" taget="_blank" href="/search/libuv/1.htm">libuv</a>
                                        <div>下载最新版本的libuv源码,解压后执行: 
    ./autogen.sh 
    &nbsp; 
    这时会提醒找不到automake命令,通过一下命令执行安装(redhat系用yum,Debian系用apt-get): 
    # yum -y install automake 
    # yum -y install libtool 
    &nbsp; 
    &nbsp; 
    如果提示错误:make: *** No targe</div>
                                    </li>
                                    <li><a href="/article/1074.htm"
                                           title="中国行政区数据及三级联动菜单" target="_blank">中国行政区数据及三级联动菜单</a>
                                        <span class="text-muted">alxw4616</span>
    
                                        <div>近期做项目需要三级联动菜单,上网查了半天竟然没有发现一个能直接用的! 
    呵呵,都要自己填数据....我了个去这东西麻烦就麻烦的数据上. 
    哎,自己没办法动手写吧. 
    现将这些数据共享出了,以方便大家.嗯,代码也可以直接使用 
    &nbsp; 文件说明 
     
     lib\area.sql -- 县及县以上行政区划分代码(截止2013年8月31日)来源:国家统计局 发布时间:2014-01-17 15:0</div>
                                    </li>
                                    <li><a href="/article/1201.htm"
                                           title="哈夫曼加密文件" target="_blank">哈夫曼加密文件</a>
                                        <span class="text-muted">百合不是茶</span>
    <a class="tag" taget="_blank" href="/search/%E5%93%88%E5%A4%AB%E6%9B%BC%E5%8E%8B%E7%BC%A9/1.htm">哈夫曼压缩</a><a class="tag" taget="_blank" href="/search/%E5%93%88%E5%A4%AB%E6%9B%BC%E5%8A%A0%E5%AF%86/1.htm">哈夫曼加密</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%8F%89%E6%A0%91/1.htm">二叉树</a>
                                        <div>&nbsp;在上一篇介绍过哈夫曼编码的基础知识,下面就直接介绍使用哈夫曼编码怎么来做文件加密或者压缩与解压的软件,对于新手来是有点难度的,主要还是要理清楚步骤; 
    &nbsp; 
    加密步骤: 
    &nbsp;1,统计文件中字节出现的次数,作为权值 
    &nbsp; 
    2,创建节点和哈夫曼树 
    &nbsp; 
    3,得到每个子节点01串 
    &nbsp; 
    4,使用哈夫曼编码表示每个字节 
    &nbsp; 
    </div>
                                    </li>
                                    <li><a href="/article/1328.htm"
                                           title="JDK1.5 Cyclicbarrier实例" target="_blank">JDK1.5 Cyclicbarrier实例</a>
                                        <span class="text-muted">bijian1013</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/Cyclicbarrier/1.htm">Cyclicbarrier</a>
                                        <div>CyclicBarrier类 
    一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环的 barrier。 
    CyclicBarrier支持一个可选的 Runnable 命令,</div>
                                    </li>
                                    <li><a href="/article/1455.htm"
                                           title="九项重要的职业规划" target="_blank">九项重要的职业规划</a>
                                        <span class="text-muted">bijian1013</span>
    <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                                        <div>一. 学习的步伐不停止&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 古人说,活到老,学到老。终身学习应该是您的座右铭。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 世界在不断变化,每个人都在寻找各自的事业途径。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 您只有保证了足够的技能储</div>
                                    </li>
                                    <li><a href="/article/1582.htm"
                                           title="【Java范型四】范型方法" target="_blank">【Java范型四】范型方法</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>范型参数不仅仅可以用于类型的声明上,例如 
    &nbsp; 
    package com.tom.lang.generics;
    
    import java.util.List;
    
    public class Generics&lt;T&gt; {
        private T value;
        public Generics(T  value) {
            this.value = </div>
                                    </li>
                                    <li><a href="/article/1709.htm"
                                           title="【Hadoop十三】HDFS Java API基本操作" target="_blank">【Hadoop十三】HDFS Java API基本操作</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a>
                                        <div>&nbsp; 
    package com.examples.hadoop;
    
    import org.apache.hadoop.conf.Configuration;
    
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FileStatus;
    import org.apache.hadoo</div>
                                    </li>
                                    <li><a href="/article/1836.htm"
                                           title="ua实现split字符串分隔" target="_blank">ua实现split字符串分隔</a>
                                        <span class="text-muted">ronin47</span>
    <a class="tag" taget="_blank" href="/search/lua+split/1.htm">lua split</a>
                                        <div>LUA并不象其它许多&quot;大而全&quot;的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或 C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。LUA只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从 而适合嵌入在别的程序里。因此在lua中并没有其他语言那样多的系统函数。习惯了其他语言的字符串分割函</div>
                                    </li>
                                    <li><a href="/article/1963.htm"
                                           title="java-从先序遍历和中序遍历重建二叉树" target="_blank">java-从先序遍历和中序遍历重建二叉树</a>
                                        <span class="text-muted">bylijinnan</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>
    
    public class BuildTreePreOrderInOrder {
    
    	/**
    	 * Build Binary Tree from PreOrder and InOrder
    	 *  _______7______
           /              \
        __10__          ___2
       /      \        /
       4</div>
                                    </li>
                                    <li><a href="/article/2090.htm"
                                           title="openfire开发指南《连接和登陆》" target="_blank">openfire开发指南《连接和登陆》</a>
                                        <span class="text-muted">开窍的石头</span>
    <a class="tag" taget="_blank" href="/search/openfire/1.htm">openfire</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/1.htm">开发指南</a><a class="tag" taget="_blank" href="/search/smack/1.htm">smack</a>
                                        <div>第一步 
    &nbsp;&nbsp;&nbsp; 官网下载smack.jar包 
    &nbsp;&nbsp;&nbsp; 下载地址:http://www.igniterealtime.org/downloads/index.jsp#smack 
    第二步 
    &nbsp;&nbsp;&nbsp; 把smack里边的jar导入你新建的java项目中 
     
    开始编写smack连接openfire代码 
     
    p</div>
                                    </li>
                                    <li><a href="/article/2217.htm"
                                           title="[移动通讯]手机后盖应该按需要能够随时开启" target="_blank">[移动通讯]手机后盖应该按需要能够随时开启</a>
                                        <span class="text-muted">comsci</span>
    <a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8/1.htm">移动</a>
                                        <div>&nbsp;&nbsp;&nbsp; 看到新的手机,很多由金属材质做的外壳,内存和闪存容量越来越大,CPU速度越来越快,对于这些改进,我们非常高兴,也非常欢迎 
     
    &nbsp;&nbsp;&nbsp;&nbsp; 但是,对于手机的新设计,有几点我们也要注意 
     
    &nbsp;&nbsp;&nbsp;&nbsp; 第一:手机的后盖应该能够被用户自行取下来,手机的电池的可更换性应该是必须保留的设计,</div>
                                    </li>
                                    <li><a href="/article/2344.htm"
                                           title="20款国外知名的php开源cms系统" target="_blank">20款国外知名的php开源cms系统</a>
                                        <span class="text-muted">cuiyadll</span>
    <a class="tag" taget="_blank" href="/search/cms/1.htm">cms</a>
                                        <div>内容管理系统,简称CMS,是一种简易的发布和管理新闻的程序。用户可以在后端管理系统中发布,编辑和删除文章,即使您不需要懂得HTML和其他脚本语言,这就是CMS的优点。 
    在这里我决定介绍20款目前国外市面上最流行的开源的PHP内容管理系统,以便没有PHP知识的读者也可以通过国外内容管理系统建立自己的网站。 
    1.&nbsp;Wordpress 
    WordPress的是一个功能强大且易于使用的内容管</div>
                                    </li>
                                    <li><a href="/article/2471.htm"
                                           title="Java生成全局唯一标识符" target="_blank">Java生成全局唯一标识符</a>
                                        <span class="text-muted">darrenzhu</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/uuid/1.htm">uuid</a><a class="tag" taget="_blank" href="/search/unique/1.htm">unique</a><a class="tag" taget="_blank" href="/search/identifier/1.htm">identifier</a><a class="tag" taget="_blank" href="/search/id/1.htm">id</a>
                                        <div>How to generate a globally unique identifier in Java 
     
     
     
    http://stackoverflow.com/questions/21536572/generate-unique-id-in-java-to-label-groups-of-related-entries-in-a-log 
     
     
    http://stackoverflow</div>
                                    </li>
                                    <li><a href="/article/2598.htm"
                                           title="php安装模块检测是否已安装过, 使用的SQL语句" target="_blank">php安装模块检测是否已安装过, 使用的SQL语句</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                        <div>       
    SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern'] 
    SHOW TABLES列举了给定数据库中的非TEMPORARY表。您也可以使用mysqlshow db_name命令得到此清单。 
    本命令也列举数据库中的其它视图。支持FULL修改符,这样SHOW FULL TABLES就可以显示第二个输出列。对于一个表,第二列的值为BASE T</div>
                                    </li>
                                    <li><a href="/article/2725.htm"
                                           title="5天学会一种 web 开发框架" target="_blank">5天学会一种 web 开发框架</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a>
                                        <div>web framework层出不穷,特别是ruby/python,各有10+个,php/java也是一大堆 根据我自己的经验写了一个to do list,按照这个清单,一条一条的学习,事半功倍,很快就能掌握 一共25条,即便很磨蹭,2小时也能搞定一条,25*2=50。只需要50小时就能掌握任意一种web框架 
    各类web框架大同小异:现代web开发框架的6大元素,把握主线,就不会迷路 
    建议把本文</div>
                                    </li>
                                    <li><a href="/article/2852.htm"
                                           title="Gson使用三(Map集合的处理,一对多处理)" target="_blank">Gson使用三(Map集合的处理,一对多处理)</a>
                                        <span class="text-muted">eksliang</span>
    <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/gson/1.htm">gson</a><a class="tag" taget="_blank" href="/search/Gson+map/1.htm">Gson map</a><a class="tag" taget="_blank" href="/search/Gson+%E9%9B%86%E5%90%88%E5%A4%84%E7%90%86/1.htm">Gson 集合处理</a>
                                        <div>转载请出自出处:http://eksliang.iteye.com/blog/2175532 一、概述 
    &nbsp; &nbsp; &nbsp; &nbsp;Map保存的是键值对的形式,Json的格式也是键值对的,所以正常情况下,map跟json之间的转换应当是理所当然的事情。 二、Map参考实例 
    package com.ickes.json;
    
    import java.lang.refl</div>
                                    </li>
                                    <li><a href="/article/2979.htm"
                                           title="cordova实现“再点击一次退出”效果" target="_blank">cordova实现“再点击一次退出”效果</a>
                                        <span class="text-muted">gundumw100</span>
    <a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                        <div>基本的写法如下: 
     
    
    
    document.addEventListener(&quot;deviceready&quot;, onDeviceReady, false);
    			
    function onDeviceReady() {
    	//navigator.splashscreen.hide();
            document.addEventListener(&quot;b</div>
                                    </li>
                                    <li><a href="/article/3106.htm"
                                           title="openldap configuration leaning note" target="_blank">openldap configuration leaning note</a>
                                        <span class="text-muted">iwindyforest</span>
    <a class="tag" taget="_blank" href="/search/configuration/1.htm">configuration</a>
                                        <div>hostname // to display the computer name 
    hostname &lt;changed name&gt; // to change 
    go to: /etc/sysconfig/network, add/modify HOSTNAME=NEWNAME to change permenately 
    dont forget to change /etc/hosts</div>
                                    </li>
                                    <li><a href="/article/3233.htm"
                                           title="Nullability and Objective-C" target="_blank">Nullability and Objective-C</a>
                                        <span class="text-muted">啸笑天</span>
    <a class="tag" taget="_blank" href="/search/Objective-C/1.htm">Objective-C</a>
                                        <div>https://developer.apple.com/swift/blog/?id=25 
    &nbsp; 
    http://www.cocoachina.com/ios/20150601/11989.html 
    &nbsp; 
    http://blog.csdn.net/zhangao0086/article/details/44409913 
    &nbsp; 
    http://blog.sunnyxx</div>
                                    </li>
                                    <li><a href="/article/3360.htm"
                                           title="jsp中实现参数隐藏的两种方法" target="_blank">jsp中实现参数隐藏的两种方法</a>
                                        <span class="text-muted">macroli</span>
    <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a>
                                        <div>在一个JSP页面有一个链接,//确定是一个链接?点击弹出一个页面,需要传给这个页面一些参数。//正常的方法是设置弹出页面的src=&quot;***.do?p1=aaa&amp;p2=bbb&amp;p3=ccc&quot;//确定目标URL是Action来处理?但是这样会在页面上看到传过来的参数,可能会不安全。要求实现src=&quot;***.do&quot;,参数通过其他方法传!//////</div>
                                    </li>
                                    <li><a href="/article/3487.htm"
                                           title="Bootstrap A标签关闭modal并打开新的链接解决方案" target="_blank">Bootstrap A标签关闭modal并打开新的链接解决方案</a>
                                        <span class="text-muted">qiaolevip</span>
    <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/bootstrap/1.htm">bootstrap</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a>
                                        <div>Bootstrap里面的js modal控件使用起来很方便,关闭也很简单。只需添加标签&nbsp;data-dismiss=&quot;modal&quot; 即可。 
    可是偏偏有时候需要a标签既要关闭modal,有要打开新的链接,尝试多种方法未果。只好使用原始js来控制。 
    &nbsp; 
    &lt;a href=&quot;#/group-buy&quot; class=&quot;btn bt</div>
                                    </li>
                                    <li><a href="/article/3614.htm"
                                           title="二维数组在Java和C中的区别" target="_blank">二维数组在Java和C中的区别</a>
                                        <span class="text-muted">流淚的芥末</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a>
                                        <div>Java代码: 
    &nbsp; 
    public class test03 {
    	public static void main(String[] args) {
    		int[][] a = {{1},{2,3},{4,5,6}};
    		System.out.println(a[0][1]);
    	}
    } 
    &nbsp;运行结果: 
    Exception in thread &quot;mai</div>
                                    </li>
                                    <li><a href="/article/3741.htm"
                                           title="systemctl命令用法" target="_blank">systemctl命令用法</a>
                                        <span class="text-muted">wmlJava</span>
    <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/systemctl/1.htm">systemctl</a>
                                        <div>对比表,以 apache / httpd 为例   任务 旧指令 新指令   使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service   使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service   检查服务状态 service h</div>
                                    </li>
                    </ul>
                </div>
            </div>
        </div>
    
    <div>
        <div class="container">
            <div class="indexes">
                <strong>按字母分类:</strong>
                <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                    href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                    href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                    href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                    href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                    href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                    href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                    href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                    href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
            </div>
        </div>
    </div>
    <footer id="footer" class="mb30 mt30">
        <div class="container">
            <div class="footBglm">
                <a target="_blank" href="/">首页</a> -
                <a target="_blank" href="/custom/about.htm">关于我们</a> -
                <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
                <a target="_blank" href="/sitemap.txt">Sitemap</a> -
                <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
            </div>
            <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
    <!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
            </div>
        </div>
    </footer>
    <!-- 代码高亮 -->
    <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
    <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
    <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
    <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
    <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>
    
    
    
    
    
    </body>
    
    </html>