Articles by "HocServlet"
Hiển thị các bài đăng có nhãn HocServlet. Hiển thị tất cả bài đăng
no image
Servlets là một phương thức độc lập trên các nền tảng, dựa trên các thành phần để xây dựng các ứng dụng trên web, mà loại bỏ các hạn chế của các chương trình CGI. Servlets có quyền truy cập tới toàn bộ Java APIs, bao gồm JDBC API.
Java Servlets là các chương trình chạy trên một Web server hoặc một Application server và thực hiện như là một tầng trung gian giữa một Yêu cầu từ một trình duyệt web hoặc HTTP client với các Database hoặc các ứng dụng trên HTTP server.
Sử dụng Servlets, bạn có thể thu thập Input từ người sử dụng thông qua các form trên trang web, hiển thị các bản ghi (record) từ một Database hoặc từ nguồn khác, và tạo các trang web động.
Dưới đây là danh sách các bài hướng dẫn học Servlets cơ bản và nâng cao:
MỤC LỤC
  • Servlets là gì?
  • Servlets - Cài đặt môi trường
  • Servlets - Vòng đời
  • Servlets - Ví dụ
  • Servlets - Form Data
  • Servlets - Client Request
  • Servlets - Server Response
  • Servlets - Http Code
  • Servlets - Filter
  • Servlets - Exception
  • Servlets - Cookie
  • Servlets - Session Tracking
  • Servlets - Truy cập Database
  • Servlets - Upload File
  • Servlets - Date
  • Servlets - Page Redirect
  • Servlets - Hit Counter
  • Servlets - Auto Refresh
  • Servlets - Send Email
  • Servlets - Package
  • Servlets - Debug
  • Servlets - Đa ngôn ngữ
Loạt bài hướng dẫn học Java Servlets cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Servlets là gì?

Java Servlets là các chương trình chạy trên một Web server hoặc một Application server và thực hiện như là một tầng trung gian giữa một Yêu cầu từ một trình duyệt web hoặc HTTP client với các Database hoặc các ứng dụng trên HTTP server.
Sử dụng Servlets, bạn có thể thu thập Input từ người sử dụng thông qua các form trên trang web, hiển thị các bản ghi (record) từ một Database hoặc từ nguồn khác, và tạo các trang web động.
Java Servlets thường có chung mục đích: là các chương trình độc lập bởi việc sử dụng Common Gateway Interface (CGI). Nhưng so với CGI, thì Servlets có các lợi thế sau:
  • Hiệu năng tốt hơn đáng kể.
  • Servlets thực thi bên trong không gian địa chỉ của một Web server, không cần thiết phải tạo một tiến trình riêng biệt để xử lý mỗi yêu cầu từ Client.
  • Servlets là độc lập trên nền tảng bởi vì chúng được viết bằng Java.
  • Bởi vì viết bằng Java (mà Java cung cấp tình bảo mật cao trên Server) nên Servlets là đáng tin cậy.
  • Tính năng đầy đủ của thư viện của các lớp trong Java là luôn luôn có sẵn cho Servlets. Nó có thể giao tiếp với Applet, Database hoặc phần mềm khác thông qua các Socket và kỹ thuật RMI mà bạn đã từng thấy.

Cấu trúc của Servlets

Sơ đồ dưới đây minh họa cấu trúc của Servlets trong một ứng dụng web:
Cấu trúc Servlets

Nhiệm vụ của Servlets

