Java網絡03 Servlet沙拉


作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。

 

Servlet開胃酒中介紹了Servlet的基本流程和設置方式。這里,我們將看一些Servlet實例。這些實例都是HTTP通信(參考HTTP協議)中的常見問題。我們通過操作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的方法 (官方參考)

獲得頭信息

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

獲得請求方法

String method = request.getMethod();

獲得請求中的cookies

Cookie[] cookies = request.getCookies();

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

InputStream input = request.getInputStream();

 

HttpServletResponse的方法 (官方參考)

設置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協議本身的了解,將有助於我們更好的使用這兩個接口。

 

歡迎繼續閱讀“Java快速教程”系列文章

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM