Danh sách câu hỏi của đề

Câu hỏi: PRJ301 Phát triển ứng dụng Java web – Bộ ôn tập thi lại số 1

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 3/3 — câu 41–50.

Danh sách câu hỏi

50/50 câuHết danh sách
A<fmt:setLocale>
B<fmt:setTimeZone>
C<fmt:formatDate>
D<fmt:message>
Lời giải
Đáp án đúng: "<fmt:setLocale>". Thẻ này đặt locale cho phần còn lại của trang, nên mọi thẻ định dạng hay phân tích chuỗi đứng sau nó sẽ lấy locale đã đặt làm cơ sở thay vì dựa vào thông tin ngôn ngữ do trình duyệt gửi lên. Lựa chọn "<fmt:setTimeZone>" cũng là thẻ thiết lập bối cảnh nhưng đặt múi giờ dùng khi hiển thị thời gian, nó không đổi quy ước ngôn ngữ, cách viết số hay thứ tự ngày tháng. Lựa chọn "<fmt:formatDate>" là thẻ tiêu thụ chứ không phải thẻ thiết lập: nó xuất một đối tượng ngày thành chuỗi theo khuôn và theo locale đang hiệu lực. Lựa chọn "<fmt:message>" tra một chuỗi trong tập tài nguyên theo khoá; nó chịu ảnh hưởng của locale đã đặt chứ không phải chỗ để đặt locale.
Mở trang câu hỏi này →
A<fmt:parseDate> turns a date into text, and <fmt:formatDate> turns text into a date
B<fmt:parseDate> turns text into a date, and <fmt:formatDate> turns a date into text.
CThey do the same thing.
D<fmt:parseDate> is for calculations, and <fmt:formatDate> is for showing dates.
Lời giải
Đáp án đúng: "<fmt:parseDate> turns text into a date, and <fmt:formatDate> turns a date into text.". Hai thẻ này ngược chiều nhau đúng theo nghĩa của từ: phân tích là đọc chuỗi do người dùng hay cơ sở dữ liệu đưa vào rồi dựng thành đối tượng ngày để so sánh và tính toán, còn định dạng là lấy đối tượng ngày đem xuất ra chuỗi cho người đọc. Lựa chọn "<fmt:parseDate> turns a date into text, and <fmt:formatDate> turns text into a date" đảo đúng hai vai đó nên cả hai vế đều sai. Lựa chọn "They do the same thing." sai vì đầu vào và đầu ra của hai thẻ khác hẳn nhau, một thẻ cần khuôn để hiểu chuỗi đầu vào, thẻ kia cần khuôn để sinh chuỗi đầu ra. Lựa chọn "<fmt:parseDate> is for calculations, and <fmt:formatDate> is for showing dates." đúng một nửa ở vế sau, nhưng thẻ phân tích không tự làm phép tính nào, nó chỉ chuyển chuỗi thành kiểu ngày để mã khác tính được.
Mở trang câu hỏi này →
A`web.xml`
B`index.html`
C`taglib.tld`
D`deployment.descriptor`
Lời giải
Đáp án đúng: "`taglib.tld`". Tệp mô tả thư viện thẻ đặt trong WEB-INF là nơi mỗi thẻ tuỳ biến được khai báo bằng một khối gồm tên thẻ, lớp xử lý thẻ, kiểu thân thẻ và danh sách thuộc tính; nhờ khối đó container biết gặp tên thẻ nào thì nạp lớp handler nào. Lựa chọn "`web.xml`" là mô tả triển khai của ứng dụng, nó chỉ có thể khai một khối thư viện thẻ để nối một uri với đường dẫn tới tệp mô tả thư viện, còn việc ánh xạ từng thẻ sang lớp vẫn nằm trong tệp mô tả đó. Lựa chọn "`index.html`" là trang nội dung tĩnh gửi cho trình duyệt, không phải tệp cấu hình nào. Lựa chọn "`deployment.descriptor`" không phải tên tệp có thật trong ứng dụng web; cụm mô tả triển khai là tên gọi chung cho loại tệp cấu hình đó, không phải một tệp mang đuôi như vậy.
Mở trang câu hỏi này →
AIt is used to create complex tags with body content.
BIt simplifies custom tag creation by providing a simple handle to tag processing.
CIt handles HTTP requests and responses for the tag.
DIt manages the lifecycle of JSP pages.
Lời giải
Đáp án đúng: "It simplifies custom tag creation by providing a simple handle to tag processing.". Mô hình này thu gọn vòng đời thẻ về một phương thức doTag duy nhất: container tạo mới thể hiện handler cho mỗi lần dùng thẻ, truyền sẵn bối cảnh trang và thân thẻ dưới dạng một đoạn JSP gọi lại được, nên người viết thẻ không phải trả về các hằng số điều khiển như trong mô hình cổ điển. Lựa chọn "It is used to create complex tags with body content." mô tả hướng của giao diện và lớp hỗ trợ thân thẻ cũ, vốn cho phép đệm rồi xử lý đi xử lý lại thân; mô hình đơn giản vẫn gọi được thân thẻ nhưng điểm nhấn của nó là giảm việc, không phải phục vụ ca phức tạp. Lựa chọn "It handles HTTP requests and responses for the tag." nhầm vai sang servlet, vì thẻ chỉ ghi nội dung ra luồng xuất của trang. Lựa chọn "It manages the lifecycle of JSP pages." cũng nhầm vai: vòng đời trang do container quản, giao diện thẻ chỉ chi phối vòng đời của chính thể hiện thẻ.
Mở trang câu hỏi này →
ATo provide metadata about custom tags.
BTo define the tag handlers for custom tags.
CTo specify the tag's attributes and their types.
DTo declare the location of the JSP file that uses the tag.
Lời giải
Đáp án đúng: "To provide metadata about custom tags.". Phần mô tả trong tệp TLD là siêu dữ liệu dành cho người đọc và cho công cụ: nó giải thích thẻ dùng để làm gì, hiện ra trong gợi ý của trình soạn mã hay tài liệu sinh tự động, và xoá nó đi thì thẻ vẫn chạy y nguyên vì container không dựa vào mô tả để xử lý thẻ. Lựa chọn "To define the tag handlers for custom tags." là việc của khối khai lớp xử lý thẻ trong cùng tệp, chứ không phải của phần mô tả. Lựa chọn "To specify the tag's attributes and their types." là việc của các khối thuộc tính, mỗi khối nêu tên, kiểu dữ liệu và việc thuộc tính có bắt buộc hay nhận giá trị động hay không. Lựa chọn "To declare the location of the JSP file that uses the tag." đi ngược chiều phụ thuộc: trang JSP khai báo thư viện thẻ mà nó muốn dùng, còn tệp mô tả thư viện không biết và không cần biết trang nào dùng thẻ.
Mở trang câu hỏi này →
ATagSupport
BSimpleTagSupport
CBodyTagSupport
DCustomTagSupport
Lời giải
Đáp án đúng: "SimpleTagSupport". Lớp này cài sẵn giao diện thẻ đơn giản và lo hết phần việc lặp lại, nên viết một thẻ tuỳ biến chỉ còn là kế thừa nó rồi ghi đè doTag, dùng bối cảnh trang có sẵn để ghi ra luồng xuất và lấy thân thẻ qua phương thức trả về đoạn thân. Lựa chọn "TagSupport" thuộc mô hình thẻ cổ điển: phải ghi đè doStartTag cùng doEndTag rồi trả về các hằng số điều khiển để bảo container bỏ qua hay xử lý thân thẻ, nhiều việc hơn hẳn. Lựa chọn "BodyTagSupport" còn nặng hơn vì thêm phần đệm và xử lý lại thân thẻ, chỉ cần khi thẻ phải đọc hoặc lặp nội dung bên trong nhiều lần. Lựa chọn "CustomTagSupport" không có trong thư viện của JSP, đây là tên nghe hợp lý nhưng không tồn tại nên không thể kế thừa.
Mở trang câu hỏi này →
47What is NOT the use of filter in JSP?5 lựa chọn
AAuthentication blocking request based on user identity.
BLogging and auditing - Tracking uses of a web application.
CImage Conversion - Scaling maps and so on.
DLink to my bootstrap.min.css in a JSP file
EData Compression - Making downloads smaller
Lời giải
Đáp án đúng: "Link to my bootstrap.min.css in a JSP file". Nhúng một tệp CSS vào trang là việc của thẻ liên kết trong phần đầu của HTML do trang JSP sinh ra, rồi trình duyệt tự tải tệp đó bằng một request riêng; không bước nào trong chuỗi filter tham gia việc khai báo liên kết ấy. Lựa chọn "Authentication blocking request based on user identity." lại đúng là việc filter hay làm nhất, vì doFilter kiểm tra phiên rồi quyết định gọi tiếp chuỗi hay chuyển hướng về trang đăng nhập. Lựa chọn "Logging and auditing - Tracking uses of a web application." cũng khả thi vì mã trong filter chạy cả trước và sau tài nguyên đích nên ghi lại được đường dẫn, thời gian và kết quả. Lựa chọn "Image Conversion - Scaling maps and so on." là ví dụ kinh điển của filter biến đổi nội dung trả về. Lựa chọn "Data Compression - Making downloads smaller" cũng là filter bọc phần trả về để nén dữ liệu.
Mở trang câu hỏi này →
AMyWebPro.xml MyWebPro
Bweb.xml in MyWebPro
CMyWebPro.xml in MyWebPro /WEB-INF
Dweb.xml in MyWebPro /WEB-INF
Lời giải
Đáp án đúng: "web.xml in MyWebPro /WEB-INF". Mô tả triển khai của một ứng dụng web luôn mang đúng tên web.xml và phải nằm trong thư mục WEB-INF của ứng dụng đó, ở đây là thư mục MyWebPro; container chỉ đọc đúng vị trí ấy, và WEB-INF còn được bảo vệ nên trình duyệt không tải trực tiếp được tệp cấu hình. Lựa chọn "MyWebPro.xml MyWebPro" sai cả tên tệp lẫn chỗ đặt, vì tên thư mục ứng dụng không trở thành tên tệp cấu hình. Lựa chọn "web.xml in MyWebPro" đúng tên nhưng đặt ngay ở gốc ứng dụng; ở đó container không nạp nó như mô tả triển khai và tệp lại phơi ra cho người ngoài tải. Lựa chọn "MyWebPro.xml in MyWebPro /WEB-INF" đặt đúng thư mục nhưng sai tên: đổi tên tệp đi thì nó không còn được nhận là mô tả triển khai nữa.
Mở trang câu hỏi này →
ATo initialize the filter.
BTo define the filter's URL mapping.
CTo perform the actual filtering of requests and responses.
DTo destroy the filter.
Lời giải
Đáp án đúng: "To perform the actual filtering of requests and responses.". Phương thức doFilter là chỗ duy nhất trong vòng đời filter thực sự nằm trên đường đi của request: nó nhận cả request và phần trả về, được phép xem và sửa chúng, rồi gọi chuỗi để chuyển cho filter kế tiếp hoặc tài nguyên đích, và phần mã viết sau lời gọi đó chạy trên đường về nên xử lý được cả nội dung trả về. Lựa chọn "To initialize the filter." là việc của init, chạy một lần khi container tạo filter và nhận cấu hình để đọc tham số khởi tạo. Lựa chọn "To define the filter's URL mapping." không phải việc của mã trong doFilter mà do khối ánh xạ filter trong mô tả triển khai hoặc thuộc tính của annotation filter quyết định. Lựa chọn "To destroy the filter." là việc của destroy, chạy một lần khi ứng dụng dừng để giải phóng tài nguyên.
Mở trang câu hỏi này →
ATo define the structure of HTML pages.
BTo handle HTTP requests and responses.
CTo map a servlet to a URL pattern, specifying the URL at which the servlet will respond.
DTo configure and define filters that can intercept requests and responses in the web application.
ENone of the others
Lời giải
Đáp án đúng: "To configure and define filters that can intercept requests and responses in the web application.". Khối filter trong mô tả triển khai khai báo một filter: tên dùng để tham chiếu, lớp cài giao diện Filter, kèm các tham số khởi tạo; nhờ đó container biết nạp lớp nào, rồi khối ánh xạ filter mới nối tên ấy với mẫu URL hay với tên servlet. Lựa chọn "To define the structure of HTML pages." nhầm sang phần hiển thị, mô tả triển khai không chứa bố cục trang. Lựa chọn "To handle HTTP requests and responses." mô tả việc của mã lúc chạy, còn mô tả triển khai chỉ là khai báo cấu hình chứ không tự xử lý request nào. Lựa chọn "To map a servlet to a URL pattern, specifying the URL at which the servlet will respond." là việc của khối ánh xạ servlet; với filter thì phần ánh xạ cũng tách sang khối riêng chứ không nằm trong khối khai báo này. Lựa chọn "None of the others" không dùng được vì đã có một mô tả đúng trong danh sách.
Mở trang câu hỏi này →