Servlets thực hiện các tác vụ chủ yếu sau:
  • Đọc dữ liệu hiển thị (explicit) được gửi bởi Client (hoặc trình duyệt) bao gồm một HTML Form trên một trang web hoặc nó cũng có thể từ một Applet hoặc một chương trình Custom từ HTTP Client.
  • Đọc dữ liệu yêu cầu HTTP ẩn (implicit) được gửi bởi Client (hoặc trình duyệt) bao gồm cookie, các loại media.
  • Xử lý dữ liệu và cho ra kết quả. Tiến trình này có thể yêu cầu Database, đang thực thi một triệu hồi tới RMI hoặc CORBA, triệu hồi một Web Service, hoặc tính toán phản hồi một cách trực tiếp.
  • Gửi dữ liệu hiển thị (ví dụ: tài liệu) tới các Client (hoặc trình duyệt). Tài liệu này có thể được gửi theo nhiều định dạng khác nhau, gồm text (HTML hoặc XML), nhị phân (hình ảnh GIF), Excel, .v.v.
  • Gửi phản hồi HTTP ẩn tới các Client (hoặc trình duyệt), thông báo cho trình duyệt hoặc Client về kiểu của tài liệu được trả về (ví dụ: HTML), thiết lập các Cookie và Caching các tham số, cùng các tác vụ khác.

Package trong Servlets

Java Servlets là các lớp trong Java chạy bởi một Web Server mà có một trình thông dịch hỗ trợ Java Servlets.
Servlets có thể được tạo bởi sử dụng các gói javax.servlet và javax.servlet.http là một phiên bản mở rộng của thư viện lớp Java để hỗ trợ các dự án phát triển có phạm vi lớn. Các lớp này triển khai Java Servlet và JSP.
Java Servlet đã được tạo và được biên dịch giống như các lớp khác trong Java. Sau khi bạn cài đặt các gói servlet và thêm chúng vào Classpath trong máy của bạn, bạn có thể biên dịch Servlet với bộ biên dịch JDK hoặc bất kỳ bộ biên dịch nào khác.
Vòng đời của Servlet có thể được định nghĩa như là một tiến trình đầy đủ từ khi được tạo ra đến khi bị hủy. Một Servlet theo các giai đoạn sau:
  • Servlet được khởi tạo bởi gọi phương thức init().
  • Servlet gọi phương thức service() để xử lý một yêu cầu từ Client.
  • Servlet bị hủy bởi triệu hồi phương thức destroy().
  • Cuối cùng, servlet trở thành rác và được thu thập bởi Garbage Collector của JVM.
Tiếp theo chúng ta đi vào chi tiết từng phương thức trong vòng đời của Servlet:

Phương thức init()

Phương thức được thiết kế để chỉ được gọi một lần. Nó được gọi khi Servlet lần đầu được tạo, và không được gọi lại cho mỗi yêu cầu của người dùng. Vì thế, nó được sử dụng cho các khởi tạo one-time, giống như phương thức init của Applet.
Thường thì, Servlet được tạo khi một người dùng lần đầu triệu hồi một URL tương ứng với Servlet đó, nhưng bạn cũng có thể xác định rằng Servlet này được tải khi Server được khởi động lần đầu.
Khi một người sử dụng triệu hồi một Servlet, một đối tượng đơn của Servlet được tạo, với mỗi yêu cầu từ người dùng, là kết quả trong một thread mới, mà được thao tác tới doGet hoặc doPost một cách thích hợp. Phương thức init() tạo hoặc tải một vài dữ liệu mà sẽ được sử dụng qua vòng đời của Servlet đó.
Định nghĩa phương thức init() như sau:
public void init() throws ServletException {
// Initialization code...
}

Phương thức service()

Phương thức service() là phương thức chính để thực hiện tác vụ thực sự. Nơi chứa servlet (ví dụ như Web Server) gọi phương thức service() để xử lý các yêu cầu từ Client (hoặc trình duyệt) và viết phản hồi đã được định dạng trở lại Client đó.
Mỗi khi Server nhận một yêu cầu cho một Servlet, thì Server tạo một Thread mới và triệu hồi service(). Phương thức service() kiểm tra kiểu yêu cầu HTTP (Kiểu GET, POST, PUT, DELET, .v.v.) và gọi các phương thức doGet, doPost, doPut, doDelete .v.v. tương ứng một cách thích hợp.
Đây là minh họa cho phương thức service():
public void service(ServletRequest request, 
ServletResponse response)
throws ServletException, IOException{
}
Phương thức service() được gọi bởi Container và nó triệu hồi các phương thức doGet, doPost, doPut, doDelet, .v.v. tương ứng. Vì thế, bạn không phải làm gì cả với service() nhưng việc bạn ghi đè phương thức hoặc doGet() hoặc doPost tùy thuộc vào kiểu yêu cầu mà bạn nhận từ Client.
Hai phương thức doGet() và doPost() được sử dụng thường xuyên nhất với mỗi service. Sau đây là chi tiết về hai phương thức này:

