現象:JSP 中 Java 片段 (<% ... %>) 在頁面首次訪問時就執行驗證,顯示「用戶名或密碼錯誤」。
JSP 編譯為 Servlet 後,<% 代碼放入 _jspService(),**每次請求都執行**,不區分 GET/POST。首次 GET 請求參數為 null,驗證失敗輸出錯誤信息。
if ("POST".equalsIgnoreCase(request.getMethod())) { // 驗證邏輯 }LoginServlet,驗證後轉發/重定向。<c:if test="${not empty errorMsg}">${errorMsg}</c:if>,Servlet 設置 request.setAttribute("errorMsg", "...")。// LoginServlet.java
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
String u = req.getParameter("user");
String p = req.getParameter("password");
if ("admin".equals(u) && "admin".equals(p)) {
req.getSession().setAttribute("user", u);
resp.sendRedirect("welcome.jsp");
} else {
req.setAttribute("error", "用戶名或密碼錯誤");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}
equals,而非 ==。