岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> J2ME >> 无线开发 >> Java正文
在Java Web框架中创建VoiceXML页面
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 22:55:22
ut 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 文件了。

从 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);

      }




    虽然上述代码看似已经足够,但您依然需要告知浏览器您正在向它发送 XML。切记,浏览器用于 HTML,某些浏览器可能无法顺利接收 XML。您可设置内容类型,也可设置内容的长度,只要再次使用 HttpServletResponse 对象即可:

     

 // Let the browser know that XML is coming

      out = res.getOutputStream();

      res.setContentType("text/xml");

      res.setContentLength((int)vxml.length());

			

 

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页  

清单 5 展示了添加到前文介绍的 清单 3 给出的 servlet 中的所有代码。


清单 5. 完整且准备好载入 VXML 文件的 VoiceXMLServlet

				



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);



      // Let the browser know that XML is coming

      out = res.getOutputStream();

      res.setContentType("text/xml");

    

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    bet365 传世私服 天龙八部私服 热血江湖私服 英雄合击传奇私服 机战私服 惊天动地私服 天龙八部私服 热血江湖私服 bet365 天龙八部私服 bet365 传世私服 传奇世界私服