Bài giảng Công nghệ Java - Bài 2, Phần 2: Servlet - Nguyễn Hữu Thế

Forward (Chuyển tiếp)

− Chuyển tiếp yêu cầu tới một trang khác (hoặc một servlet

khác).

− Địa chỉ trên trình duyệt của người dùng vẫn là đường dẫn của

trang đầu tiên, nhưng nội dung của trang do trang được chuyển

tiếp tới tạo ra.

− Trang được chuyển tiếp tới bắt buộc phải là một trang (hoặc

Servlet) nằm trong cùng ứng dụng web.

forward(ServletRequest request, ServletResponse response)

VD: RequestDispatcher rd =

request.getRequestDispatcher("pathToResource");

rd.forward(request, response);

pdf 14 trang kimcuc 9240
Bạn đang xem tài liệu "Bài giảng Công nghệ Java - Bài 2, Phần 2: Servlet - Nguyễn Hữu Thế", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ Java - Bài 2, Phần 2: Servlet - Nguyễn Hữu Thế

Bài giảng Công nghệ Java - Bài 2, Phần 2: Servlet - Nguyễn Hữu Thế
1CÔNG NGHỆ JAVA
Bài 2: Servlet
Nguyễn Hữu Thể
2Nội dung
▪ Servlet init()
▪ web.xml
▪ Annotation
▪ Forward
▪ Redirect
3Interface Servlet
Method Description
public void init(ServletConfig config)
initializes the servlet. It is the life 
cycle method of servlet and 
invoked by the web container only 
once.
public void service(ServletRequest 
request,ServletResponse response)
provides response for the incoming 
request. It is invoked at each 
request by the web container.
public void destroy()
is invoked only once and indicates 
that servlet is being destroyed.
public ServletConfig getServletConfig() returns the object of ServletConfig.
public String getServletInfo()
returns information about servlet 
such as writer, copyright, version 
etc.
4package com.javatech.tutorial.servlet;
public class InitParamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private String email;
public InitParamServlet() { }
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
// Lấy giá trị của tham số khởi tạo. Cấu hình trong web.xml.
this.email = config.getInitParameter("email1");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Lấy giá trị của tham số khởi tạo theo một cách khác.
String email2 = this.getServletConfig().getInitParameter("email2");
ServletOutputStream out = response.getOutputStream();
out.println("");
out.println("");
out.println("Init Param");
out.println("email1 = " + this.email + "");
out.println("email2 = " + email2 + "");
out.println("");
out.println("");
}
}
VD: InitParamServlet.java
+ init(): Khởi tạo giá trị cho 
email
+ doGet(): Khởi tạo giá trị cho 
email2
5
JavaTech_Servlet
initParamServlet
com.javatech.tutorial.servlet.InitParamServlet
email1
abc@example.com
email2
def@example.com
initParamServlet
/initParam
index.html
index.jsp
web.xml
Thiết lập thông tin cấu hình
6Sử dụng Annotation trong Servlet
@WebServlet
To declare a servlet.
@WebInitParam
To specify an initialization parameter. 
@WebFilter
To declare a servlet filter.
@WebListener
To declare a WebListener
7@WebServlet: VD1
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public HelloServlet() {
super();
}
protected void doGet(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, 
IOException {
PrintWriter out = response.getWriter();
out.println("Hello, Good afternoon!");
}
}
8package com.javatech.tutorial.servlet;
// Có thể cấu hình một hoặc nhiều URL pattern để truy cập vào Servlet này.
@WebServlet(urlPatterns = { "/annotationExample", "/annExample" }, initParams = {
@WebInitParam(name = "email1", value = "abc@example.com"),
@WebInitParam(name = "email2", value = "xyz@example.com") })
public class AnnotationExampleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private String email1; 
public AnnotationExampleServlet() { } 
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config); 
this.email1 = config.getInitParameter("email1");
} 
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { 
String email2 = this.getServletConfig().getInitParameter("email2"); 
ServletOutputStream out = response.getOutputStream(); 
out.println("");
out.println("");
out.println("Servlet with Annotation configuration");
out.println("emailSupport1 = " + this.email1 + "");
out.println("emailSupport2 = " + email2 + "");
out.println("");
out.println("");
}
VD2: @WebServlet, @WebInitParam
9}
VD2: @WebServlet, @WebInitParam
10
url-pattern 
− url-pattern = "/any/*"
▪ So khớp với các path phía sau từ /any/
▪ Ví dụ:
− url-pattern = /
▪ Một servlet mặc định, servlet này sẽ được sử dụng để xử 
lý các request có đường dẫn không khớp với bất kỳ một 
url-pattern nào của các Servlet khác.
▪ Ví dụ: đường dẫn không tồn tại sẽ gọi url-pattern này
11
Lấy thông tin Servlet Request
− Khi máy khách (trình duyệt) thực hiện yêu cầu GET, 
POST đối với Servlet, 
➢Đối tượng HttpServletRequest giữ thông tin có giá trị về 
máy khách và chính yêu cầu đó. 
❖Ví dụ: lấy dữ liệu khác nhau từ một đối tượng Yêu cầu 
Servlet, như tiêu đề, tham số, đường dẫn và session
12
Forward (Chuyển tiếp)
− Chuyển tiếp yêu cầu tới một trang khác (hoặc một servlet 
khác). 
− Địa chỉ trên trình duyệt của người dùng vẫn là đường dẫn của 
trang đầu tiên, nhưng nội dung của trang do trang được chuyển 
tiếp tới tạo ra. 
− Trang được chuyển tiếp tới bắt buộc phải là một trang (hoặc 
Servlet) nằm trong cùng ứng dụng web. 
forward(ServletRequest request, ServletResponse response)
VD: RequestDispatcher rd = 
request.getRequestDispatcher("pathToResource");
rd.forward(request, response);
13
Redirect (Chuyển hướng)
− Chuyển yêu cầu này tới một trang khác và kết thúc nhiệm vụ 
của nó. 
− Trang được chuyển hướng tới có thể là trang trong ứng dụng, 
hoặc có thể là một trang bất kỳ. 
− Địa chỉ trên trình duyệt của người dùng lúc này sẽ hiển thị 
đường dẫn của trang khác.
void sendRedirect(String url)
14
Forward() và SendRediret()
Forward() SendRediret()
Khi chúng tôi sử dụng phương pháp 
chuyển tiếp yêu cầu là chuyển đến tài 
nguyên khác trong cùng một máy chủ để 
tiếp tục xử lý.
Trong trường hợp yêu cầu là sendRedirect 
là chuyển hướng đến tài nguyên khác như 
tên miền khác hoặc các đường dẫn là các 
máy chủ khác nhau để xử lý.
Nhìn bề ngoài chúng ta không thể thấy địa 
chỉ chuyển tiếp như vậy sẽ bảo mật hơn.
Trong thanh địa chỉ chúng tôi có thể thấy 
địa chỉ chuyển hướng mới.
Sử dụng phương pháp chuyển 
tiếp forward() thì tốc độ chuyên tiếp đến 
trang xử lý là nhanh hơn.
SendRedirect lnó chuyển hướng chậm 
hơn bởi vì một chuyến đi vòng thêm là cần 
thiết . yêu cầu mới được tạo ra cho nên tốc 
độ xử lý sẽ chậm hơn so với forward.
Khi sử dụng forward thì chúng ta có thể 
gữi dữ liệu sang một trang được chuyển 
tiếp đến bằng cách sử 
dụng request.setAttribute ()
Nhưng khi sử dụng sendRedirect nếu 
chúng ta muốn gữi dữ liệu đi thì phải lưu 
trữ các dữ liệu trong phiên làm việc hoặc 
đi cùng với URL.

File đính kèm:

  • pdfbai_giang_cong_nghe_java_bai_2_phan_2_servlet_nguyen_huu_the.pdf