JSP: Cấu hình ứng dụng Web


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Các ứng dụng Web được cấu hình bằng các phần tử có trong bộ mô tả triển khai ứng dụng web.

Các phần sau sẽ giới thiệu ngắn gọn về các tính năng ứng dụng web mà bạn thường muốn cấu hình. Một số tham số bảo mật có thể được chỉ định; Những điều này được đề cập đến trong Chương 30, Bảo mật các ứng dụng Web .

Trong các phần dưới đây, các ví dụ cho thấy các thủ tục để cấu hình ứng dụng Hello, World. Nếu Hello, World không sử dụng một tính năng cấu hình cụ thể, phần cung cấp các tham chiếu đến các ví dụ khác minh họa cách xác định phần tử descriptor triển khai.

Lập bản đồ URL cho các thành phần Web

Khi nhận được yêu cầu từ vùng chứa web, nó phải xác định thành phần web nào cần xử lý yêu cầu. Nó thực hiện điều đó bằng cách lập bản đồ đường dẫn URL chứa trong yêu cầu tới một ứng dụng web và một thành phần web. Đường dẫn URL chứa ngữ cảnh gốc và bí danh:

Http: // host : port / context-root / bí danh

Đặt bí danh thành phần

Các bí danh xác định các thành phần web mà nên xử lý một yêu cầu. Đường dẫn bí danh phải bắt đầu bằng một dấu gạch chéo ( / ) và kết thúc bằng một chuỗi hoặc biểu thức ký tự đại diện với một phần mở rộng (ví dụ * .jsp ). Vì hộp chứa web tự động ánh xạ một bí danh kết thúc bằng * .jsp , bạn không phải chỉ định một bí danh cho một trang JSP trừ khi bạn muốn tham khảo trang bằng một tên khác với tên tệp của nó.

Các hello2 ứng dụng có hai servlets mà cần phải được ánh xạ trong web.xml tập tin. Bạn có thể chỉnh sửa tệp web.xml của ứng dụng web trong NetBeans IDE bằng cách làm như sau:

  1. Chọn File → Open Project.

  2. Trong hộp thoại Mở dự án, hãy điều hướng đến:

    Tut-install / javaeetutorial5 / ví dụ / web /
  3. Chọn thư mục hello2 .

  4. Chọn hộp kiểm Mở thành dự án chính.

  5. Nhấp vào Mở dự án.

  6. Mở rộng cây dự án trong khung Dự án.

  7. Mở rộng nút Web pages và sau đó là nút WEB-INF trong cây dự án.

  8. Nhấp đúp vào tệp web.xml bên trong nút WEB-INF.

Các bước sau đây mô tả cách thực hiện các chỉnh sửa cần thiết đối với tệp web.xml , bao gồm cách đặt tên hiển thị và cách ánh xạ các thành phần servlet. Bởi vì các chỉnh sửa đã có trong tệp, bạn chỉ có thể sử dụng các bước để xem cài đặt.

Để đặt tên hiển thị:

  1. Nhấp vào Tổng quát ở đầu trình soạn thảo để mở chế độ xem chung.

  2. Nhập hello2 vào trường Tên hiển thị.

Để thực hiện ánh xạ servlet:

  1. Nhấp Servlets ở đầu trình soạn thảo để mở giao diện servlets.

  2. Nhấp Thêm Servlet.

  3. Trong hộp thoại Thêm servlet, nhập GreetingServlet vào trường Tên Servlet.

  4. Nhập servlets.GreetingServlet vào trường Lớp servlet.

  5. Nhập / chào trong trường Mẫu URL.

  6. Nhấp OK.

  7. Lặp lại các bước trước, ngoại trừ nhập ResponseServlet là tên servlet, servlets.ResponseServlet làm lớp servlet và / response làm mẫu URL.

Nếu bạn không sử dụng NetBeans IDE, bạn có thể thêm các cài đặt này bằng cách sử dụng trình chỉnh sửa văn bản.