Phương thức doGet()

Một yêu cầu GET, là kết quả từ một yêu cầu chuẩn cho URL hoặc từ một HTML form, mà không có PHƯƠNG THỨC nào được xác định và nó nên được xử lý bởi phương thức doGet().
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}

Phương thức doPost()

Một yêu cầu POST, là kết quả từ một HTML form mà liệt kê POST như là PHƯƠNG THỨC, và nên được xử lý bởi phương thức doPost():
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}

Phương thức destroy()

Phương thức destroy() chỉ được gọi một lần ở giai đoạn cuối trong vòng đời Servlet. Phương thức này giúp servlet của bạn một cơ hội để đóng các kết nối tới Database, dừng thread, viết các danh sách cookie hoặc viết tính toán trên đĩa, và thực hiện các hoạt động cleanup khác.
Sau khi phương thức destroy() được gọi, đối tượng servlet này được đánh dấu cho Garbage Collector. Phương thức này trông giống như sau:
  public void destroy() {
// Finalization code...
}

Sơ đồ cấu trúc vòng đời của Servlet

Sơ đồ sau miêu tả các giai đoạn trong vòng đời của một Servlet đặc trưng:
  • Đầu tiên, các HTTP Request tới Server và được đưa tới Container của Servlet.
  • Container Servlet tải các servlet trước khi gọi phương thức service().
  • Sau đó Container Servlet xử lý nhiều yêu cầu bởi việc tạo nhiều thread, mỗi thread thực thi phương thức service() cho một đối tượng servlet đơn.
Vòng đời của Servlet

Giống như bất kỳ chương trình Java nào khác, bạn cần biên dịch một servlet bởi sử dụng trình biên dịch javac của Java và sau khi biên dịch ứng dụng servlet này, nó sẽ được triển khai trong một môi trường để chạy.
Cài đặt môi trường cho Servlets bao gồm các bước sau:

Cài đặt Java Development Kit

Tại bước này, bạn tải sự triển khai của Java Software Development Kit (SDK) và cài đặt biến môi trường PATH một cách thích hợp.
Bạn có thể tải SDK từ: Java SE Downloads.
Sau khi bạn tải xong, theo các chỉ dẫn đã cho để cài đặt và định cấu hình cho nó. Cuối cùng, thiết lập các biến môi trường PATH và JAVA_HOME để tham chiếu tới thư mục mà chứa java và javac, tương ứng là java_install_dir/bin và java_install_dir.
Với Windows và cài đặt SDK trong C:\jdk1.5.0_20, bạn sẽ đặt dòng sau trong C:\autoexec.bat file của bạn.
set PATH=C:\jdk1.5.0_20\bin;%PATH%
set JAVA_HOME=C:\jdk1.5.0_20
Trên Windows NT/2000/XP, bạn cũng có thể nhấp chuột phải vào My Computer, chọn Properties, sau đó là Advanced, và Environment Variables. Sau đó, bạn cập nhật giá trị PATH và nhấn OK.
Trên Unix (Solaris, Linux, .v.v.), nếu cài đặt SDK trong /usr/local/jdk1.5.0_20, và bạn sử dụng C Shell, thì bạn đặt dòng sau vào .cshrc file của bạn.
setenv PATH /usr/local/jdk1.5.0_20/bin:$PATH
setenv JAVA_HOME
/usr/local/jdk1.5.0_20
Nếu bạn sử dụng một IDE (viết tắt của Integrated Development Environment) như Borland JBuilder, Eclipse, IntelliJ IDEA, hoặc Sun ONE Studio, thì bạn biên dịch và thực thi một chương trình đơn giản để xác nhận rằng IDE biết nơi bạn đã cài đặt Java.

