Javaweb學習筆記(一):Servlet常見問題
阿新 • • 發佈:2018-11-03
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',是因為主鍵欄位重複,新建立的資料主鍵和原來的相同,所以需要把主鍵設定為自增欄位