Để gói ví dụ với NetBeans IDE, hãy thực hiện theo các bước sau:

  1. Chọn File → Open Project.

  2. Trong hộp thoại Mở dự án, hãy điều hướng đến:

    Tut-install / javaeetutorial5 / ví dụ / web /
  3. Chọn thư mục hello2 .

  4. Chọn hộp kiểm Mở thành dự án chính.

  5. Nhấp vào Mở dự án.

  6. Trong tab Các dự án, nhấp chuột phải vào dự án hello2 và chọn Xây dựng.

Để gói ví dụ với tiện ích Ant, hãy thực hiện theo các bước sau:

  1. Trong cửa sổ terminal, vào Tut-install / javaeetutorial5 / example / web / hello2 / .

  2. Gõ ant . Mục tiêu này sẽ xây dựng tệp tin WAR và sao chép nó vào thư mụcTut-install / javaeetutorial5 / example / web / hello2 / dist / thư mục.

Để triển khai ví dụ bằng cách sử dụng NetBeans IDE, nhấp chuột phải vào dự án trong khung Dự án và chọn Undeploy and Deploy.

Để triển khai ví dụ bằng cách sử dụng Ant, gõ ant triển . Mục tiêu triển khai trong trường hợp này cung cấp cho bạn một URL không chính xác để chạy ứng dụng. Để chạy ứng dụng, vui lòng sử dụng URL được hiển thị ở cuối phần này.

Để chạy ứng dụng, trước tiên hãy triển khai mô-đun web, sau đó mở URL http: // localhost: 8080 / hello2 / lời chào trong trình duyệt.

Tuyên bố các tệp Chào mừng

Các file hoan nghênh cơ chế cho phép bạn chỉ định một danh sách các tập tin mà chứa web sẽ sử dụng cho phụ thêm vào một yêu cầu cho một URL (gọi là yêu cầu một phần hợp lệ ) mà không được ánh xạ tới một thành phần web.

Ví dụ: giả sử bạn xác định tệp chào đón welcome.html . Khi một khách hàng yêu cầu một URL như máy chủ : cổng / webapp / thư mục , nơi thư mục không được ánh xạ tới một servlet hoặc trang JSP, các tập tinHost port webapp directory /welcome.html được trả lại cho khách hàng.

Nếu vùng chứa web nhận được yêu cầu một phần hợp lệ, kho chứa web kiểm tra danh sách tệp chào mừng và thêm vào yêu cầu từng phần cho mỗi tệp chào mừng theo thứ tự đã chỉ định và kiểm tra liệu một tài nguyên tĩnh hoặc servlet trong WAR có được ánh xạ tới URL yêu cầu đó hay không. Hộp chứa web sau đó gửi yêu cầu tới tài nguyên đầu tiên trong WAR phù hợp.

Nếu không có tệp chào mừng nào được chỉ định, Máy chủ ứng dụng sẽ sử dụng tệp có tên là chỉ mục. XXX, Nơi XXX có thể là html hoặc jsp , như tệp chào mừng mặc định. Nếu không có tệp chào mừng và không có tệp có tên chỉ mục. XXX, Máy chủ ứng dụng trả về một danh sách thư mục.

Để chỉ định một tệp chào mừng trong descriptor triển khai ứng dụng web bằng NetBeans IDE, hãy thực hiện theo các bước sau:

  1. Mở dự án nếu bạn chưa làm.

  2. Mở rộng nút của dự án trong khung Dự án.

  3. Mở rộng nút Web Pages và sau đó là nút WEB-INF.

  4. Nhấp đúp vào web.xml .

  5. Thực hiện một trong các bước sau, đảm bảo rằng các trang JSP bạn chỉ định thực sự được bao gồm trong tệp tin WAR:

    1. Nhấp vào Các trang ở đầu cửa sổ trình soạn thảo và nhập tên của các trang JSP hoạt động như các tệp chào mừng trong trường Chào mừng các tệp.

    2. Nhấp vào XML ở đầu cửa sổ trình soạn thảo, chỉ định các trang JSP sử dụng các phần tử tệp chào mừng và bao gồm các phần tử bên trong phần tử chào-tệp-danh sách . Thành phần tệp chào mừng xác định trang JSP sẽ được sử dụng làm trang chào đón.

      Ví dụ thảo luận trong Đóng gói nội dung có thể sử dụng lại Sử dụng các tệp thẻ có một tệp chào đón.

