Tất cả câu hỏi
Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.
<a href="logoutServlet">Logout</a>When the client clicks the logout link, the following code in the logoutServlet runs:
HttpSession session = request.getSession();
//TODO
response.sendRedirect("login.jsp");What is the best code to write in the TODO section to complete the logout function?
Đáp án đúng: "session.invalidate(); ". Lời gọi này huỷ cả phiên phía máy chủ: mọi thuộc tính bị bỏ và mã định danh cũ không còn hiệu lực, nên sau khi chuyển hướng về trang đăng nhập thì các trang như trang hồ sơ hay trang lịch sử đơn không đọc lại được dữ liệu người dùng cũ, kể cả khi người dùng bấm nút lùi. Lời gọi "session.removeAll(); " không biên dịch được vì giao diện phiên không có phương thức tên đó. Lời gọi "session.getAttribute(“USER”).remove(); " sai hai lẽ: thứ trả về là một vật thể chung không có phương thức này, và khi chưa đăng nhập thì giá trị rỗng sẽ gây ngoại lệ con trỏ rỗng. Lời gọi "session.removeAttribute(“USER”); " chạy được nhưng chỉ bỏ một thuộc tính, phiên vẫn sống cùng các thuộc tính khác nên chưa phải đăng xuất dứt điểm. Dòng "
if(session.getAtriibute(“USER”)!=null) session.remove(“USER”);" dùng hai tên hàm không có trong giao diện phiên, lại viết sai chính tả, nên không biên dịch được. Lời gọi "session.remove(); " cũng vậy, không tồn tại trong giao diện phiên.
Đáp án đúng: "${product.stockPerStore["store101"]}". Trong EL, toán tử ngoặc vuông là cách tổng quát để tra một bản đồ: giá trị trong ngoặc được coi là khoá, nên biểu thức này lấy đúng phần tử ứng với khoá đã nêu rồi in ra số lượng tồn. Cách viết "${product.stockPerStore.store101}" cũng tra được bản đồ, nhưng chỉ khi tên khoá là một định danh hợp lệ, nên nó phụ thuộc hình dạng khoá chứ không phải lối truy cập chung cho mọi khoá, ví dụ khoá có dấu cách hoặc mở đầu bằng chữ số. Cách viết "${
product.stockPerStore.get("store101")
}
"gọi thẳng phương thức Java, chỉ chạy trên bản EL có hỗ trợ gọi phương thức, lại đi đường vòng qua chính toán tử tra khoá đã có sẵn. Cách viết "${product.stockPerStore["store101"].value}" thêm một bước đọc thuộc tính trên giá trị trả về, mà giá trị đó là một số nguyên bọc, không có hàm đọc thuộc tính mang tên ấy, nên biểu thức không ra kết quả.
<context-param> tag in the web.xml file?
<web-app>
<context-param>
<param-name>studentName</param-name>
<param-value>abcJhn</param-value>
</context-param></web-app>
Đáp án đúng: "ServletContext sc = getServletContext();
String serverName = sc.getInitParameter("studentName"); ". Khai báo tham số nằm trực tiếp trong phần tử gốc của mô tả triển khai, không lồng trong khai báo của một servlet nào, nên nó là tham số khởi tạo của cả ứng dụng và chỉ vật thể ngữ cảnh ứng dụng đọc được, lấy bằng lời gọi trong servlet rồi hỏi theo tên. Dòng "request.getParameter("studentName"); " đọc tham số của lượt yêu cầu, tức dữ liệu từ chuỗi truy vấn hay biểu mẫu, nên luôn trả về giá trị rỗng với tham số khai trong tệp cấu hình. Đoạn "ServletConfig sc = getServletConfig()." sai hai lẽ: vật thể cấu hình chỉ thấy tham số khởi tạo khai riêng bên trong khai báo của chính servlet đó, và dòng lại kết thúc bằng dấu chấm nên mã không biên dịch được. Dòng "response.getParameter("studentName"); " sai vì đối tượng phản hồi chỉ dùng để ghi kết quả trả về, nó không có hàm đọc tham số nào.
protected void doPost(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
String user = req.getParameter("username");
res.getWriter().println("User: " + user);
}Which of the following statements is the most incorrect?
init()service()destroy()doGet()doPost()doGetdoPostdoFilterserviceinitdoFilterserviceexecuteinitFilterĐáp án đúng: "<filter> and <filter-mapping> ". Khai một bộ lọc cần hai phần: phần tử đầu đặt tên bộ lọc rồi chỉ ra lớp hiện thực cùng tham số khởi tạo, phần tử sau nối tên đó với mẫu đường dẫn hoặc tên servlet mà bộ lọc phải chặn, và thứ tự các phần tử nối chính là thứ tự chuỗi bộ lọc chạy. Cặp "<filter-definition> and <filter-mapping> " dùng một tên phần tử không có trong lược đồ của mô tả triển khai, nên máy chủ báo lỗi ngay khi đọc tệp. Cặp "<filter> and <application-filter> " đúng nửa đầu nhưng nửa sau là tên tự đặt, không tồn tại, nên bộ lọc được khai mà chẳng gắn vào đường dẫn nào. Cặp "<servlet-filter> and <filter-mapping> " cũng vậy: phần tử khai báo bộ lọc không mang tiền tố servlet, lược đồ không nhận tên này.