快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ervletException, IOException {    doGet(req, res);   }

另外一个简单的附加项用于允许浏览器切实获知您正在输出一个 VXML 文件的内容。为此 ,设置 servlet 中的 Content-disposition 响应头,如下:

// Let the browser know that XML is coming     out = res.getOutputStream();     res.setContentType("text/xml");     res.setContentLength((int)vxml.length());     res.addHeader("Content-Disposition",      "attachment; filename=" + vxml);

现在读取您的响应的浏览器(或其他代码)就可以发现所服务的 VXML 文件了。但务必不 要包含完整的文件路径,这会造成安全隐患!

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

时间:2011-04-16 IBM Brett McLaughlin

动态 VoiceXML

有了输出 VXML 文件的 servlet 之后,将其转换成动态输出 VXML 的 servlet(使用代 码作为模型或模板)轻而易举。换句话说,您可以超越简单地载入静态的 VXML 文件,开始 通过编程创建 VXML。

当您开始考虑动态 VoiceXML 时,Java 平台就显示出了自己的优势。它提供了轻松输出 XML 的能力,还有与数据库、目录服务器、身份验证存储和会话的交互。此外,它还能够证 实,构建动态 VXML 将消除基于语音的系统的部分刻板性。

在这一节中,我将逐步为您介绍创建一个输出动态 VXML 的 Java servlet 的步骤。

通过 out.println() 输出 VXML

您已经了解了如何访问 ServletOutputStream,然后在输出流中插入字节。但如果从源( 例如一个静态 VXML 文件)传输到输出流的不仅仅是字节,那么直接处理字节的方式几乎无 法管理控制。

如果您希望自行创建 VXML,最好使用 PrintWriter。利用这个类,您可发出整个字符串 ,使之对于创建和输出动态内容更为有用。这只需要对代码略加修改,如下所示:

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);     // Let the browser know that XML is coming     PrintWriter out = res.getOutputStream();     res.setContentType("text/xml");     res.setContentLength((int)vxml.length());     // Output content using PrintWriter    } finally {     if (out != null) out.close();     if (bis != null) bis.close();    }   }

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

时间:2011-04-16 IBM Brett McLaughlin

另外,不要忘记导入 java.io.PrintWriter 类:它不会自动成为对您的 servlet 的代码 基可用。

使用 PrintWriter,您现在可以输出基于字符串的内容了。例如,清单 6 输出与 清单 1 相同的 VXML,但是通过 servlet 输出,并未从静态文件载入 VXML 内容。

清单 6. 动态输出 VXML

package com.ibm.vxml;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
public class DynamicVoiceXMLServlet extends HttpServlet {
  public void doGet(HttpServletRequ

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号