Thiết lập tham số khởi tạo

Các thành phần web trong một mô đun web chia sẻ một đối tượng đại diện cho ngữ cảnh ứng dụng của chúng (xem Truy cập Web Context ). Bạn có thể truyền các tham số khởi tạo cho ngữ cảnh hoặc cho một thành phần web.

Để thêm một tham số ngữ cảnh sử dụng NetBeans IDE, hãy thực hiện theo các bước sau:

  1. Mở dự án nếu bạn chưa làm.

  2. Mở rộng nút của dự án trong khung Dự án.

  3. Mở rộng nút Web Pages và sau đó là nút WEB-INF.

  4. Nhấp đúp vào web.xml .

  5. Nhấp vào Chung ở đầu khung soạn thảo.

  6. Chọn nút Bối cảnh thông số.

  7. Nhấp vào Thêm.

  8. Trong hộp thoại Thêm tham số ngữ cảnh, hãy thực hiện theo các bước sau:

    1. Nhập tên chỉ định đối tượng ngữ cảnh trong trường Tên thông số.

    2. Nhập tham số để chuyển đến đối tượng ngữ cảnh trong trường Giá trị tham số.

    3. Nhấp OK.

Ngoài ra, bạn có thể chỉnh sửa XML của tệp web.xml trực tiếp bằng cách nhấp vào XML ở đầu cửa sổ trình soạn thảo và sử dụng các yếu tố sau để thêm tham số ngữ cảnh:

  • Một phần tử param-name xác định đối tượng ngữ cảnh

  • Một phần tử giá trị param xác định tham số để chuyển đến đối tượng ngữ cảnh

  • Một phần tử context-param bao gồm hai phần tử trước

Đối với một tham số ngữ cảnh mẫu, xem ví dụ được thảo luận trong Các ví dụ JSP Pages .

Để thêm tham số khởi tạo thành phần web bằng NetBeans IDE, hãy thực hiện theo các bước sau:

  1. Mở dự án nếu bạn chưa làm.

  2. Mở rộng nút của dự án trong khung Dự án.

  3. Mở rộng nút Web Pages và sau đó là nút WEB-INF.

  4. Nhấp đúp vào web.xml .

  5. Nhấp Servlets ở đầu cửa sổ trình soạn thảo.

  6. Sau khi nhập tên, lớp và mẫu URL của servlet, hãy nhấp vào nút Thêm bên dưới bảng Tham số khởi tạo.

  7. Trong hộp thoại Thêm thông số khởi tạo:

    1. Nhập tên của tham số vào trường Param Name.

    2. Nhập giá trị của tham số vào trường Giá trị Tham số.

    3. Nhấp OK.

Ngoài ra, bạn có thể chỉnh sửa XML của tệp web.xml trực tiếp bằng cách nhấp vào XML ở đầu cửa sổ trình soạn thảo và sử dụng các yếu tố sau để thêm tham số ngữ cảnh:

  • Một phần tử param-name xác định tên của tham số khởi tạo

  • Một phần tử giá trị param xác định giá trị của tham số khởi tạo

  • Một phần tử init-param bao gồm hai phần tử trước

Lập bản đồ lỗi cho màn hình lỗi

Khi một lỗi xảy ra trong quá trình thực hiện một ứng dụng web, bạn có thể có ứng dụng hiển thị một màn hình lỗi cụ thể theo loại lỗi. Cụ thể, bạn có thể chỉ định ánh xạ giữa mã trạng thái trả về trong phản hồi HTTP hoặc ngoại lệ ngôn ngữ lập trình Java trả về bởi bất kỳ thành phần web nào (xem Xử lý lỗi Servlet ) và bất kỳ loại màn hình lỗi nào.

