Các chuẩn quản trị mạng
Trang 1Câu 1 Web Server là gì? Bỏ
Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữ thông tin như một ngân hàng dữ liệu, chứa những website đã được thiết kế cùng với những thông tin liên quan khác (các mã Script, các chương trình, và các file Multimedia) Bất
kỳ một máy tính nào cũng có thể trở thành một Web Server bởi việc cài đặt lên nó một chương trình phần mềm Server Software và sau đó kết nối vào Internet
Ví du: Apache HTTP Server
Vai trò Web Server:
- Cung cấp nội dung HTML về browser
- Lưu trữ, phục vụ yêu cầu truy xuất đến các trang Web thông qua các giao thức
- Xử lý yêu cầu của trình duyệt gửi tới
- Khi một người sử dụng tại một địa chỉ IP yêu cầu một file, Web server cố tìm file
đó và gửi lại cho người sử dụng file yêu cầu có thể là mã HTML, ảnh GIF, file AVI
- Web server trả trang yêu cầu không quan tâm trang đó là gì và nội dung của nó ra sao Nếu có lỗi cú pháp, các lỗi này sẽ được trả về
- Một vài Web server hỗ trợ các đặc điểm cao cấp là xử lý các trang Web
Câu 2.Web browser là gì? Bỏ
- Phần mềm hiển thị nội dung các trang Web, được viết bằng html,gởi yêu cầu lên webserver để lấy một trang HTML về
- Có rất nhiều trình duyệt web khác nhau như Internet Explorer, Mozila Firefox, Opera, Netscape…
- Mỗi phần mềm trình duyệt đều có các phiên bản khác nhau, phiên bản mới nhất là phiên bản có nhiều tính năng hơn các phiên bản trước đó
Vai trò của nó
- Trình duyệt web dùng để giao tiếp với web server qua giao thức HTTP
- cho phép người sử dụng truy cập và xem các tài liệu HTML
Trang 2Câu 3.Phân biệt GET và POST
Dữ liệu gửi lên server là một phần trong URL,chưa an toàn
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ó nhiều chức năng: nhận, lưu trữ, sửa đổi,bổ sung vào
cơ sở dữ liệu
Có Cacheable=>thực thi nhanh hơn POST
Ứng với cùng 1 yêu cầu đó webbrowser sẽ xem trong cached có kết quả tương ứng với yêu cầu đó ko và trả về ngay không cần phải thực thi các yêu cầu đó ở phía server
Dữ liệu không gắn vào URL nên không hiển thị trên URL.Bảo mật hơn ,an tòan hơn
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
Tốt nhất sử dụng cho việc nhận
dữ liệu
Không cacheable
server luôn thực thi và trả về kết quả cho client
Trang 3Liệt kê những chức năng servlet container cung cấp
- 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.Không lo việc quản lí tài nguyên
- 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
- Khai báo an tòan: Có thể quản lí , thay đổi độ an tòan mà không bị ảnh huởng
và biên dịch lại mã mã nguồn java.
- Hỗ tợ JSP: chuyển mã JSP sang mã java
Mỗi Web application phải bao gồm một thư mục WEB-INF:
web.xml: file cấu hình Thư mục classes Thư mục lib
Trang 4Câu 5 Hãy trình bày chu kỳ sống của một servlet.
Hoạt động của các servlet được kiểm soát bởi server
Server nạp và khởi tạo một servlet
.Tạo một thread để thực thi servlet
public void init()
Được gọi thực thi 1 lần duy nhất khi khởi tạo servlet (lần đầu tiên khi nạp vào bộ nhớ)
Dùng để khởi tạo trạng thái, mở file, thiết lập kết nối CSDL, …
Servlet có thể xử lý nhiều yêu cầu đồng thời
public void service()
Được gọi thực thi để phục vụ các yêu cầu của client, Nó có thể không gọi, gọi một lần hay nhiều lần cho đến khi servlet được ngưng tải Nhiều thread (mỗi yêu cầu) có thể thực thi phương thức này song song, vì thế nó trở nên an toàn
Server kết thúc hoạt động của một servlet
public void destroy()
Được gọi thực thi 1 lần duy nhất để hủy một servlet
Giải phóng tài nguyên (khi stop web server)
Trang 5Câ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 MyJBước 1: Web Container đọc file web.xml của ứng dụng và chờ request của client
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=” ”%>
Mang 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= ” ” />
Web
Browser
Web
Browser
Web Server
JSP
Servle t
Servle
Java Application/
Web Service
Java Application/
Web Service
Trang 6Mang 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:
- 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 layer
- Cấu trúc chương trình là một class
Trang 7Tươ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 :
Trang 8Cookies Session
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 9BỏCâu 10 :Hãy trình bày hiểu biết của anh chị về J2EE/JavaEE Server (J2EE/JavaEE server là gì? Kiến trúc ? Vai trò của từng thành phần?)
Java EE (gọi tắt là J2EE) là một nền lập trình dành cho việc phát triển ứng
dụng phân tán kiến trúc đa tầng, chủ yếu dựa vào các thành phần môđun chạy trên các máy chủ ứng dụng
Mô hình kiến trúc đa tầng :
Vai trò của các thành phần trong JavaEE :
Java Application – component này là 1 chương trình standalone chạy bên trong
Application Client container Application Client container cung cấp những API hỗ trợ cho messaging, remote invocation, database connectivity và lookup service
Application Client container đòi hỏi những API sau: J2SE, JMS, JNDI, RIM-IIOP và JDBC Container này được cung cấp bởi nhà cung cấp application server
• Applet – Applet component là java applet chạy bên trong Applet container, chính
là web browser có hỗ trợ công nghệ Java Applet phải hỗ trợ J2SE API
• Servlet và JSP – đây là Web-based component chạy ở bên trong Web container,
được hỗ trợ bởi Web Server Web container là một môi trường run-time cho servlet
và jsp Web Container phải hỗ trợ những API sau: J2SE, JMS, JNDI, JTA, JavaMail, JAF, RIM-IIOP và JDBC Serlet và JSP cung cấp một cơ chế cho việc chuẩn bị, xử
lý, định dạng nội dung động
• Enterprise JavaBean (EJB) – EJB component là business component chạy bên
trong EJB container EJB component là phần nhân, cốt lõi của ứng dụng J2EE EJB container cung cấp các dịch vự quản lý transaction, bảo mật, quản lý trạng thái,
quay vòng tài nguyên (resource pooling) EJB container phải hỗ trợ những API sau: J2SE, JMS, JNDI, JTA, JavaMail, JAF, RIM-IIOP và JDBC
Câ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
Trang 10Phổ 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
- sai Sự thể hiện chậm chạp được cục bộ hoá
- 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)
Trang 11thườ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 thu gọn lại
Java Bean là gì ?
- Java Beans là các thành phần có thể sử dụng lại
- Dùng để tách biệt business logic và presentation logic
- Bean thường được tạo ra trong quá trình xử lý business để lưu dữ liệu và được chuyển cho lớp xử lý trình bày để hiển thị dữ liệu
- Bean = instance của một class
Cấu trúc của Bean:
- Java Bean là một class trong Java được thiết kế theo một số nguyên tắc:
+ Mỗi thuộc tính trong Bean đều phải có phương thức set/get hoặc chỉ set hoặc chỉ get
+ Tên phương thức set/get trong Bean phải đặt theo mẫu:
set<Tên-thuộc-tính>(<parameters>) get<Tên-thuộc-tính>()/is<Tên-thuộc-tính>()
Ví dụ: thuộc tính là name có phương thức tương ứng là getName()
Tên thuộc tính bắt buộc chỉ hoa viết ký tự đầu tiên
+ Phải cài đặt phương thức khởi tạo mặc định
Bean scope:
- page: chỉ tồn tại trong trang đang xử lý
- request: tồn tại theo request, được gắn theo request
- session: tồn tại trong suốt một phiên làm việc, được gắn vào vùng nhớ session
- application: tồn tại trong suốt quá trình hoạt động của một ứng dụng
Trong Java Server Page, sử dụng Java Bean đem đến một số lợi điểm như sau:
Trang 12- Không còn các cú pháp Java, tách biệt hẳn phần xử lý logic với phần trình bày giao diện Từ đây ta có thể có một nhóm phát triển ứng dụng web gồm
2 nhóm nhỏ: lập trình Java và thiết kế web
- Việc chia sẻ đối tượng (object) đơn giản hơn Ta sẽ dễ dàng chia sẻ các đối tượng giữa nhiều trang jsp hoặc giữa các request hơn
- Sự thuận tiện trong truy xuất các request parameter Java Bean đơn giản tối đa quá trình đọc các request parameter, chuyển chúng từ kiểu chuổi sang kiểu dữ liệu thích hợp rồi chuyển thành thuộc tính tương ứng trong đối tượng
Để sử dụng Java Bean trong JSP ta dùng một trong 2 khai báo sau:
Khai báo sử dụng một bean có tên là object-name, class của bean này là gì Nếu như không tồn tại một bean nào có id và scope tương tự như khai báo, thì bean sẽ được tạo mới
<jsp:useBean id="object-name"
scope="page | request | session | application"
type="type-of-object"
class="fully-qualified-classname“ />
Hoặc
< jsp:useBean id="object-name"
scope="page | request | session | application"
type="type-of-object"
class="fully-qualified-classname“>
<jsp:setProperty />
</jsp:useBean>
Cách để set giá trị một thuộc tính của bean
<jsp:setProperty name="id-of-the-JavaBean"
property="name-of-property"
param="name-of-request-parameter-to-use"
value="new-value-of-this-property" />
param chính là tham số trong request dùng để lấy giá trị gán cho property
Cách lấy giá trị lưu trữ trong thuộc tính của bean
<jsp:getProperty name="id-of-the-JavaBean property="propertyName" />
Trang 13lập trình phải viết code cho các
chức năng này nếu muốn
- JavaBean chỉ để phát triển
các dịch vụ này, điểu này đơn giản hóa các thao tác phức tạp
mà người lập trình đáng lẽ phải làm
- EJB để phát triển và triển khai trên EJB container
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ụ : quá tệ
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){