HTTP method GET is not supported by this URL
瀏覽器訪問 Servlet 映射路徑時拋出 405 錯誤。
Servlet 類繼承 HttpServlet 但**未重寫 doGet() 或 doPost()** 方法。父類 HttpServlet 默認實現直接返回 405 狀態碼,表示不支持該 HTTP 方法。
// ❌ 錯誤:只寫了 service() 或沒寫任何 doXxx()
public class MyServlet extends HttpServlet {
// 缺少 doGet/doPost
}
// ✅ 正確:根據需求重寫對應方法
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 處理 GET 請求
resp.getWriter().write("GET OK");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 處理 POST 請求
doGet(req, resp); // 簡單場景轉發給 doGet
}
}
service() 是分發入口,若重寫它需手動分發請求方法,易出錯。建議只重寫 doGet/doPost。<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
確保 url-pattern 與瀏覽器訪問路徑一致(含大小寫)。
doGet 首行打印日誌:log("doGet called"); 確認方法被調用。localhost_access_log 確認請求到達。
