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.
HttpSession session = request.getSession();
session.setAttribute("username", "HuyNM");Which of the following is incorrect?
paramsrequestinputgetParameterspageContextrequestapplicationsessionĐáp án đúng: "<%! %>". Khối khai báo được dịch thành thành viên của lớp servlet mà container sinh ra từ trang JSP, nên biến đặt ở đây là biến mức lớp và phương thức đặt ở đây nằm ngoài phương thức phục vụ; chính vì vậy chúng tồn tại qua nhiều yêu cầu và dùng chung cho mọi người dùng, khác với đoạn mã nhúng thường rơi vào thân phương thức phục vụ và chỉ là biến cục bộ. "<var> " không phải thẻ của JSP, trình dịch trang coi nó là thẻ lạ và gửi nguyên văn ra cho trình duyệt. "<declare> " cũng không tồn tại trong JSP, không có thư viện chuẩn nào định nghĩa thẻ này nên nó không khai báo được gì. "<scriptlet> " không phải cú pháp hợp lệ; dạng tài liệu XML của đoạn mã nhúng có tên thuộc không gian jsp, và dù viết đúng thì mã trong đoạn nhúng vẫn nằm trong thân phương thức phục vụ nên không tạo được thành viên của lớp.
var="x" value="10" /> <c:set var="y" value="5" /> ${
x + y
}What is the incorrect output produced by the JSP page above?
public class ShowParamsServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext ctx = getServletContext();
PrintWriter out = response.getWriter();
Enumeration<String> paramNames = ctx.getInitParameterNames();
while(paramNames.hasMoreElements()) {
String name = paramNames.nextElement();
out.println(name + ": " + ctx.getInitParameter(name));
}
}
}If web.xml has the following entries:
<context-param>
<param-name>settingOne</param-name>
<param-value>foo</param-value>
</context-param>
<context-param>
<param-name>settingTwo</param-name>
<param-value>bar</param-value></context-param> What will the servlet output?
Đáp án đúng: "settingOne: foo
settingTwo: bar". Vòng lặp đi qua Enumeration do ctx.getInitParameterNames() trả về, và mỗi lần lặp out.println() in ra chuỗi được nối từ name, dấu hai chấm kèm khoảng trắng, rồi ctx.getInitParameter(name); vì vậy mỗi dòng mang cả tên tham số lẫn giá trị của nó, lần lượt theo thứ tự hai phần tử context-param được khai trong web.xml. Lưu ý getInitParameter() ở đây gọi trên ServletContext nên đọc tham số dùng chung cho toàn ứng dụng, khác với tham số riêng của từng servlet. Lựa chọn "foo
bar" bỏ mất phần name và dấu hai chấm mà biểu thức nối chuỗi luôn in kèm. Lựa chọn "settingTwo: bar
settingOne: foo" đảo thứ tự so với thứ tự khai trong tệp cấu hình mà vòng lặp đi theo. Lựa chọn "settingOne
settingTwo" chỉ in tên, tức là kết quả của việc in name mà không gọi getInitParameter().
doPost(HttpServletRequest request, HttpServletResponse response)doPut(HttpServletRequest request, HttpServletResponse response)doGet(HttpServletRequest request, HttpServletResponse response)doDelete(HttpServletRequest request, HttpServletResponse response)