麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Java Servlet 編程及應用之六

2019-11-18 15:47:49
字體:
來源:轉載
供稿:網友

  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("<!--end table")) {
     out.println("</table></center>");
     inTable = false;
    }
    else {
     // We've got a row of a table - format it
     s = formatRow(s, tableCols, headerRow);
     headerRow = false;
    }
   }
   else {
 
    // Search for the start of a table
    if (s.startsWith("<!--table")) {
     int pos = s.indexOf("columns=");
     tableCols = 0;
     if (pos >= 0) {

      // Get the number of columns

      String cols = s.substring(pos + 8);
      int endPos = cols.indexOf(" ");
      if (endPos > 0) {
       cols = cols.substring(0, endPos);
      }
     tableCols = Integer.parseInt(cols);
    }

   .........
   .........
  這個表過濾器servlet 分析另一個servlet 的輸出,查找含有非凡格式指令的HTML 注釋,這些指令包括表有多少列、是否顯示表頭等等。在該表格格式指令之后的所有行將會被格式化成一個HTML 表格。這樣鏈中的前一個servlet 只要簡單地將數據用逗號分隔,數據就可以一行一行地直接輸出了,而無須修改這些數據格式化HTML 表格。

  沒有格式化輸出的HTML 表格ghq.java 的源代碼如下:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美成人视 | 在线a | 国产一级毛片国产 | 亚洲日本高清 | 欧美激情精品久久久久 | 国产精品99久久久久久久 | 欧美成人免费在线视频 | 国产在线精品一区二区夜色 | 国产一区二区三区高清 | 午夜视频啊啊啊 | 日本在线国产 | 久久欧美亚洲另类专区91大神 | 史上最强炼体老祖动漫在线观看 | 国产在线精品91 | 国产一区二区三区撒尿在线 | 国产超碰人人做人人爱 | 激情在线视频 | 九九热精品免费视频 | 成人毛片免费 | 91久久久久久久一区二区 | 中韩毛片 | 国内精品久久久久久2021浪潮 | 欧美性受xxx黑人xyx性爽 | 毛片a级毛片免费播放100 | 欧美日韩专区国产精品 | 中文字幕国 | 97青青草视频 | 高清一区二区在线观看 | 午夜在线观看视频网站 | 精品国产乱码一区二区 | 国产精品一区在线免费观看 | 久久久新 | 免费观看黄色一级视频 | 亚洲爱爱网站 | 黄色影院在线看 | 久久国产精品久久久久久电车 | 激情久久一区二区 | 高清一区二区在线观看 | 日韩视频精品一区 | 国产一区网址 | 黄色片网站在线播放 |