Cài đặt Web Server: Tomcat

Một số Web server hỗ trợ các Servlet là có sẵn trên thị trường. Tomcat là một trong số các Web server miễn phí.
Apache Tomcat là một triển khai phần mềm Java Servlet và các công nghệ JavaServer Pages mã nguồn mở và có thể hoạt động như một Standalone Server để kiểm tra các servlet và có thể được tích hợp với Apache Web Server. Sau đây là các bước để cài đặt Tomcat trên máy của bạn:
  • Tải phiên bản mới nhất của Tomcat từ: http://tomcat.apache.org/.
  • Mở và đặt nó vào trong vị trí thích hợp. Ví dụ: trong C:\apache-tomcat-5.5.29 trên Windows, hoặc trong /usr/local/apache-tomcat-5.5.29 trên Linux/Unix và tạo biến môi trường CATALINA_HOME chỉ tới các vị trí này.
Tomcat có thể được bắt đầu bởi thực thi lệnh sau trên các thiết bị Windows:
 %CATALINA_HOME%\bin\startup.bat

or

C
:\apache-tomcat-5.5.29\bin\startup.bat
Hoặc các lệnh sau trên Unix (Solaris, Linux, .v.v.):
$CATALINA_HOME/bin/startup.sh

or

/usr/local/apache-tomcat-5.5.29/bin/startup.sh
Sau khi cài đặt, các ứng dụng web mặc định bao gồm Tomcat sẽ là có sẵn bởi http://localhost:8080/. Nếu mọi thứ là hoàn hảo, thì nó sẽ hiển thị:
Trang chủ Tomcat
Thông tin bổ sung về định hình và chạy Tomcat có thể được tìm thấy trong: http://tomcat.apache.org
Tomcat có thể bị dừng bởi thực thi các lệnh sau trên thiết bị Windows:
C:\apache-tomcat-5.5.29\bin\shutdown
Hoặc lệnh sau trên Unix (Solaris, Linux, .v.v.):
/usr/local/apache-tomcat-5.5.29/bin/shutdown.sh

Thiết lập CLASSPATH

Khi các servlet chưa là một phần của Java Platform, Standard Edition, bạn phải đồng nhất các lớp servlet tới bộ biên dịch.
Nếu bạn đang chạy trên Windows, bạn cần đặt các dòng sau vào trong C:\autoexec.bat file.
set CATALINA=C:\apache-tomcat-5.5.29
set CLASSPATH=%CATALINA%\common\lib\servlet-api.jar;%CLASSPATH%
Trên Windows NT/2000/XP, bạn cũng có thể nhấp chuột phải vào My Computer, chọn Properties, sau đó là Advanced, và Environment Variables. Sau đó, bạn cập nhật giá trị CLASSPATH và nhấn OK.
Trên Unix (Solaris, Linux, .v.v.), nếu bạn đang sử dụng C Shell, bạn đặt các dòng sau vào trong .cshrc file của bạn:
setenv CATALINA=/usr/local/apache-tomcat-5.5.29
setenv CLASSPATH $CATALINA
/common/lib/servlet-api.jar:$CLASSPATH
Chú ý: Giả sử thư mục phát triển của bạn là C:\ServletDevel (Windows) hoặc /usr/ServletDevel (Unix) thì bạn cần thêm các thư mục này trong CLASSPATH theo cách tương tự như bạn đã làm ở trên.
Servlet là các lớp Java mà phục vụ các yêu cầu HTTP và triển khai javax.servlet.Servlet interface. Các lập trình viên ứng dụng web viết các Servlet mà kế thừa javax.servlet.http.HttpServlet, một lớp abstract mà triển khai Servlet Interface và được thiết kế riêng biệt để xử lý các yêu cầu HTTP.