Để thiết lập lập bản đồ lỗi bằng NetBeans IDE, hãy thực hiện theo các bước sau:

  1. Mở dự án nếu bạn chưa làm.

  2. Mở rộng nút của dự án trong khung Dự án.

  3. Mở rộng nút Web Pages và sau đó là nút WEB-INF.

  4. Nhấp đúp vào web.xml .

  5. Nhấp vào Các trang ở đầu cửa sổ trình soạn thảo.

  6. Mở rộng nút Lỗi Trang.

  7. Nhấp vào Thêm.

  8. Trong hộp thoại Thêm trang lỗi:

    1. Nhấp vào Trình duyệt để xác định vị trí trang mà bạn muốn hoạt động như trang lỗi.

    2. Nhập mã trạng thái HTTP sẽ làm cho trang lỗi được mở ra trong trường Mã lỗi.

    3. Nhập ngoại lệ sẽ gây ra lỗi trang tải trong trường Loại ngoại lệ.

    4. Nhấp OK.

Ngoài ra, bạn có thể nhấp vào XML ở đầu cửa sổ trình soạn thảo và nhập bản đồ trang lỗi bằng tay bằng các phần tử sau:

  • Một phần tử loại ngoại lệ xác định ngoại lệ hoặc mã trạng thái HTTP sẽ gây ra trang lỗi được mở ra.

  • Một phần tử vị trí chỉ định tên của một tài nguyên web được gọi khi mã trạng thái hoặc ngoại lệ được trả lại. Tên cần có dấu gạch chéo ( / ).

  • Một phần tử lỗi bao gồm hai phần tử trước đó.

Bạn có thể có nhiều phần tử lỗi trong phần mô tả triển khai của mình. Mỗi một trong những yếu tố xác định một lỗi khác nhau mà gây ra một trang lỗi để mở. Trang lỗi này có thể giống với bất kỳ số phần tử nào của trang lỗi .


Lưu ý - Bạn cũng có thể định nghĩa màn hình báo lỗi cho một trang JSP chứa trong một WAR. Nếu màn hình báo lỗi được định nghĩa cho cả WAR và một trang JSP, trang lỗi trang JSP được ưu tiên. Xem Xử lý lỗi trang JSP .


Đối với một ánh xạ trang lỗi mẫu, xem các ví dụ được thảo luận trong các Ví dụ Servlets .

Khai báo Tài nguyên tham khảo

Nếu thành phần web của bạn sử dụng các đối tượng như đậu doanh nghiệp, nguồn dữ liệu hoặc dịch vụ web, bạn sử dụng các chú thích Java EE để đưa các tài nguyên này vào ứng dụng của bạn. Chú thích loại bỏ rất nhiều mã tra cứu boilerplate và các phần tử cấu hình mà các phiên bản Java EE trước yêu cầu.

Mặc dù việc chèn tài nguyên bằng các chú thích có thể thuận tiện hơn cho nhà phát triển nhưng có một số hạn chế khi sử dụng nó trong các ứng dụng web. Thứ nhất, bạn chỉ có thể bơm các tài nguyên vào các đối tượng được quản lý bởi container. Điều này là do một container phải có quyền kiểm soát việc tạo ra một thành phần để nó có thể thực hiện việc tiêm vào một thành phần. Do đó, bạn không thể bơm các tài nguyên vào các đối tượng như các thành phần JavaBeans đơn giản. Tuy nhiên, JavaServer Faces quản lý các hạt cà phê được quản lý bởi container; Do đó, họ có thể chấp nhận các nguồn tài nguyên tiêm.

Ngoài ra, các trang JSP không thể chấp nhận các mũi tiêm tài nguyên. Điều này là do thông tin được thể hiện bằng chú thích phải có sẵn trong thời gian triển khai, nhưng trang JSP được biên dịch sau đó; Do đó, chú thích sẽ không được nhìn thấy khi nó là cần thiết. Những thành phần có thể chấp nhận tiêm nguồn lực được liệt kê trong Bảng 3-1 .

Phần này mô tả cách sử dụng một vài chú thích được một bộ chứa servlet hỗ trợ để tiêm các tài nguyên. Chương 25, Tính bền bỉ trong Web Tier mô tả các ứng dụng web sử dụng các chú thích được hỗ trợ bởi Java Persistence API như thế nào. Chương 30, Bảo mật các ứng dụng Web mô tả cách sử dụng các chú thích để xác định thông tin về việc bảo vệ các ứng dụng web.

