程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java網絡學習(三) Servlet沙拉

Java網絡學習(三) Servlet沙拉

編輯:關於JAVA

Servlet開胃酒中介紹了Servlet的基本流程和設置方式。這裡,我們將看一些Servlet實例。這些實例都是HTTP通信(參考HTTP協議:http://www.cnblogs.com/vamei/archive/2013/05/11/3069788.html)中的常見問題。我們通過操作request和response,來實現HTTP協議的功能。

生成頁面

Servlet的目的是動態生成頁面。比如下面的例子:

package foo;   
       
import javax.servlet.*;   
import javax.servlet.http.*;   
import java.io.*;   
import java.util.*;   
       
public class TestPage extends HttpServlet {   
       
    public void doGet(HttpServletRequest request,   
                     HttpServletResponse response)   
                throws IOException, ServletException   
    {   
        PrintWriter out = response.getWriter();   
        Date now = new Date(); // Date & Time   
        String page = "<html><body><p>" + now +"</p></body></html>";   
        out.println(page);   
    }   
       
}

上面,我們調用response的getWriter()方法,向回復中寫入文本,即回復的主體部分。關於Java的讀寫,可參考Java IO基礎。

有時我們主體部分不是文本,這時我們需要OutputStream類型的寫入器,通過調用response的getOutputStream()方法來獲得。

我們利用java.util.Date()提供的功能,來動態的生成日期和時間顯示。效果如下:

提交表格

HTTP請求有POST方法。Servlet通過doPost()方法來處理POST請求。POST方法的目的是向服務器提交數據,特別是HTML的FORM元素中包含的數據。

我們先來編寫一個包含有FORM的HTML頁面:

<html>   
       
<body>   
  <form action="MyForm" method="post">   
    Username: <input type="text" name="user"><br>   
    <input type="submit" value="Submit">   
  </form>   
</body>   
       
</html>

查看本欄目

頁面將提交給MyForm這個URL處理。提交的數據為text類型的user輸入。

下面是TestForm.java代碼,該代碼編譯成的Servlet將對應於MyForm這個URL(在web.xml中設置對應關系,參考Servlet開胃酒)

package foo;   
       
import javax.servlet.*;   
import javax.servlet.http.*;   
import java.io.*;   
       
public class TestForm extends HttpServlet {   
       
    public void doPost(HttpServletRequest request,   
                    HttpServletResponse response)   
                    throws IOException, ServletException   
    {   
        String username = request.getParameter("user"); // get "user" input   
       
        PrintWriter out = response.getWriter();   
        String page = "<html><body><p>Submitted: " + username +"</p></body></html>";   
        out.println(page);    }   
}

在上面的代碼中,我們改寫的是doPost()方法。此外,我們調用request的getParameter()方法,來獲得提交的數據,即user的參數值。我們隨後顯示了提交的數據。在真實使用情境下,我們可以對該數據進行其他的操作,比如放入數據庫。

顯示結果如下:

查看本欄目

其它方法

我們看到,HTTP協議在Servlet中的操作,主要是通過request和response對象實現的。這兩個對象分別實施了HttpServletRequest接口和HttpServletResponse接口。HttpServletRequest接口繼承自ServletRequest接口,HttpServletResponse接口繼承自ServeletResponse接口。

下面列舉一些HttpServletRequest和HttpServletResponse的常用方法。

HttpServletRequest的方法 (官方參考:http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html)

獲得頭信息

String host = request.getHeader("Host");

獲得請求方法

String method = request.getMethod();

獲得請求中的cookies

Cookie[] cookies = request.getCookies();

讀取請求中的非文本資源,需要InputStream

InputStream input = request.getInputStream();

HttpServletResponse的方法 (官方參考:http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html)

設置MIME類型

response.setContentType("image/jpeg");

重新定向

response.sendRedirect("http://www.google.com");

設置頭信息

response.setHeader("Server","Apache-Coyote/1.1");

設置ContentLength

response.setContentLength();

設置狀態碼

response.setStatus(200);

總結

HttpServletRequest和HttpServletResponse是HTTP協議在Servlet中的具體實施。通過調用它們,我們可以在Java內部來使用HTTP協議。對HTTP協議本身的了解,將有助於我們更好的使用這兩個接口。

作者:Vamei 出處:http://www.cnblogs.com/vamei

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved