Câu hỏi: PRJ301 Phát triển ứng dụng Java web – Bộ ôn tập cuối kỳ số 2
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 đề. Trang 2/3 — câu 21–40.
Danh sách câu hỏi
HttpSession session = request.getSession();
session.setAttribute("username", "HuyNM");Which of the following is incorrect?
public class CookieExampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO: Your code here
}
}Đáp án đúng: "Cookie newCookie =
new Cookie("username", "john_doe");
response.addCookie(newCookie);". Cookie là một đối tượng được dựng bằng hàm khởi tạo hai tham số tên và giá trị, rồi phải nhờ phản hồi mang ra ngoài: addCookie thêm một dòng tiêu đề Set-Cookie vào phần đầu của phản hồi, vì vậy lệnh này phải chạy trước khi nội dung phản hồi được gửi đi. Lựa chọn dùng "response.setCookie("username", "john_doe"); " sai vì HttpServletResponse không có phương thức setCookie; nó chỉ nhận một đối tượng Cookie đã tạo qua addCookie. Lựa chọn dùng "request.createCookie("username", "john_doe"); " sai vì request là luồng dữ liệu đi vào, nó chỉ có getCookies để đọc cookie client gửi lên, và "response.sendCookie(); " cũng không tồn tại trong API. Lựa chọn dùng "Cookie.create("username", "john_doe"); " sai vì lớp Cookie không cung cấp phương thức tĩnh nào tên create, và "response.writeCookie(); " cũng là tên tự đặt: tên đúng duy nhất để đính cookie vào phản hồi là addCookie.
context.setAttribute("key", value);request.setAttribute("key", value);session.setAttribute("key", value);response.setAttribute("key", value);Đáp án đúng: "context.setAttribute("key", value); ". ServletContext là vùng dữ liệu dùng chung cho toàn ứng dụng: lấy nó bằng getServletContext() rồi ghi bằng setAttribute, giá trị đó mọi servlet và mọi người dùng đều đọc được và sống tới khi ứng dụng bị dỡ. "request.setAttribute("key", value); " sai vì phạm vi request chỉ sống trong một lần xử lý yêu cầu, hết lượt forward là mất, không dùng để chia sẻ toàn ứng dụng. "session.setAttribute("key", value); " sai vì dữ liệu khi đó chỉ thuộc về một người dùng và biến mất khi phiên hết thời gian chờ hoặc bị invalidate. "response.setAttribute("key", value); " sai vì HttpServletResponse không có phương thức setAttribute; phản hồi chỉ dùng để đặt tiêu đề, mã trạng thái và ghi nội dung trả về.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
System.out.println( new Date());
chain.doFilter(request, response);
}And in the web.xml:
<filter>
<filter-name>LoggingFilter</filter-name>
<filter-class>LoggingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoggingFilter</filter-name>
<url-pattern>/*</url-pattern></filter-mapping> Assuming that the client sends a request to open the index.jsp page, arrange the following steps correctly to describe the processing inside server. 1: the LoggingFilter intercepts the request to display current date 2: the server compiles and processes the JSP file to generates an HTML response. 3: The final HTML content from index.jsp is sent back to the client's browser. 4: the request continues to index.jsp 5: the HTML response from index.jsp is sent back to the LoggingFilter.
class: ${
emp.tel
}Which of the following statements accurately describes the requirements for accessing and displaying the tel field using this EL expression?
Đáp án đúng: "${bookList["2"].title}". Toán tử ngoặc vuông là cách truy cập dùng được cho cả danh sách và Map: EL lấy giá trị trong ngoặc làm khoá rồi ép về kiểu chỉ số khi đối tượng đích là List hoặc mảng, nên chuỗi hai được ép thành số hai; phần tử trả về là một Map, vì vậy dấu chấm đứng sau được hiểu là tra khoá title trong Map đó chứ không phải gọi getter. "${bookList[12].title}" sai vì nó trỏ tới phần tử thứ mười ba, lệch hẳn vị trí được hỏi và thường gây lỗi vượt biên. "${
bookList.get(2).title
}
" saivì đó là cách viết lời gọi phương thức kiểu Java, không phải cú pháp truy cập phần tử theo chỉ số mà câu hỏi đang nhắm tới. "${bookList.title[2]}" sai vì nó đi tìm thuộc tính title trên chính danh sách rồi mới lấy chỉ số, tức đảo ngược thứ tự hai chặng truy cập. "${bookList[2].title}" viết chỉ số bằng số nguyên trực tiếp nên chỉ là biến thể trùng nghĩa, không mang điểm kiến thức được kiểm tra là việc ngoặc vuông nhận một khoá rồi tự ép kiểu theo đối tượng đích.
HttpSessionListenerServletRequestListenerServletContextListenerServletResponseListenervar="myUrl" scope="page"> <c:param name="type" value="book" /> <c:param name="id" value="123" /> </c:url> ${
myUrl
}