Hợp phần

Giao diện / Lớp học

Servlet

Javax.servlet.Servlet

Bộ lọc servlet

Javax.servlet.ServletFilter

Người nghe sự kiện

Javax.servlet.ServletContextListener

Javax.servlet.ServletContextAttributeListener

Javax.servlet.ServletRequestListener

Javax.servlet.ServletRequestAttributeListener

Javax.servlet.http.HttpSessionListener

Javax.servlet.http.HttpSessionAttributeListener

Javax.servlet.http.HttpSessionBindingListener

Người lắng nghe Taglib

Giống như trên

Taglib Tag Handlers

Javax.servlet.jsp.tagext.JspTag

Quản lý Đậu

Các đối tượng Java Old Plain

Các thành phần Web chấp nhận việc tiêm nguồn

Tuyên bố một tham chiếu đến một tài nguyên

Các @Resource chú thích được sử dụng để khai báo một tham chiếu đến một tài nguyên như một nguồn dữ liệu, một đậu doanh nghiệp, hoặc một mục môi trường. Chú thích này tương đương với khai báo một phần tử resource-ref trong descriptor triển khai.

Các @Resource chú thích được xác định trên một lớp, phương pháp hoặc trường. Vùng lưu trữ có trách nhiệm chèn tài liệu tham khảo đến các tài nguyên được khai báo bởi chú giải @Resource và ánh xạ nó vào tài nguyên JNDI thích hợp. Trong ví dụ sau, chú giải @Resource được sử dụng để đưa một nguồn dữ liệu vào thành phần cần tạo kết nối với nguồn dữ liệu, như đã làm khi sử dụng công nghệ JDBC để truy cập cơ sở dữ liệu quan hệ:

@Resource javax.sql.DataSource catalogDS;
Public getProductsByCategory () {
    / / Lấy một kết nối và thực hiện truy vấn
    Kết nối conn = catalogDS.getConnection ();
    ..
}

Vùng chứa sẽ tiêm nhiễm nguồn dữ liệu này trước khi thành phần được tạo sẵn cho ứng dụng. Lập bản đồ JNDI nguồn dữ liệu được suy ra từ tên trường catalogDSvà loại, javax.sql.DataSource .

Nếu bạn có nhiều tài nguyên mà bạn cần phải tiêm vào một thành phần, bạn cần sử dụng chú giải @Resources để chứa chúng, như thể hiện trong ví dụ sau:

@Tài nguyên ({
    @Resource (name = "myDB" type = java.sql.DataSource),
    @Resource (name = "myMQ" type = javax.jms.ConnectionFactory)
})

Các ví dụ ứng dụng web trong hướng dẫn này sử dụng Java Persistence API để truy cập cơ sở dữ liệu quan hệ. API này không yêu cầu bạn tạo một kết nối đến một nguồn dữ liệu một cách rõ ràng. Do đó, các ví dụ không sử dụng chú giải Nguồn @Resource để đưa nguồn dữ liệu. Tuy nhiên, API này hỗ trợ các @PersistenceUnitvà @PersistenceContext chú thích cho tiêm EntityManagerFactory và EntityManager trường hợp, tương ứng. Chương 25, Kiên trì trong Web Tier mô tả các chú thích này và sử dụng Java Persistence API trong các ứng dụng web.

Khai báo một tham chiếu đến một dịch vụ Web

Các @WebServiceRef chú thích cung cấp một tham chiếu đến một dịch vụ web. Ví dụ sau chỉ ra sử dụng chú giải @WebServiceRef để khai báo một tham chiếu đến một dịch vụ web. WebServiceRef sử dụng phần tử wsdlLocation để chỉ định URI của tệp WSDL của dịch vụ được triển khai:

...
Nhập khẩu javax.xml.ws.WebServiceRef;
...
Lớp công khai ResponseServlet mở rộng HTTPServlet {
@WebServiceRef (wsdlLocation =
    "Http: // localhost: 8080 / helloservice / hello? Wsdl")
Dịch vụ HelloService tĩnh;
» Tiếp: Truy cập cơ sở dữ liệu từ các ứng dụng Web
« Trước: Các Module Web
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!