Code mẫu cho Hello World

Dưới đây là cấu trúc code mẫu cho một ví dụ servlet để viết Hello World:
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// Extend HttpServlet class
public class HelloWorld extends HttpServlet {

private String message;

public void init() throws ServletException
{
// Do required initialization
message
= "Hello World";
}

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// Set response content type
response
.setContentType("text/html");

// Actual logic goes here.
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}

public void destroy()
{
// do nothing.
}
}

Biên dịch một Servlet

Đặt code trên trong HelloWorld.java file và đặt file này trong C:\ServletDevel (Windows) hoặc /usr/ServletDevel (Unix), sau đó bạn sẽ cần thêm những thư mục này trong CLASSPATH.
Giả sử bạn đã cài đặt môi trường một cách thích hợp, bạn vào thư mục ServletDevel và biên dịch HelloWorld.java như sau:
$ javac HelloWorld.java
Nếu Servlet này phụ thuộc vào bất kỳ thư viện nào, bạn phải bao gồm những JAR file này trên CLASSPATH. Tôi chỉ bao servlet-api.jar file bởi vì tôi không sử dụng bất kỳ thư viện nào khác trong chương trình Hello World này.
Dòng lệnh này sử dụng bộ biên dịch Java có sẵn với JDK. Để lệnh này làm việc một cách thích hợp, bạn phải bao vị trí của Java JDK bạn đang sử dụng trong biến môi trường PATH.
Nếu mọi thứ là ổn, sự biên dịch trên sẽ tạo HelloWorld.class file trong cùng thư mục. Phần tiếp sẽ giải thích cách một servlet đã được biên dịch sẽ được triển khai như thế nào.

Sự triển khai Servlet

Theo mặc định, một ứng dụng servlet được đặt tại path <Tomcat-installation-directory>/webapps/ROOT và class file sẽ ở trong <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes.
Nếu bạn đã có tên class đầy đủ của com.myorg.MyServlet, thì lớp servlet này phải được đặt trong WEB-INF/classes/com/myorg/MyServlet.class.
Bây giờ, sao chép HelloWorld.class vào trong <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes và tạo các entry sau trong web.xml file, được đặt trong <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
Các entry trên để được tạo bên trong các thẻ <web-app>...</web-app> có sẵn trong web.xml file. Có nhiều entry đa dạng có sẵn trong đó, nhưng đừng lo lắng về điều này.
Điều cần làm bây giờ, bạn khởi động Tomcat server bởi sử dụng <Tomcat-installation-directory>\bin\startup.bat (trên windows) hoặc <Tomcat-installation-directory>/bin/startup.sh (trên Linux/Solaris .v.v.) và cuối cùng gõ http://localhost:8080/HelloWorld trong hộp địa chỉ của trình duyệt. Nếu mọi thứ là ổn, bạn sẽ thấy kết quả như sau:
Ví dụ Servlet
no image
Khi một trình duyệt yêu cầu một trang web, nó gửi nhiều thông tin tới Web Server, mà không thể được đọc một cách trực tiếp bởi vì thông tin này chuyển động như là một phần của Header trong HTTP Request. Bạn có thể kiểm tra Giao thức HTTP để tìm thêm thông tin về điều này.
Bảng dưới liệt kê các thông tin Header quan trọng mà tới từ trình duyệt và bạn sẽ sử dụng rất thường xuyên trong lập trình Web.
HeaderMiêu tả
AcceptTrường này xác định loại MIME mà trình duyệt hoặc Client khác có thể xử lý. Các giá trị image/png hoặc image/jpeg là hai khả năng phổ biến nhất
Accept-CharsetTrường này xác định bộ ký tự mà trình duyệt có thể sử dụng để hiển thị thông tin. Ví dụ: ISO-8859-1
Accept-EncodingTrường này xác định kiểu mã hóa mà trình duyệt biết để xử lý. Các giá trị của gzip hoặc compress là hai khả năng phổ biến nhất
Accept-LanguageTrường này xác định ngôn ngữ ưa thíc của Client trong trường hợp Servlet có thể tạo các kết quả trong nhiều ngôn ngữ. Ví dụ en, en-us, ru, .v.v.
AuthorizationTrường này được sử dụng bởi Client để nhận diện chính nó khi truy cập vào các trang web được bảo vệ bởi password
ConnectionTrường này chỉ dẫn có hay không Client có thể xử lý các kết nối HTTP dạng Persistent. Các kết nối Persistent cho phép Client hoặc trình duyệt thu nhận nhiều file với một yêu cầu đơn. Một giá trị của Keep-Alive nghĩa là các kết nối Persistent này nên được sử dụng
Content-LengthTrường này chỉ thích hợp với các yêu cầu POST và cung cấp kích cỡ của dữ liệu POST bằng giá trị byte
CookieTrường này trả về các cookie tới các Server mà trước đó đã gửi chúng tới trình duyệt
HostTrường này xác định host và cổng (port) khi được cung cấp trong URL ban đầu
If-Modified-SinceTrường này chỉ rằng Client muốn trang này chỉ khi nó đã được thay đổi sau ngày đã xác định. Server gửi một code là 304, nghĩa là Not Modified Header nếu không có kết quả nào mới hơn là có sẵn
If-Unmodified-SinceTrường này là ngược với trường If-Modified-Since. Nó xác định hoạt động là thành công chỉ khi tài liệu là cũ hơn ngày đã xác định
RefererTrường này chỉ URL của trang web đang tham chiếu đó. Ví dụ, nếu bạn tại trang Webpage 1 và click vào một link tới trang Webpage 2, thì URL của Webpage 1 được bao trong trường Referer Header khi trình duyệt yêu cầu trang Webpage 2
User-AgentTrường này nhận diện trình duyệt hoặc Client đang tạo yêu cầu và có thể được sử dụng để trả về nội dung khác nhau cho các loại trình duyệt khác nhau

