1. 程式人生 > >Javaweb學習筆記(一):Servlet常見問題

Javaweb學習筆記(一):Servlet常見問題

1. 在server.xml中設定context路徑,如果Path值為“”,則可以訪問自己的頁面,無法訪問Tomcat主頁

2. 同樣的context路徑,path為空,卻啟動toncat失敗

    解決:原因是有兩個相同的path路徑,空字元算相同的路徑 path=“”

3.在使用getWriter()向瀏覽器輸入資料時,設定好輸入物件PrintWriter out後,要重啟tomcat,否則會出現404

4.不使用new而呼叫一個方法建立物件

//獲取到printWriter物件
        PrintWriter printWriter = response.getWriter();
        printWriter.write("看完部落格點贊!");

實質是物件用類的方法建立,建構函式為私有private,目的是為了讓使用者只能創造一個物件(單例模式),詳見工廠模式

5.關於Servlet 的doGet(),doPost(),service()

service原始碼:

protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
        String method = req.getMethod();
        if(method.equals("GET"))
        {
            long lastModified = getLastModified(req);
            if(lastModified == -1L)
            {
                doGet(req, resp);
            } else
            {
                long ifModifiedSince = req.getDateHeader("If-Modified-Since");
                if(ifModifiedSince < (lastModified / 1000L) * 1000L)
                {
                    maybeSetLastModified(resp, lastModified);
                    doGet(req, resp);
                } else
                {
                    resp.setStatus(304);
                }
            }
        } else
        if(method.equals("HEAD"))
        {
            long lastModified = getLastModified(req);
            maybeSetLastModified(resp, lastModified);
            doHead(req, resp);
        } else
        if(method.equals("POST"))
            doPost(req, resp);

可見,service主要是起到跳轉的作用,其中就包括doGet和doPost方法,如果重寫service方法,不管有沒有其他方法(如doGet,doPost),都會執行service方法,而不會執行其他方法。

視訊中,一直是通過重寫service方法來實現功能,但實際設計中是通過重寫doGet和doPost來實現表單資料的獲取。

6、在插入資料時,報錯 Duplicate entry '0' for key 'PRIMARY',是因為主鍵欄位重複,新建立的資料主鍵和原來的相同,所以需要把主鍵設定為自增欄位