My Calendar

2015年1月1日 星期四

第一個Servlet程式

第一個 Servlet 程式

所謂工欲善其事,必先利其器。所以開始寫我們的第一支Servlet程式之前必須先準備好開發環境。

開發環境設定
1) 下載 Apache Tomcat (因為是用Servlet 3.0以上,所以Tomcat需要7.x 以上才能支援。)
3) 執行eclipse然後選擇 Windows -> Preferences -> Server ->  Runtime Environment。
4) 在Server Runtime Environments 選擇 Add -> Apache Tomcat  v7.0。然後在Tomcat installation       directory中選擇Tomcat的安裝目錄,最後按下Finish這就完成設定如下圖。


設定完成後就開始我們的第一支Servlet程式吧。

第一個Servlet程式
1) 在選單選擇 File->New->Dynamic Web Project.
2) 在Dynamic Web Project 當中的Target Runtime選擇剛才所新建的Server,Dynamic web 
     module version 選擇 3.0如下圖


3) 展開專案中的 Java Resources -> src 新增一個Servlet

接著可以開始寫第一支Servlet程式的內容了,在新增的Servlet加入一下的內容吧。

package com.learn.servlet;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloServlet
 */
@WebServlet("/hello.view")
public class HelloServlet extends HttpServlet {  //繼承 HttpServlet
 private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        super();
    }

 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  String name = request.getParameter("name");
  
  out.println("");
  out.println("");
  out.println("Hellow Servlet");
  out.println("");
  out.println("");
  out.println("

Hello! "+ name +" !

"); out.println(""); out.println(""); out.close(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }

在以上的範例程式可以看到繼承了 HttpServlet ,然後重新定義 doGet()方法。當瀏覽器發出GET請求時,會呼叫該方法。

在doGet()可以看到兩個參數分別是HttpServletResponse 和 HttpServletRequest。當Web Container 收到HTTP請求後,將會分別建立Request和Response的Java物件,而後在呼叫doGet()時將這兩個物件當成參數傳入。如果需要取得GET或POST請求的參數值,那將透過HttpServletRequestgetParameter()指定參數名稱即可。HttpServletResponse 是response物件,我們可以透過setContentType()設定回傳類型,然後再使用getWriter()取得PrintWriter物件在藉由PrintWriter物件中的println()將HTML回傳給瀏覽器。

執行Servlet
  1. 在『HelloServlet.java』右鍵 Run As -> Run on Server
  2. Tomcat 啟動成功後,你將會看到以下的畫面(恭喜!你的第一個Servlet程式完成了)

                     瀏覽器的網址設定是 http://localhost:8080/FirstServlet/hello.view?name=Eric.

Tomcat預設的port是8080,注意網址的路徑FirstServlet是專案的名稱,為什麼請求的URL是/hello.view呢?請注意看以上的範例程式中有以下一行:

@WebServlet("/hello.view")

這表示,如果請求的URL是/hello.view,就會由HelloServlet處理請求。

參考資料
  1. Servlet&JSP 教學手冊


沒有留言:

張貼留言