搜狐首页 - 新闻 - 体育 - 娱乐 - 财经 - IT - 汽车 - 房产 - 女人 - 短信 - 彩信 - 校友录 - 邮件 - 搜索 - BBS - 搜狗 
搜狐首页 >> 搜狐IT >> 网狐教程-搜狐IT >> 程序开发-网狐教程-搜狐IT >> Java
Java Servlet 编程及应用之六
IT.SOHU.COM  2004-03-22 20:46 
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭

 Servlet 链提供了Servlet 应用的一种特殊功能。与UNIX 和DOS 命令中的管道类似,可以将多个Servlet 以特定顺序链接起来。在Servlet 链中,一个Servlet 的输出被当作下一个Servlet 的输入,而链中最后一个Servlet 的输出被返回到浏览器。   编程思路:首先编写一个表过滤器Servlet,它的作用主要是按照一定的表格格式输出,在通过Servlet 表过滤器(TableFilter.java)后,无格式化的Servlet(ghq.java)所有的行将会被格式化成HTML表格。   表过滤器 TableFilter.java 的源代码如下:(代码节选) import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class TableFilter extends HttpServlet {  public void service(HttpServletRequest req, HttpServletResponse resp)  throws ServletException, java.io.IOException  {   // Get all headers set by the previous servlet and echo them   java.util.Enumeration e = req.getHeaderNames();   while (e.hasMoreElements()) {    String header = (String)e.nextElement();    String value = req.getHeader(header);    resp.setHeader(header, value);   }   // Get the input and output streams   ServletInputStream in = req.getInputStream();   ServletOutputStream out = resp.getOutputStream();   // Only process if this is a recognized MIME type   String type = req.getContentType();   if (type.equals("text/html") || type.equals("text/table") || type.equals("application/x-www-form-urlencoded")) {    resp.setContentType("text/html");    // Create a buffered reader that we can use to read    // a single line at a time    BufferedReader br = new BufferedReader(new InputStreamReader(in));    boolean inTable = false;    int tableCols = 0;    boolean headerRow = false;    // Read until no more data exists    while (true) {     String s = br.readLine();     // null indicates end of file     if (s == null) {      break;     }    // If we are in the middle of a table command, process    // the line    if (inTable) {     // Search for the end of the table     if (s.startsWith("");   // Output the table   out.println("姓名,性别,联系电话");   out.println("谷物,男,4324552");   out.println("江淮,女,2345265");   out.println("王冠,男,7867655");   out.println("张罗,男,5654343");   out.println("许愿,女,8876554");   out.println("");   // Wrap up   out.println("");   out.flush();   out.close();  }  public void init(ServletConfig cfg)  throws ServletException  {   super.init(cfg);  }  public void destroy()  {   super.destroy();  } }   编程技巧说明:   触发Servlet 链,有3种触发Servlet 链的方式:   * 通过在URL 中用逗号分隔的多个Servlet 来直接触发。   * 将多个Servlet 指定同一个别名,然后通过别名方式来触发Servlet 链。   * 指定一种MIME 类型,规定凡是这种MIME 类型的响应都要通过某一个Servlet 来过滤,这也是一种Servlet 链的应用。   其中第三种应用比较特殊,可以用来格式化文本,在一些Internet 翻译网站也可能用来对结果文本进行翻译。 用第一种直接在URL中触发Servlet 链的方法很简单,只要在URL后面将链中的Servlet 用逗号按顺序隔开即可。在浏览器的地址栏输入URL 如下: http://192.168.10.1/servlet/ghq,TableFilter   用第二种方法使用别名方式指定Servlet 链,如采用JRUN servlet 引擎,则在JRUN 的Servlet URL Mapping 功能中进行配置。如在"Virtual Path/Extension" 项中输入 " /test ",在"Servlet invoked" 项中输入" ghq,TableFilter ",则在用别名触发Servlet 的URL 如下: http://192.168.10.1/test
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭





ChinaRen - 繁体版 - 搜狐招聘 - 网站登录 - 帮助中心 - 设置首页 - 广告服务 - 联系方式 - 保护隐私权 - About SOHU - 公司介绍
Copyright © 2004 Sohu.com Inc. All rights reserved. 搜狐公司 版权所有

相关连接

 ■ 我来说两句
用  户:        匿名发出:
请各位遵纪守法并注意语言文明。
 
*经营许可证编号:京ICP00000008号
*《互联网电子公告服务管理规定》
*《全国人大常委会关于维护互联网安全的规定》
短信内容:
手 机
自写包月5分钱/条 更多>>
搜狐天气为你抢先报! 魔力占卜姻缘一线牵!
金币不是赚的是抢的! 爱情玄机任由你游戏!
猪八戒这样泡到紫霞! 帅哥一定要看的宝典!
你受哪颗星星的庇护? 萨达姆最新关押照片!
精彩彩信
[和弦]欧若拉 一生有你
沧海一声笑
[音效]挪威的森林
爆铃 MP3 G点图 动画
[和弦]童话 你到底爱谁
[原唱]一千年以后 断点
[爆笑音效]赚钱拉 野花
[串烧]张韶涵 潘玮柏
精彩短信
[和弦]小薇 好心分手
[音效]当当当当 忘记


搜狐商城
·家电|品牌风扇新品热销
·音乐|秦海璐幸福回味
·图书|《眼镜蛇事件》
更多...