顯示具有 Java EE::Servlet 標籤的文章。 顯示所有文章
顯示具有 Java EE::Servlet 標籤的文章。 顯示所有文章

2021年3月16日 星期二

了解網頁與 Servlet 的互動

目標設定:
  • 利用常見的登入帳密網頁,了解網頁與 Servlet 互動情形!
  • 專案的產生,請查看上一篇文章

實作流程:
  1. 開啟 Eclipse IDE,使用 FirstServlet 專案!
  2. 在 FirstServlet 專案上,按滑鼠右鍵,選擇「New」「HTML File」
  3. 「File Name」輸入 Login.html,再按下「Next」按鍵!
  4. 勾選「Use HTML Template」,選擇 「New HTML File(5)」,按下「Finish」按鍵!
  5. 檔案內容如下:
  6. 新增一個 Servlet 檔案,Java Package 設定成 com.example,class name 設定成 logincheck,URL mappings 設定成 /logincheck,檔案內容如下:
  7. 啟動 Tomcat 9,輸入網址:http://localhost/FirstServlet/Login.html
  8. 請注意查看各檔案位置的配置

了解 web.xml 檔案內容

目標設定:
  • 利用 Eclipse 功能建立專案的 web.xml 檔案!
  • 專案的產生,請查看上一篇文章

產生 web.xml 檔案流程
  1. 開啟 Eclipse IDE
  2. 在「Project Explorer」中,對「Deployment Descriptor: FirstServlet」按下滑鼠右鍵,選擇「Generate Deployment Descriptor Stub」!
  3. 在「WebContent」下,可看見下列目錄架構:web.xml 在 WEB_INF 目錄底下!
web.xml 檔案說明

2021年3月12日 星期五

第一個 Servlet 程式

目標設定:
  • 使用 Eclipse IDE 建立第一個專案!

快速設定流程
  1. 開啟 Eclipse IDE
  2. 選擇「File」「New」「Dynamic Web Project」
  3. 輸入 Project Name 為 FirstServlet ,並且確認 Target runtime 為 Aapache Tomcat v9.0 ,按下 Finish 完成!
  4. 在左邊的 Project Explorer 窗格內,選擇 Java Resources 下的 src 資料夾,按下滑鼠右鍵後,選擇 New ,拉出選單,選擇 Servlet 項目
  5. 在 Java Package 欄位上,輸入 com.example 路徑!在 Class Name 上輸入 Hello !!完成後按下 Next !!
  6. 在 URL mappings 對話方塊內,選擇 /Hello 後,按右方的 Edit... 按鍵!
  7. 修改對話方塊內的值為 /hello,按下 OK 按鍵!最後再按下 Finish 即可!
  8. 修改 doGet() 內的程式!
  9. 按下綠色按鍵後,因沒有存檔,會先被要求要存檔!按下 Save 後,繼續下一個步驟!
  10. 確認 Server Name 是否為先前設定的 Apache Tomcat v9.0,沒問題後,可按下 Finish 完成
  11. 允許私人網路存取!
  12. 在網址列輸入 ?name=unlimited 可看見帶出的資料值!

2015年12月28日 星期一

Chapter 10 -- Model 進階項目

The Model as a Macro-Pattern
在MVC架構中,Model 元件內嵌了許多的功能,其負責的功能如下:
  • 展現一個介面給 Controller
  • 執行商業邏輯
  • 展現一個 JavaBean 合適的資料觀點給 View 元件!對 View 元件而言,是個方便使用的形式!
The View Helper Pattern
通常,OO(物件導向)原則之下,每個物件應該都是被設計成最好的狀態!但是,實情上卻不儘然如此,一定會有修改的時候!使用OO設計出來的物件,理論上是可以達成最小化的修改!
所以,依據規則,在設計 Model 時,不應考慮到 View 的展現!而 View 的設計,應該使用 EL 語言,一種非程式化的語言!另外,在純 Model 程式轉換或其他流程的轉換,View 可以提展現的介面!不過,必須注意 EL 並非是最佳的解決方案!
在設計專案過程中,每個 Model 本身的設計,可以忽略 View !等到設計好 Model 時,再利用 View ,將 Model 串接起來!所以 View Helper 是方便的做法,設計一個合適的介面給 View,然後,可連結到幾個純 Model 物件!

Database and Resource Access
  • Data Access Object(DAO) 樣式

  • DAO 樣式的好處

    • 物件與商業邏輯可以分開!
    • 在改變系統時,DAO 樣式物件可提供程式可重複利用性與彈性!
    • 無論是 Servlet 或 JSP 的客戶端程式,均可重複利用相同的資料存取程式!
    • 前端程式不用改變任存已經存在的取存資料程式,即可改變 web 層次的元件!
    • 後端程式不用改變任何前端程式,即可加入不同的資料來源!
  • JDBC API

    • JDBC API 是 Java 用來連結關連式資料庫的技術
    • 開發連結資料庫程式時,重點是:如何管理從 Web 到資料庫的通訊!

2015年8月21日 星期五

Servlet 第一支程式

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;

@WebServlet(name="HelloServlet", urlPatterns={"/hello.view"},
            loadOnStartup=1)
public class HelloWorld extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet HelloWorld</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet HelloWorld at "
               + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

    
    @Override
    protected void doGet(HttpServletRequest request, 
                         HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    
    @Override
    protected void doPost(HttpServletRequest request, 
                          HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
}

index.html 可以寫成下列方式 ...
<!DOCTYPE html>
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>TODO write content</div>
    </body>
</html>

網址:
http://localhost:8080/ServletDemo1/hello.view