Các phương thức để đọc HTTP Header

Bảng dưới liệt kê các phương thức có thể được sử dụng để đọc HTTP Header trong chương trình Servlet của bạn. Các phương thức này có sẵn với đối tượng HttpServletRequest.
STTPhương thức & Miêu tả
1
Cookie[] getCookies()
Trả về một mảng chứa tất cả đối tượng Cookie mà Client gửi với yêu cầu này
2
Enumeration getAttributeNames()
Trả về một Enumeration chứa các tên của thuộc tính có sẵn cho yêu cầu này
3
Enumeration getHeaderNames()
Trả về một Enumeration của tất cả tên Header mà yêu cầu này chứa
4
Enumeration getParameterNames()
Trả về một Enumeration của các đối tượng String chứa tên của Parameter được chứa trong yêu cầu này
5
HttpSession getSession()
Trả về session hiện tại, mà liên kết với yêu cầu này, hoặc yêu cầu đó không có một session, nó sẽ tạo ra một session
6
HttpSession getSession(boolean create)
Trả về HttpSession hiện tại, mà liên kết với yêu cầu này, hoặc nếu không có session hiện tại nào và create là true, nó trả về một session mới
7
Locale getLocale()
Trả về Locale mà Client sẽ chấp chận nội dung trong đó, dựa trên trường Accept-Language Header
8
Object getAttribute(String name)
Trả về giá trị của thuộc tính name như là một Object, hoặc trả về null nếu không có thuộc tính nào trong name đã cung cấp tồn tại
9
ServletInputStream getInputStream()
Thu nhận thân yêu cầu dạng dữ liệu nhị phân bởi sử dụng một ServletInputStream
10
String getAuthType()
Trả về tên của Authentication Scheme được sử dụng để bảo vệ Servlet, ví dụ: "BASIC" hoặc "SSL", hoặc trả về null nếu JSP không được bảo vệ
11
String getCharacterEncoding()
Trả về tên của Mã hóa ký tự được sử dụng trong thân yêu cầu này
12
String getContentType()
Trả về kiểu MIME của thân yêu cầu, hoặc trả về null nếu không biết kiểu này
13
String getContextPath()
Trả về phần URI yêu cầu mà chỉ dẫn context của yêu cầu đó
14
String getHeader(String name)
Trả về giá trị của trường Header đã xác định dưới dạng một String
15
String getMethod()
Trả về tên của phương thức HTTP mà yêu cầu này được tạo, ví dụ: GET, POST, hoặc PUT
16
String getParameter(String name)
Trả về giá trị của Parameter dưới dạng một String, hoặc trả về null nếu Parameter này không tồn tại
17
String getPathInfo()
Trả về bất kỳ thông tin path bổ sung, mà liên kết với URI mà Client đã gửi khi nó tạo yêu cầu này
18
String getProtocol()
Trả về tên và phiên bản của giao thức
19
String getQueryString()
Trả về chuỗi truy vấn, được chứa trong URL sau path đó
20
String getRemoteAddr()
Trả về địa chỉ Internet Protocol (IP) của một Client mà gửi yêu cầu này
21
String getRemoteHost()
Trả về tên đầy đủ của Client mà gửi yêu cầu này
22
String getRemoteUser()
Trả về login của người sử dụng tạo yêu cầu này, nếu người dùng đã được xác nhận, hoặc trả về null nếu người dùng chưa được xác nhận
23
String getRequestURI()
Trả về phần URL của yêu cầu này từ tên giao thức dưới dạng một chuỗi truy vấn trong dòng đầu tiên của HTTP Request
24
String getRequestedSessionId()
Trả về ID của session đã được xác định bởi Client
25
String getServletPath()
Trả về phần URL của yêu cầu này mà gọi JSP
26
String[] getParameterValues(String name)
Trả về một mảng đối tượng String chứa tất cả các giá trị mà các parameter đã cung cấp có, hoặc trả về null nếu parameter này không tồn tại
27
boolean isSecure()
Trả về một Boolean chỉ rằng có hay không yêu cầu này được tạo bởi sử dụng một đường an toàn, như HTTPS
28
int getContentLength()
Trả về độ dài, bằng giá trị byte, của thân yêu cầu và làm nó có sẵn bởi Input Stream, hoặc trả về -1 nếu độ dài là không được biết
29
int getIntHeader(String name)
Trả về giá trị của Request header đã cho dưới dạng một int
30
int getServerPort()
Trả về số hiệu cổng mà trên đó yêu cầu được nhận

