快速业务通道

在Java Web 开发框架中创建VoiceXML页面 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
vlet(Java),这种调试极 其艰难。不要添加所有这些变量(没有双关的意思),务必从一个可正常工作的 VXML 文件 入手。然后 准备运行 Java 代码。

在Java Web 开发框架中创建VoiceXML页面(5)

时间:2011-04-16 IBM Brett McLaughlin

读入文件

准备好 VXML 可供使用后,您也就为开始编码作好了最终的准备。首先从一个仅载入 VXML 文件的 Servlet 开始。清单 3 是一个实现此功能的 Servlet —— 载入 清单 2 中开 发的 VXML。这段代码没有任何输出,所以期望值暂时不要太高。

清单 3. 载入一个 VXML 文件

package com.ibm.vxml; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*; public class VoiceXMLServlet extends HttpServlet {   private static final String VXML_FILENAME =    "simple-voice_recog.xml";   public void doGet(HttpServletRequest req, HttpServletResponse res)    throws ServletException, IOException {    String vxmlDir = getServletContext().getInitParameter("vxml-dir");    BufferedInputStream bis = null;    ServletOutputStream out = null;    try {     // Load the VXML file     File vxml = new File(vxmlDir + "/" + VXML_FILENAME);     FileInputStream fis = new FileInputStream(vxml);     bis = new BufferedInputStream(fis);     // Output the VXML file     int readBytes = 0;     while ((readBytes = bis.read()) != -1) {      // output the VXML     }    } finally {     if (out != null) out.close();     if (bis != null) bis.close();    }   } }

这段代码非常直观。它载入一个 XML 文件 —— 通过 servlet 的配置上下文中的目录和 一个常量文件名指定,然后遍历文件内容。您要将文件的路径硬编码到 servlet 中,但至少 将目录名存储到 Web.xml 文件中是一个非常不错的主意,此文件位于 servlet 上下文的 WEB-INF/ 目录下。清单 4 展示了 Web.xml 中的上下文参数。

清单 4. servlet 的上下文参数

 <context-param>    <param-name>vxml-dir</param-name>    <param-value>/path-to-your-voicexml-dir/voicexml</param-value>   </context-param>

若编译 servlet 并尝试在 Web 浏览器中载入它,您只会看到一个空白的屏幕,同样,您 应确保至少会看到这样的空白屏幕。如果得到错误,就需要予以更正。例如,常常会出现文 件访问问题或 VXML 文件路径录入错误。一旦得到了空白屏幕,也就准备好实际输出 VXML 文件了。

在Java Web 开发框架中创建VoiceXML页面(6)

时间:2011-04-16 IBM Brett McLaughlin

从 servlet 中输出 VXML

首先,您需要访问一个输出对象,这样才能向浏览器发送内容。这非常简单:

// Load the VXML file     File vxml = new File(vxmlDir + "/" + VXML_FILENAME);     FileInputStream fis = new FileInputStream(vxml);     bis = new BufferedInputStream(fis);     // Let the browser know that XML is coming     out = res.getOutputStream();

从文件提取内容也非常简单,只要使用一行代码即可:

// Output the VXML file     int readBytes = 0;     while ((readBytes = bis.read()) != -1) {      // output the VXML      out.write(readBytes);     }

虽然上述代码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号