Java Servlet 和 JSP教程(4)

來源:互聯網
上載者:User
js|servlet|教程

  3.3 輸出HTML的Servlet

  大多數Servlet都輸出HTML,而不象上例一樣輸出純文字。要輸出HTML還有兩個額外的步驟要做:告訴瀏覽器接下來發送的是HTML;修改println語句構造出合法的HTML頁面。

  第一步通過設定Content-Type(內容類型)應答頭完成。一般地,應答頭可以通過HttpServletResponse的setHeader方法設定,但由於設定內容類型是一個很頻繁的操作,因此Servlet API提供了一個專用的方法setContentType。注意設定應答頭應該在通過PrintWriter發送內容之前進行。下面是一個執行個體:

HelloWWW .java

package hall;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWWW extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n" +
"<HTML>\n" +
&nb sp; "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" +
"<BODY>\n" +
"<H1>Hello WWW</H1>\n" +
"</BODY></HTML>");
}
}

  3.4 幾個HTML工具函數

  通過println語句輸出HTML並不方便,根本的解決方案是使用JavaServer Pages(JSP)。然而,對於標準的Servlet來說,由於Web頁面中有兩個部分(DOCTYPE和HEAD)一般不會改變,因此可以用工具函數來封裝產生這些內容的代碼。

  雖然大多數主流瀏覽器都會忽略DOCTYPE行,但嚴格地說HTML規範是要求有DOCTYPE行的,它有助於HTML語法檢查器根據所聲明的 HTML版本檢查HTML文檔合法性。在許多Web頁面中,HEAD部分只包含<TITLE>。雖然許多有經驗的編寫者都會在HEAD中包含許多META標記和樣式聲明,但這裡只考慮最簡單的情況。

  下面的Java方法只接受頁面標題為參數,然後輸出頁面的DOCTYPE、HEAD、TITLE部分。清單如下:

ServletUtilities.java

package hall;

public class ServletUtilities {
public static final String DOCTYPE =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";

public static String headWithTitle(String title) {
return(DOCTYPE + "\n" + "<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE ></HEAD>\n");
}

// 其他工具函數的代碼在本文後面介紹
}

HelloWWW2.java

下面是應用了ServletUtilities之後重寫HelloWWW類得到的HelloWWW2:

package hall;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWWW2 extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(ServletUtilities.headWithTitle("Hello WWW") +
"<BODY>\n" +
"<H1>Hello WWW</H1> ;\n" +
"</BODY></HTML>");
}
}



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.