Câu hỏi và trả lời ôn tập Java
Trang 1Chú thích sau khi thay đổi: bỏ Web Browser, Web Server ( Thầy nói ko ra mà cũng hên xui quá
^^), Java Bean, Enterprise Java Bean
Câu 4: apache ko phải là ứng dụng Web.
Câu 8: đúng + đầy đủ nhưng Scrip thực thi ở Server tôi ( Thangld) ko bik đó là gì, ko biết người soạn câu này lấy ở đâu ra.
Câu 10 : bỏ và Câu 14: bỏ
Câu 11: dc, có những câu dịch chuối quá như câu “ biểu hiện”
Câu 17: là câu ôn tập, khi đó tui sẽ cho so sánh 2 trong 3.
Câu 20: perfect.
Câu 3.Phân biệt GET và POST
Dữ liệu gửi lên server là một
phần trong URL
Dữ liệu có giới hạn về kích thước
Có thể sử dụng HTML Form
hoặc Hyperlink để gửi dữ liệu
đến server
Có Cacheable=>thực thi nhanh
hơn POST
yêu cầu + dữ liệu được gửi đến
một thực thể được xác định bởi
URI và nhận thông tin trả về Dữ
liệu được đính kèm vào URI
Dữ liệu không gắn vào URL nên không hiển thị trên URL
Dữ liệu gửi có kích thước không giới hạn
Dữ liệu được gửi đến server thông qua HTML Form
Không cacheable
Gửi yêu cầu + dữ liệu đến một thực thể được xác định bởi URI và nhận thông tin trả về Dữ liệu được gửi sau thông tin tiêu đề (information header)
Trang 2Câu 4.Servlet (Web) container là gì?Liệt kê những chức năng servlet container cung cấp
Servlet là các chương trình chạy trên máy server (servlet container)
Hoạt động như là lớp trung gian giữa máy client (với các yêu cầu HTTP) và CSDL hoặc các ứng dụng khác
Phát sinh các nội dung (HTML) động
Chức năng của servlet container:
- Hỗ trợ giao tiếp:Servlet cung cấp 1 cách đơn giản để cho các servlet nói chuyện với các web
server mà không cần tạo ra một ServerSocket lắng nghe ở por,tạo các stream Container hiểu giao thức ở giữa web server và nó.
- Quản lí chu kì sống của servlet :Container điểu khiển chu kì sống của servlet, load các
class,khởi tạo các đối tuợng servlet,gọi các phương thức servlet và làm cho các đối tuợng servlet dọn dẹp các dữ liệu rác.
- Hỗ trợ multithread : Container tự động tạo và quản lý các thread khi cần thiết để xử lý các
yêu cầu(request) Container có thể xử lý đồng thời nhiều request
Câu 5 Hãy trình bày chu kỳ sống của một servlet.
Chu kỳ sống tính từ khi servlet bắt đầu được hệ thống lưu tâm đến (như gọi nạp vào bộ nhớ) cho đến khi nó bị loại khỏi trình chủ Web server vì không còn cần đến nữa Quá trình sống của servlet trải qua các giai đoạn sau :
Nạp servlet: Khi có một yêu cầu triệu gọi servlet, trình chủ web server sẽ xem servlet đã nạp
vào bộ nhớ hay chưa, nếu chưa nó sẽ nạp servlet vào bộ nhớ Một khi servlet đã nạp, Web servet
sẽ tiến đến giai đoạn khởi tạo servlet
Khởi tạo servlet: Trình chủ web server khởi tạo servlet bằng cách gọi đến phương thức init()
mà servlet cài đặt
Thực thi servlet: Khi trình duyệt hoặc các trang JSP triệu gọi servlet thông qua địa chỉ URL,
trình chủ web server sẽ chính thức gọi servlet thực thi thông qua các phương thức như doGet(), doPost()
Dọn dẹp servlet: Servlet không giữ lại trong bộ nhớ vĩnh viễn, sẽ đến lúc cần loại servlet khỏi
bộ nhớ
Trang 3Câu 6 : Hãy trình bày quá trình xử lý thực thi một tập tin JSP trên web container để phục
vụ yêu cầu của client lần đầu tiên
B
ước 1 : Web Container đọc file web.xml của ứng dụng và chờ request của client
Bước 2:Client click vào link, gửi request tới Web Container Web Container dịch file MyJSP.jsp
thành file MyJSP_jsp.java
Bước 3: Web Container biên dịch file MyJSP_jsp.java thành file MyJSP_jsp.class (Servlet Bước 4: Web Container load Servlet class mới tạo ra (MyJSP_jsp.class).
Bước 5: WebContainer chạy phương thức jspInit(), Servlet class vừa tạo ở bước trên đã trở
thành một Servlet đầy đủ, sẵn sàng nhận request từ client
Bước 6: Web Container tạo một thread để phục vụ các request từ client và chạy phương thức
_jspService() Servlet được thực thi ở Server và trả kết quả về client (hoặc chuyển request đến phần khác của web app)
Câu 7 : Hãy phân biệt ý nghĩa của thẻ chỉ thị <%@include file=” ”%> và thẻ thực thi
<jsp:include page= ” ” />
<%@include file=” ”%>
Web
Browser
Web
Browser
Web Server
JSP
Servle t
Servle
Java Application/
Web Service
Java Application/
Web Service
clinet
Trang 4Mang tính chất tĩnh(Static): lấy nội dung từ một giá trị thuộc tính file vào trang hiện tại ở thời điểm biên dịch( transaction time)
<jsp:include page= ” ” />
Mang tính chất động(dynamic): lấy nội dung từ một giá trị thuộc tính page vào trang hiện tại ở thời điểm yêu cầu (request time)
Câu 8: So sánh và trình bày mối tương quan giữa JSP và servlet
Giống nhau:
Servlets and JSP là các API hỗ trợ, cung cấp phương thức tạo ra nội dung web động
Khác nhau:
Trang 5Tương quan giữa servlet và JSP:
Các trang JSP được trình chủ dịch ra thành Servlet trước khi cho thực thi nên tất cả những gì Servlet làm được cũng đồng nghĩa với JSP làm được Tuy nhiên sử dụng JSP hay Servlet hay cả hai tùy thuộc vào từng dự án và mục đích sử dụng của chương trình
Câu 9 : Hãy trình bày so sánh tương quan giữa Cookie và Session?
Hãy trình bày so sánh tương quan giữa Cookie và Session :
Giống nhau : Đều được dùng với mục đích lưu các thông tin của một đối tượng truy nhập
(người sử dụng) trong một phiên làm việc
Liên hệ giữa Session và Cookie : Mỗi Session gắn với 1 định danh (ID) ID sẽ được tạo ra trên
server khi session bắt đầu và được truyền cho browser Sau đó browser sẽ truyền lại ID này lên server mỗi khi truy cập vào website Như vậy ta có thể thấy rằng sẽ rất tiện nếu như Session ID được lưu trữ trong Cookie và được browser tự động truyền lên server mỗi khi truy cập vào website
Khác nhau :
- JSP là server script được chạy trên
nền JDK 1.3 về sau
- Hoạt động như một lớp giao diện
trung gian giữa người dùng với
server
- JSP hỗ trợ phát sinh nội dung động
vào trong một tài liệu HTML bằng
các câu lệnh Java được nhúng vào
trong một tài liệu HTML bằng các
thẻ đặc biệt
- Hướng tài liệu
- Servlet là các chương trình chạy trên máy server (servlet container)
- Hoạt động như là lớp trung gian giữa máy client (với các yêu cầu HTTP) và CSDL hoặc các ứng dụng khác
- Phát sinh nội dung động HTML động (JSP)
- Như một chương trình Java
- Trình bày dữ liệu - Xử lý nghiệp vụ
- View layer
- Cấu trúc chương trình: dùng các thẻ -- Controller layerCấu trúc chương trình là một class
Trang 6Câu 11 : Hãy trình bày hiểu biết của anh/chị về kiến trúc ứng dụng đa lớp
Kiến trúc đa tầng là một kiểu kiến trúc client-server, trong đó trình bày các ứng dụng, xử lý
và quản lý dữ liệu logic là các quá trình riêng biệt
Phổ biến rộng rãi nhất trong việc sử dụng "nhiều tầng kiến trúc" là đề cập đến ba tầng kiến trúc
- Tầng trình bày (presentation): chứa các cấu phần xử lý giao diện người dùng và tương
tác với người dùng Chẳng hạn như một tầng trình bày của một ứng dụng độc lập có thê viết trong Visual Basic Tầng trình bày của một ứng dụng Web-based có thể sử dụng Java servlet, Java Server Page, hay kết hợp với Java Applet
- Tầng logic nghiệp vụ (bussiness logic): chứa các cấu phần phối hợp với nhau đê giải
quyết các vấn đề nghiệp vụ Thông thường, các cấu phần này được viết bằng các ngôn ngữ type-safe như Java hay C++
- Tầng dữ liệu (data): được sử dụng bởi tầng logic nghiệp vụ để lưu trữ các trạng thái
bền vững Tầng này thường là một hay nhiều database
Đặc điểm :
- Chi phí chuyển đổi CSDL thấp
- Chi phí nâng cấp logic dữ liệu thấp: không phải biên dịch lại client
- Có thể bảo mật từng phần của triển khai với các firewall
- Các tài nguyên có thể được pool và re-used
- Mỗi tầng có thể thay đổi độc lập
- Các lỗi được cục bộ hoá: chẳng hạn như nếu application server hỏng thì web server có thể báo cho người dùng là “site down”
- Chi phí giao tiếp cao giữa các tầng
- Chi phí bảo trì cao
Câu 12 : Hãy trình bày hiểu biết của anh/chị về mô hình MVC (Kiến trúc? Vai trò của từng thành phần trong mô hình)
Cookie sẽ được lưu trữ tại browser, do
browser quản lý và browser sẽ tự động
truyền cookie ngược lên server mỗi khi
truy cập vào 1 trang web trên server
Dữ liệu lưu trữ trong Session sẽ được ứng dụng quản lý, trong ngữ cảnh web, ứng dụng ở đây sẽ là website và webserver Browser chỉ truyền ID của session lên server mỗi khi truy cập vào website trên server
Cookies không phải là một đối tượng
riêng biệt mà thuộc đối tượng
Response
Session là một đối tượng riêng biệt thuộc lớp
javax.serverlet.http.HttpSession
Trang 7Nó được dùng để tách riêng một ứng dụng vào lớp riêng chạy trên các máy tính khác nhau: trình bày / giao diện người dùng (UI) (View), kiểm soát xử lí yêu cầu(Controller), và truy cập
dữ liệu (Model)
MVC là thường thấy trong các ứng dụng web, nơi mà the view là trang mã HTML hoặc XHTML, và the controller là mã dữ liệu động và tạo ra nội dung động bên trong HTML hay XHTML Cuối cùng, the model được thể hiện bằng nội dung thực, mà thường được lưu giữ trong một cơ sở dữ liệu hoặc trong XML nodes, và các luật kinh doanh chuyển đổi nội dung dựa trên hoạt động người sử dụng
Vai trò của từng thành phần trong mô hình
Model: Business Logic Layer
- Thực hiện các truy vấn CSDL
- Thực hiện các thao tác nghiệp vụ / tính toán
View: Presentation Layer
- Trình bày dữ liệu của một model
Controller: Control Layer
- Tiếp nhận yêu cầu từ người dùng và quyết định cơ chế xử lý yêu cầu đó
- Kết nối yêu cầu của người dùng với thao tác nghiệp vụ tương ứng
- Lựa chọn cơ chế trình bày kết quả (view)
Câu 13 :Hãy trình bày hiểu biết của anh/chị về JavaBean
Đối với các nhà phát triển Java, và tác giả nghiệp dư applet, JavaBeans cung cấp khả năng viết các ứng dụng nhanh chóng và dễ dàng, bằng cách sử dụng một bảng các thành phần có thể được lien kết để tạo thành một ứng dụng lớn hơn các thành phần Giao diện người dùng, chẳng hạn như cây, danh sách, hoặc đồ họa nút có thể làm cho các ứng dụng trở nên sống động, mà không cần viết các thành phần tùy chỉnh cho mỗi và mọi ứng dụng các giao thức mạng có thể được gói gọn trong thành phần một, cho phép các nhà phát triển chỉ đơn giản nhúng vào trong email và hỗ trợ web vào các ứng dụng của họ Nghĩa là bất cứ thành phần bạn có thể tưởng tượng có thể được viết như là một JavaBean, và sau đó cắm vào một ứng dụng
Tính năng
JavaBeans hỗ trợ tính năng cho phép một ứng dụng đọc và sửa đổi các giá trị của họ
JavaBeans hỗ trợ các sự kiện, cho phép các nhà cung cấp để tạo ra các sự kiện độc đáo của riêng mình
JavaBeans hỗ trợ giao diện BeanInfo, cho phép các nhà cung cấp để xác định chính xác ứng dụng và phương pháp có sẵn, và biểu tượng cho loại beans có thể được hiển thị trên thanh công cụ
Trang 8 JavaBeans là cấu hình cao, và các trạng thái của bean có thể được lưu và khôi phục thông qua đăng ký
Câu 15 : Phân biệt cơ chế (phương thức) forward() và include() trong quá trình phân phối yêu cầu (sử dụng RequestDispatcher) Cho ví dụ minh họa về cách lập trình
forward()
- Để chuyển hoàn toàn điều khiển đến
trang đích
- Có IlltergalstaleException
- Trước khi forward không được xử lý gì
về nội dung(nghĩa là không được print()
bất kì cái gì ra màn hình)
- Servlet cuối cùng mới được xử lý nội
dung
include()
- Để nhận kết quả trả về từ trang đích và tiếp tục xử lý
- Không có IlltergalstaleException
- Trước hay sau khi include đaều được xử
lý nội dung
- Có thể xử lý ở bất kì servlet nào
Ví dụ :
foward()
public class RequestBinder extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response){
//bind an object to the servlet context
ContextObject contextObj = new ContextObject();
contextObj.put( request.getRemoteAddr(), ""+new java.util.Date());
request.setAttribute(
"com.jspservletcookbook.RequestObject",contextObj );
//better display something
RequestDispatcher dispatcher = request.getRequestDispatcher("/displayAttr");
dispatcher.forward(request,response);
}
}
Include()
public class MultipleInc extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response){
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("This text is displayed at Level 1.");
RequestDispatcher dispatcher = request.getRequestDispatcher("/level2");
Trang 9REDIRECT REQUEST DISPATCH
- Redirect gửi tín hiệu yêu cầu trình
duyệt truy cập một url khác để hoàn
thành tác vụ
- Người dùng thấy sự thay đổi URL
trên trình duyệt khi thực hiện tác vụ
- Request dis phân phối yêu cầu đến một số đối tượng trên server (servlet, jsp) để hoàn thành tác vụ
- Người dùng không thấy sự thay đổi URL trên trình duyệt và không biết server làm gì
Câu 17 Phân biệt các phạm vi lưu trữ (scope) JavaBean: REQUEST, SESSION, APPLICATION Cho ví dụ minh họa cơ chế lưu trữ một đối tượng JavaBean vào các vùng lưu trữ tương ứng.
Phạm vi lưu trữ (scope) JavaBean :
- Tồn tại theo request từ
phía client, được gắn theo
request
- Dữ liệu được liên kết khi
có yêu cầu, ngay cả khi
yêu cầu đó được chuyển
tiếp hay JSP được gộp
- Nó được lưu trữ trong đối
tượng Servlet Request
- Tồn tại trong suốt một phiên làm việc, được gắn
vào vùng nhớ session
- Dữ liệu được kết nối đến
1 người dùng trong suốt lần viếng thăm(web)
- Chỉ có 1 phiên làm việc cho mỗi người dùng, tồn tại cho tới khi người dùng rời khỏi trang web
- Tồn tại trong suốt quá trình hoạt động của một ứng dụng
- Dữ liệu có thể cần trên bất
cư trang nào bất cứ thời điểm nào Chỉ có 1 phạm vi ứng dụng, nó tồn tại từ thời điểm JSP Engine bắt đầu khởi động cho đến khi nó kết thúc
- Bean sẽ còn tồn tại cho đến khi ứng dụng được khôi phục lại hoặc server được khởi động lại
Request: <jsp: useBean id=”bean” class=”BeanClass” scope=”request”/>
Sesion : <jsp: useBean id=”bean” class=”BeanClass” scope=”session”/>
Application: <jsp: useBean id=”bean” class=”BeanClass” scope=”application”/>
Ví Dụ :
package mybean;
public class CounterBean {
public CounterBean() {}
public int getCount() { return count; }
public void setCount(int count) { this.count = count;}
private int count = 0;
}
Trang 10<%@page import = "mybean.CounterBean"%>
<%@ bean id="myBean" scope="request " class="mybean.CounterBean"%>
<pre>
The current counter's value is: <%=myBean.getCount()%>
<%//Increase count value
myBean.setCount(myBean.getCount() + 1);
//Next judgment myBean object scope
CounterBean obj = null;
String scope = null;
//If object is session scope
obj = (CounterBean)session.getAttribute("myBean");
if (obj != null)
scope = "session";
//If object is application scope
obj = (CounterBean)application.getAttribute("myBean");
if (obj != null)
scope = "application";
//If object scope is not session or application then must is page
if (scope == null)
scope = "request";
%>
scope=<%=scope%>
</pre>
Câu 20 Hãy trình bày qui trình hoạt động của Struts Framework
(1)
(2)
(2)
(3)
(4) (5)
(6)