1. 程式人生 > >Hello2實例的分析

Hello2實例的分析

進行 isp pre lang 參數傳遞 itl fish dex lba

首先:

java EE 上的hello2項目是一個部署在glass fish上的開發源碼的java web項目,在終端通過命令行使用maven進行打包成.war文件,最後部署到相關的glass fish服務器上。

Java EE 的hello2 不同於hello1 的不同之處在於,前者可以直接通過hello1項目名進行訪問文件,後者需要通過訪問編寫的greeting的web文件才能夠訪問到hello2文件。

其中的原因在於如下:

1:在hello2的項目中,采用的是Java servlet 技術來采取對項目的整體框架的搭建。編寫另一個greeting的java文件,實現了一個greeting的java類來覆蓋url的doGet方法,

這個Java類重寫了關於HTTP的get 方法,因此通過訪問相關的url 即可以訪問到編寫的Java servlet 文件。主要的實例如下:

技術分享圖片
@Override
    public void doGet(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        response.setBufferSize(8192);
技術分享圖片

這個重寫的doGet方法傳入了一個request 和 response參數,對請求得到的響應進行處理,返回相關的編寫的html類型的java web文件和並且設定最大的字節數為8192字節。

http://host:port/context-root[/url-pattern

@WebServlet("/greeting")
public class GreetingServlet extends HttpServlet {
    ...}
通過分析可知,這個Greeting繼承了HttpServlet包,從而實現關於http的servlet方法,完成了url到web組件的映射。

1 2 3 4 5 6 7 if (username != null && username.length()> 0) { RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/response"); if (dispatcher != null) { dispatcher.include(request, response); }

編寫的實例類實現了一個關於用戶名和用戶名長度的判別方法,對用戶輸入的信息進行判別,並通過responseServlet進行處理,相關的實例如下:

技術分享圖片
@WebServlet("/response")
public class ResponseServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
        try (PrintWriter out = response.getWriter()) {

            // then write the data of the response
            String username = request.getParameter("username");
            if (username != null && username.length()> 0) {
                out.println("<h2>Hello, " + username + "!</h2>");
            }
        }
    }
技術分享圖片

當用戶輸入信息時,後端對輸入的信息做出響應,呈現出java web的servlet HTML組件。

總結:

Servlet 技術首先編寫一個java 類實現一個servlet接口,其次將開發好的Java web類部署到web 服務其中,即glass fish服務器中,即可以實現javaweb簡單部署。

Servlet程序是由服務器調用,當服務器收到客戶端的http請求時:

1: 首先判斷是否是第一次訪問Servlet程序,如果是則創建Servlet實例,調用實例對象的init()方法。

2 : 創建一個用於封裝HTTP請求消息的HttpServletReqset對象和一個代表HTTP響應消息的HttpServletResponse對象。

3 : 最後調用doGet()方法將請求參數和響應參數傳遞進去。

通過以上的步驟,客戶端通過請求上下文的URL即 ”http://host:port/context-root[/url-pattern]“ 能夠訪問到部署在glass fish服務器上的Java Servlet項目 即hello2。

Hello2實例的分析