Ví dụ về HTTP Header Request

Ví dụ sau sử dụng phương thức getHeaderName() của đối tượng HttpServletRequest để đọc thông tin HTTP header. Phương thức này trả về một Enumeration chứa thông tin header mà liên kết với HTTP request hiện tại.
Khi chúng ta có một Enumeration, chúng ta có thể lặp Enumeration này theo phương thức chuẩn: sử dụng phương thức hasMoreElements() để xác định khi nào dừng và sử dụng phương thức nextElement() để nhận tên mỗi parameter.
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {

// Method to handle GET method request.
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// Set response content type
response
.setContentType("text/html");

PrintWriter out = response.getWriter();
String title = "HTTP Header Request Example";
String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " +
"transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n"+
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<table width=\"100%\" border=\"1\" align=\"center\">\n" +
"<tr bgcolor=\"#949494\">\n" +
"<th>Header Name</th><th>Header Value(s)</th>\n"+
"</tr>\n");

Enumeration headerNames = request.getHeaderNames();

while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
out.println("</table>\n</body></html>");
}
// Method to handle POST method request.
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet
(request, response);
}
}
Bây giờ gọi Servlet trên sẽ cho kết quả sau::


HTTP Header Request Example











Header NameHeader Value(s)
accept*/*
accept-languageen-us
user-agentMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encodinggzip, deflate
hostlocalhost:8080
connectionKeep-Alive
cache-controlno-cache