Câu hỏi: PRJ301 Phát triển ứng dụng Java web – Bộ ôn tập thi lại số 4
50 câu trắc nghiệm kèm lời giải của môn PRJ301 - Phát triển ứng dụng Java web, xếp đúng thứ tự trong đề.
Danh sách câu hỏi
Đáp án đúng: "Using the <select> element". Danh sách chọn trong form HTML được dựng bằng phần tử select, mỗi mục là một thẻ option bên trong và giá trị gửi về server là thuộc tính value của mục đang chọn, đọc ở servlet bằng request.getParameter() với tên chính là thuộc tính name của select. "Using the <dropdown> element" sai vì HTML không có phần tử nào tên dropdown, trình duyệt sẽ coi nó là thẻ lạ và không vẽ ra ô chọn nào. "Using the <list> element" cũng không tồn tại; các phần tử danh sách của HTML là ul, ol và li, chúng chỉ để trình bày nội dung và không gửi dữ liệu theo form. "Using the <options> element" sai ở dạng số nhiều: thẻ con hợp lệ bên trong select là option, và bản thân nó cũng không thay được phần tử chứa bên ngoài.
Đáp án đúng: "<init-param> ". Thẻ này đặt bên trong thẻ servlet của mô tả triển khai, mang một cặp param-name và param-value mà servlet đọc lại bằng getServletConfig().getInitParameter() hoặc gọi getInitParameter() ngay trong init(); nhờ vậy những giá trị như tên tệp cấu hình hay chuỗi kết nối không phải viết cứng trong mã. Lựa chọn "<param> " không tồn tại ở mức này, chữ param chỉ xuất hiện dưới dạng param-name và param-value, hoặc trong thẻ jsp:param của hành động chuẩn. Lựa chọn "<configuration> " không thuộc lược đồ web.xml của đặc tả servlet, đó là tên quen thuộc ở các tệp cấu hình khung khác. Lựa chọn "<servlet-param> " là tên đặt theo cảm giác, container không nhận ra và ứng dụng sẽ không triển khai được.
Đáp án đúng: "
public void service(ServletRequest request, ServletResponse response){
//…
}". Hợp đồng của giao diện Servlet quy định service() nhận đúng hai tham số, một ServletRequest mang dữ liệu yêu cầu và một ServletResponse để ghi kết quả, vì container luôn truyền cả cặp này vào mỗi khi có yêu cầu tới; khai báo lệch chữ ký thì phương thức chỉ còn là một method thường của lớp, container không bao giờ gọi. Lựa chọn "
public void service(){
//…
}" không có tham số nên vừa không nhận được dữ liệu yêu cầu vừa không có đường ghi trả về. Lựa chọn "
public void service(ServletRequest request){
//…
}" thiếu đối tượng phản hồi, đọc được tham số nhưng không thể sinh nội dung cho máy khách. Lựa chọn "
public void service(ServletResponse response){
//…
}" thì ngược lại, ghi ra được nhưng mất hẳn phần đọc yêu cầu, và cả hai cách này đều không phải phương thức ghi đè hợp lệ.
response.sendRedirect("url");request.sendRedirect("url");redirect("url");forward("url");Đáp án đúng: "response.sendRedirect("url"); ". Chuyển hướng là việc của đối tượng phản hồi: phương thức này đặt mã trạng thái chuyển hướng cùng tiêu đề Location rồi gửi về trình duyệt, trình duyệt tự phát một yêu cầu mới tới địa chỉ đó nên thanh địa chỉ đổi và dữ liệu trong phạm vi request cũ bị mất. Lựa chọn "request.sendRedirect("url"); " gọi sai đối tượng, giao diện HttpServletRequest không có phương thức này mà chỉ có getRequestDispatcher(). Lựa chọn "redirect("url");" là lời gọi tự do không thuộc API servlet, lớp HttpServlet không cung cấp tên như vậy. Lựa chọn "forward("url");" vừa sai chỗ gọi vì forward là phương thức của RequestDispatcher, vừa sai bản chất vì forward xử lý tiếp ngay trong cùng một lượt yêu cầu ở phía máy chủ nên địa chỉ không đổi.
destroy()service()init()start()Đáp án đúng: "<url-pattern> ". Đây là thẻ ghi mẫu đường dẫn, đặt trong servlet-mapping bên cạnh servlet-name, và chính nó quyết định yêu cầu tới địa chỉ nào sẽ được giao cho servlet đã khai báo; mẫu có thể là đường dẫn chính xác, dạng tiền tố kết thúc bằng dấu sao hoặc dạng phần mở rộng. Lựa chọn "<servlet-name> " chỉ là nhãn logic dùng để nối khai báo servlet với ánh xạ, bản thân nó không chứa địa chỉ nào. Lựa chọn "<servlet-class> " cho biết tên lớp Java đầy đủ để container nạp, cũng không nói gì về URL. Lựa chọn "<mapping> " không tồn tại trong lược đồ mô tả triển khai; thẻ đúng là servlet-mapping, và nó chỉ là khung bọc chứa servlet-name với url-pattern chứ bản thân cũng không phải nơi ghi mẫu đường dẫn.
request.getParameter()response.getParameter()request.getValue()response.getValue()