Tạo các ứng dụng bảo mật Java một cách hiệu quả, Phần 1

Sử dụng Rational Application Developer và Data Studio

Đây là phần đầu tiên trong loạt bài hướng dẫn gồm hai phần viết về việc tạo các ứng dụng Web bảo mật dựa trên Java sử dụng Rational® Application Developer, Data Studio và Rational AppScan. Bài hướng dẫn đầu tiên này mở đầu bằng việc trình bày cách thức Data Studio với pureQuery có thể tăng hiệu quả phát triển Web hướng theo cơ sở dữ liệu của bạn. Bạn sẽ phát triển một ứng dụng Web Java™ với Rational Application Developer, và sau đó bạn triển khai ứng dụng đó trên WebSphere với Java Server Pages (JSP)® Application Server.

Tyler Anderson, Kỹ sư, Backstop Media

Tyler's photoTyler Anderson đã tốt nghiệp chuyên ngành Khoa học Máy tính tại trường Đại học Brigham Young năm 2004 và hiện đang tham gia học kỳ cuối chương trình đào tạo Thạc sỹ khoa học chuyên ngành Công nghệ Máy tính. Trước đó, anh đã làm việc như là một lập trình viên cơ sở dữ liệu cho DPMG.COM, và hiện tại anh đang là kỹ sư cho tập đoàn Stexar, dựa trên nền tảng Beaverton, Oregon



28 08 2009

Trước khi bắt đầu

Bài hướng dẫn này chủ yếu dành cho các nhà phát triển ứng dụng cơ sở dữ liệu và Java muốn lợi dụng việc sử dụng Data Studio cho các khả năng pureQuery của nó và Rational Application Developer để tạo thuận lợi cho việc phát triển một ứng dụng dựa trên Java. Đối với bài hướng dẫn này, có kiến thức về phát triển Web và JSP nói chung cũng rất hữu ích, tuy nhiên không nhất thiết phải có.

Về loạt bài này

Mục tiêu của loạt bài gồm hai phần này là mở rộng các kỹ năng phát triển ứng dụng Web của bạn thông qua việc sử dụng Rational Application Developer, Data Studio và Rational AppScan.

  • Phần 1 sử dụng các khả năng IDE của Rational Application Developer và các tính năng pureQuery của Data Studio để tạo ra một ứng dụng Web quản lý tài sản dựa trên Java một cách có hiệu quả.
  • Phần 2 lợi dụng rất nhiều tính năng Rational AppScan sẵn có để củng cố/bảo mật ứng dụng Java bằng cách tìm ra các khiếm khuyết và sửa chúng để bạn có thể tự tin triển khai ứng dụng Web của mình.

Về bài hướng dẫn này

Bài hướng dẫn này chỉ cho bạn cách sử dụng Data Studio để phát triển các ứng dụng một cách hiệu quả hơn bằng cách tự động tạo ra các lớp kết nối cơ sở dữ liệu đáng tin cậy. Các hiệu quả mà Data Studio mang lại được thể hiện bằng cách tạo ra ứng dụng Web dựa trên Java sử dụng Rational Application Developer và Data Studio được triển khai cho WebSphere Application Server. Bạn cũng sẽ học cách tạo ra và cài đặt một ứng dụng sử dụng Rational Application Developer và Data Studio, bao gồm:

  • Tạo một kết nối cơ sở sữ liệu DB2
  • Tạo một ứng dụng Web động được kích hoạt pureQuery
  • Tạo ra mã trình pureQuery từ các bảng cơ sở dữ liệu
  • Bổ sung mã trình pureQuery với các truy vấn tùy thích
  • Tạo ra các JSP sử dụng các lớp pureQuery
  • Triển khai và kiểm tra trên WebSphere Application Server

Bạn sẽ học và thực hiện các khái niệm trên bằng cách tạo một ứng dụng Web quản lý tài sản mà những người dùng có thể đăng nhập và xem các tài sản khác nhau của họ. Giá trị bị trì hoãn của cổ phiếu và quyền chọn cổ phần sẽ được lấy từ Yahoo! Finance API. Bạn cũng sẽ tạo thủ công một biểu mẫu để bổ sung các tài sản bất động sản mới.

Các yêu cầu về hệ thống

Đối với bài hướng dẫn này, bạn sẽ chỉ cần ba sản phẩm:

  • Rational Application Developer
    Lấy phiên bản chạy thử của Rational Application Developer 7.0.0.6 từ IBM (nhấn liên kết Tải xuống sử dụng IBM Installation Manager mới (được khuyến khích). Bạn sẽ sử dụng Rational Application Developer như một IDE dựa trên Eclipse có đầy đủ tính năng giúp cho việc phát triển ứng dụng Web Java của bạn.
  • Data Studio
    Trình bổ sung miễn phí này chứa các khả năng pureQuery mà bạn sẽ sử dụng cho việc phát triển hiệu quả Web hướng theo cơ sở dữ liệu. Bài hướng dẫn này đòi hỏi phiên bản 1.1.2 (phiên bản duy nhất có thể tương thích với Rational Application Developer 7.0.0.6).
  • DB2 Express-C
    Data Studio đòi hỏi một kết nối cơ sở dữ liệu trực tiếp để sinh ra mã trình pureQuery. Bài hướng dẫn này sử dụng DB2 Express-C cho cơ sở dữ liệu.

Hãy chú ý rằng bài viết này nên đi kèm với các ấn bản sau này của Rational Application Developer và Data Studio mà có khả năng tương thích (ví dụ, Rational Apsauplication Developer 7.0.0.7 và Data Studio 1.1.3, nếu đã có các phiên bản này). Hãy tham khảo thêm IBM về những phiên bản trong các phiên bản tương lai sẽ có thể tương thích với nhau. Trong khi chờ đợi, Rational Application Developer 7.0.0.6 và Data Studio 1.1.2 được biết đến là tương thích với nhau.


Cài đặt Rational Application Developer và Data Studio cho nhóm cùng gói

Trước khi bạn có thể bắt đầu sử dụng Rational Application Developer và Data Studio cùng nhau, bạn sẽ cần cài đặt chúng vào nhóm cùng gói. Hãy làm theo đây để chắc chắn rằng bạn nhận được đúng phiên bản của từng sản phẩm.

Bạn cũng sẽ phải cài đặt DB2 Express-C, mặc dù chúng tôi không đề cập điều đó trong bài hướng dẫn này. Đối với phần hỗ trợ cài đặt DB2 Express-C và tạo ra các cơ sở dữ liệu và các bảng cơ sở dữ liệu, hãy xem phần Tài nguyên . Sau khi bạn tạo một cơ sở dữ liệu mới và một bảng cơ sở dữ liệu, hãy chèn thủ công các dòng mới trong cơ sở dữ liệu bằng cách nhấn chuột hai lần vào biểu tượng của bảng bạn mới tạo trong khung nhìn chính của trung tâm điều khiển.

Cài đặt Rational Application Developer

Xem liên kết trong Các yêu cầu về hệ thống để sử dụng IBM Installation Manager mà nó sẽ tải xuống và cài đặt chỉ các tệp tin mà các lựa chọn cài đặt của bạn yêu cầu.

  1. Khi bạn nhấn chuột vào tệp tin bạn tải xuống ở trên, bạn sẽ nhìn thấy màn hình sau:
    Hình 1. Các gói cài đặt
    Installation packages
  2. Nếu phiên bản 7.0.0.6 của IBM Rational Application Developer không hiện ra, hãy kiểm tra Show all versions (Hiện tất cả các phiên bản) để buộc nó hiện ra. Đánh dấu vào Version 7.0.0.6 và tiếp tục.
  3. Trang "accept license terms (chấp nhận các điều khoản cấp phép)" mở ra. Chọn I accept the terms in the license agreements (Tôi chấp nhận các điều khoản trong các thỏa thuận cấp phép), và nhấn Next.
  4. Màn hình tiếp theo hỏi bạn vị trí để cài đặt thư mục các tài nguyên được chia sẻ.
    Hình 2. Vị trí để cài đặt các tài nguyên được chia sẻ
    Where to install shared resources
  5. Mặc định, được hiện ra dưới đây. Nhấn Next. Xác định vị trí để tạo ra một nhóm gói mới. Chọn Creat a new package group (Tạo một nhóm gói mới).
    Hình 3. Tạo một nhóm gói mới
    Creating a new package group
  6. Bạn sẽ cài đặt Data Studio vào nhóm gói này sau, vì vậy hãy nhớ tên mà nó được đặt (IBM Software Development Platform là tên trong Hình 4). Thư mục mặc định sẽ làm điều đó, vì vậy hãy nhấn Next.
  7. Màn hình tiếp theo hỏi bạn có muốn mở rộng một phiên bản hiện tại của Eclipse hay không. Bạn sẽ thực hiện việc đó ở đây, vì thế hãy chắc chắn rằng Mở rộng một Eclipse hiện có không được kiểm tra. Nhấn Next.
  8. Chọn cài đặt những tính năng Rational Application Developer mà bạn muốn. Để mặc định và nhấn Next.
  9. Chọn ngôn ngữ bạn sẽ sử dụng và nhấn Next.
  10. Việc này sẽ dẫn bạn đến một bản điều tra ba câu hỏi ngắn. Chọn một câu trả lời cho cả ba câu hỏi, và nhấn Next.
  11. Cuối cùng, bạn sẽ nhìn thấy một trang tóm tắt cài đặt.
    Hình 4. Tóm tắt cài đặt Rational Application Developer
    Rational Application Developer installation summary
  12. Nếu mọi thứ có vẻ tốt rồi, hãy nhấn Install (Cài đặt). Việc này có thể mất một lúc vì mọi thứ cần phải tải xuống (1.6GB trong trường hợp của Hình 4), và sau đó mới được mở gói và cài đặt. Khi cài đặt hoàn tất, bạn sẽ nhìn thấy một cửa sổ cuối cùng có phần tóm tắt những cái đã được cài đặt, như trong Hình 5.
    Hình 5. Cài đặt Rational Application Developer thành công
    Rational Application Developer installation successful

Thật tuyệt vời! Bây giờ bạn đã có một phiên bản dùng thử đã được cài đặt của Rational Application Developer rồi. Tiếp theo, bạn sẽ cài đặt Data Studio! Để biết thêm thông tin trên về Rational Application Developer, hãy xem phần Tài nguyên .

Cài đặt Data Studio cho nhóm gói hiện có của bạn

Vì bạn đã tải Data Studio, nên cần phải thực hiện một vài bước để cài đặt gói.

  1. Nhấn chuột hai lần vào tệp tin setup.exe. Trang cài đặt hiện ra.
    Hình 6. Trang cài đặt Data Studio
    Data Studio setup page
  2. Nhấn Cài đặt IBM Data Studio. Trang Installation Packages (Các gói Cài đặt) hiện ra.
    Hình 7. Các gói cài đặt Data Studio
    Data Studio installation packages
  3. Hãy chắc chắn là chọn Phiên bản 1.1.2; nếu nó không được liệt kê, hãy nhấn Check for Other Versions and Extensions (Kiểm tra cho Các Phiên bản Khác và Các mở rộng).
  4. Nếu Bước 3 không làm việc, hãy kiểm tra Show all versions (Hiện tất cả các phiên bản). Hãy chắc chắn là phiên bản 1.1.2 được kiểm tra và nhấn Next.
  5. Chọn Sử dụng nhóm gói hiện có, và chắc chắn là chọn nhóm cùng gói mà bạn đã cài đặt Rational Application Developer vào, như trong Hình 8.
    Hình 8. Sử dụng một nhóm gói hiện có
    Using an existing package group
  6. Nhấn Next. Bạn sẽ được hỏi cần gói nào, như trong Hình 9.
    Hình 9. Các tính năng
    Features
  7. Để mặc định và nhấn Next. Trang tóm tắt cài đặt hiện ra.
    Hình 10. Trang tóm tắt cài đặt Data Studio
    Data Studio installation summary page
  8. Nhấn Next. Cài đặt sẽ nhanh hơn nhiều so với cài đặt Rational Application Developer. Khi việc cài đặt hoàn tất, một cửa sổ cuối cùng sẽ cho bạn thấy một bản tóm tắt cài đặt.
    Hình 11. Cài đặt Data Studio thành công
    Data Studio installation successful

Đó bạn có nó rồi đấy -- một cài đặt nhanh chóng và đơn giản. Tiếp đến bạn sẽ bắt đầu sử dụng bộ đôi sản phẩm mới Rational Application Developer và Data Studio! Để biết thêm thông tin về Data Studio, hãy xem phần Tài nguyên.


Tạo một dự án Web động được kích hoạt pureQuery

Vì bạn đã có một cài đặt Rational Application Developer và Data Studio hoạt động được, nên bạn có thể sử dụng ngay rồi! Trong phần này, bạn sẽ tạo một kết nối tới cơ sở dữ liệu của bạn, và tạo một dự án Web động được kích hoạt pureQuery mới.

Tạo một kết nối cơ sở dữ liệu

Bài hướng dẫn này sử dụng DB2 như cơ sở dữ liệu, mặc dù có thể sử dụng bất kỳ cơ sở dữ liệu nào cũng được, bao gồm cả Derby Sample Connection mặc định. Việc đầu tiên phải làm là mở Rational Application Developer và di chuyển đến hình phối cảnh dữ liệu.

  1. Nhấn Window > Show Perspective > Other và chọn Data từ danh sách. Bạn nên xem hình phối cảnh dữ liệu.
    Hình 12. Hình phối cảnh dữ liệu
    The data perspective
  2. Hãy lưu ý khung nhìn Data Explorer ở góc dưới bên trái. Để tạo một kết nối cơ sở dữ liệu mới, nhấn chuột phải vào danh mục Connections (các kết nối) rồi nhấn chuột vào New Connection (Kết nối Mới).
    Hình 13. Tạo một kết nối mới
    Creating a new connection
  3. Trang New Connection (Kết nối Mới) hiện ra. Hãy xác định kiểu cơ sở dữ liệu (DB2) và tên cơ sở dữ liệu (WEALTH).
    Hình 14. Cấu hình một kết nối cơ sở dữ liệu mới
    Configuring a new database connection
  4. Giờ thì bạn có thể thoái mái kiểm tra kết nối trước khi hoàn tất. Nhấn Finish (Hoàn thành) sau khi mọi thứ có vẻ ổn thỏa.
  5. Kết nối cơ sở dữ liệu mới xuất hiện trong Database Explorer.
    Hình 15. Kết nối mới tới cơ sở dữ liệu tài sản
    New connection to the wealth database

Bây giờ bạn được thiết lập để tạo ra một dự án Web động mới.

Tạo ra một dự án Web động

Với kết nối bạn sẽ sử dụng tại chỗ, hãy tạo một dự án Web động.

  1. Nhấn File > New > Project, và chọn Dynamic Web Project. Cửa sổ New Dynamic Web Project mở ra.
    Hình 16. Tạo một dự án Web động mới
    Creating a new dynamic Web project
  2. Đặt tên cho nó là wealth, chọn WebSphere Application Server V6.1 làm thời gian chạy mục tiêu của bạn, một Configurations custom (tùy biến), và đánh dấu Add project to an EAR (Thêm dự án cho một EAR). Nhấn Next.
  3. Cấu hình Project Facets nằm trong ứng dụng Web của bạn.
    Hình 17. Project Facets
    Project Facets
    Nhấn Next.
  4. Xác định gốc ngữ cảnh của ứng dụng Web của bạn, như trong Hình 18.
    Hình 18. Cấu hình môđun Web
    Web module configuration
  5. Nhấn Finish (Hoàn thành) để tạo một dự án Web động.

Đó là việc phải làm để tạo ra dự án mới của bạn! Tiếp theo bạn sẽ thêm hỗ trợ pureQuery cho nó.

Thêm hỗ trợ pureQuery

Việc thêm hỗ trợ cho phép bạn sử dụng các tính năng pureQuery sau này trong bài hướng dẫn này (xem Tài nguyên để lấy thêm một số bài viết về pureQuery).

  1. Nhấn chuột phải vào dự án tài sản trong khung hình Project Explorer, và chọn Add pureQuery Support (Thêm Hỗ trợ pureQuery).
    Hình 19. Thêm hỗ trợ pureQuery
    Add pureQuery support
  2. Chọn tất cả các lựa chọn hiện ra trong Hình 20 và nhấn Next.
    Hình 20. Cấu hình hỗ trợ pureQuery
    Configuring pureQuery support
  3. Chọn kết nối cơ sở dữ liệu mà bạn muốn để bao hàm cả hỗ trợ pureQuery (xem Hình 21).
    Hình 21. Chọn một kết nối cơ sở dữ liệu
    Selecting a database connection
  4. Chọn Use an existing connect (Sử dụng một kết nối hiện có) và chọn kết nối WEALTH.

Tiếp đến bạn sẽ thực hiện một vài thao tác bố trí lại JAR để chuẩn bị dự án của bạn trong thời gian chính.

Chuẩn bị dự án của bạn để thực hiện

Sự kích hoạt pureQuery trong dự án của bạn đã bổ sung một vài tệp jar cho dự án của bạn, tuy nhiên, bạn vẫn cần phải bố trí lại chúng sao cho mọi thứ hoạt động trơn tru.

Bố trí lại các tệp jar:

  1. Di chuyển đến thư mục dự án tài sản của bạn trên hệ thống tệp tin (C:\Users\Tyler\IBM\rationalsdp7.0\workspace\wealth on my machine).
  2. Di chuyển pdq.jar đến WebContent\WEB-INF\lib\.
  3. Chép lại db2cc_license_cisuz.jar và db2jcc.jar từ c:\Program Files (x86)_IBM\SDP70Shared\plugins\com.ibm.datatools.db2_1.0.200.V200803071234\driver\* (trong phạm vi thư mục cài đặt được chia sẻ của gói bạn đã tạo ra trong quá trình cài đặt Rational Application Developer) sang WebContent\WEB-INF\lib
  4. Quay trở lại Rational Application Developer và nhấn chuột phải vào thư mục WebContent\WEB-INF\lib trong cửa sổ Project Explorer và nhấn Refresh. Các tệp ba lớp này nên xuất hiện dưới biểu tượng Libraries/Web App Libraries dưới biểu tượng "Tài nguyên Java: src".
  5. Nhấn chuột phải vào db2jcc_license_cisuz.jar và db2jcc.jar và chọn Build Path > Remove from Build Path.

Cái mà về cơ bản bạn vừa làm được bổ sung các trình điều khiển kết nối DB2 và các tệp JAR thời gian chạy pureQuery vào tệp EAR mà về cơ bản triển khai cho WebSphere Application Server. Nếu không thực hiện việc này ứng dụng của bạn trên WebSphere Application Server sẽ không biết được vị trí để lấy các lớp được chứa trong các JAR này và sẽ không chạy được.

Thật xuất sắc! Dự án Web động của bạn giờ đã có đầy đủ sẵn sàng cho bạn bắt đầu phát trển. Trước tiên bạn sẽ bắt đầu bằng việc tạo mã trình pureQuery từ các bảng cơ sở dữ liệu.


Tạo ra mã trình pureQuery từ các bảng cơ sở dữ liệu của bạn

Với dự án đã sẵn sàng để thực hiện của mình, bạn sẽ tạo mã trình pureQuery từ các bảng cơ sở dữ liệu. Nhưng trước khi bạn có thể thực hiện việc đó, bạn sẽ tìm hiểu lược đồ cơ sở dữ liệu và thêm một vài dòng mẫu.

Xem phần tải xuống cho các bảng mẫu và phần còn lại của mã nguồn để đi kèm.

Lược đồ cơ sở dữ liệu

Cho dù bạn chọn bất kỳ cơ sở dữ liệu nào để sử dụng, bạn đều cần phải tạo ra các bảng và chèn một vài dữ liệu kiểm tra cho các trình khởi động. Trong phạm vi cơ sở dữ liệu WEALTH, hãy tạo ra ba bảng:

USERS
Chứa mật khẩu và định danh người dùng của những người dùng được phép
SECURITIES
Chứa cổ phiếu và quyền chọn cổ phần cho từng người dùng
REALESTATE
Chứa tài sản bất động sản cho từng người dùng

Về phần lược đồ của mỗi bảng, đây là lược đồ cho bảng USERS:

  • userid varchar(50) NOT NULL PRIMARY KEY
  • password varchar(50) NOT NULL

Ví dụ 1 trình bày dữ liệu mẫu cho bảng USERS.

Ví dụ 1. Dữ liệu mẫu cho bảng USERS
"tyler","tyler"
"hilbilly","pass"

Đây là lược đồ cho bảng SECURITIES:

  • autoid integer NOT NULL PRIMARY KEY AUTO_INCREMENT
  • userid varchar(50) NOT NULL FOREIGN KEY on users.userid
  • symbol varchar(20) NOT NULL
  • quantity integer NOT NULL
  • securitytype decimal (5,2) NOT NULL

Ví dụ 2 trình bày một vài dữ liệu mẫu cho bảng SECURITIES.

Ví dụ 2. Dữ liệu mẫu cho bảng SECURITIES
"tyler","IBM",100,"stock"
"tyler","IBMDT.X",5,"option"
"hilbilly","XOM",200,"stock"
"hilbilly","XOMDN.X",2,"option"

Chú ý rằng các biểu tượng phải hợp lệ, vì chúng sẽ được sử dụng để truy vấn Yahoo! Finance API và lấy các trích dẫn bị trì hoãn cho từng bảng.

Và đây là lược đồ cho bảng REALESTATE:

  • autoid integer NOT NULL PRIMARY KEY AUTO_INCREMENT
  • userid varchar(50) NOT NULL FOREIGN KEY on users.userid
  • propertyvalue decimal(8,2) NOT NULL
  • address varchar(255) NOT NULL
  • city varchar(100) NOT NULL
  • zip varchar(10) NOT NULL
  • state varchar(100) NOT NULL

Ví dụ 3 trình bày dữ liệu mẫu cho bảng REALESTATE.

Ví dụ 3. Dữ liệu mẫu cho bảng REALESTATE
"tyler",+199999.99,"100 Roy st.","Happy Town","12345","CO"
"hilbilly",+049999.99,"100 Depreciation ln.","Sad Town","12345","AZ"

Bây giờ bạn sẽ tạo ra một biểu mẫu trong ứng dụng cho phép bạn bổ sung thêm dữ liệu một cách thủ công thông qua một biểu mẫu.

Đó là tất cả những gì bạn làm ở đây. Tiếp đến, hãy tạo ra các lớp pureQuery!

Tạo ra mã trình pureQuery: bảng USERS

Bây giờ bạn hãy sẵn sàng tạo ra các lớp pureQuery để hỗ trợ việc phát triển ứng dụng Web của bạn.

  1. Hãy cuộn sang vị trí trong cửa sổ Database Explorer nơi có các bảng cơ sở dữ liệu.
    Hình 22. Xem các bảng cơ sở dữ liệu qua khung nhìn Database Explorer
    Viewing the database tables via the Database Explorer view
  2. Tại đây bạn nhìn thấy ba bảng. Để sinh mã trình pureQuery, nhấn chuột phải vào bảng USERS và chọn Generate pureQuery Code (Tạo Mã trình pureQuery).
    Hình 23. Tạo mã trình pureQuery
    Generating pureQuery code
  3. Để thiết lập danh mục nguồn, nhấn Browse để dẫn hướng đến danh mục src của dự án tài sản bạn đã tạo trước đó. Đặt tên gói là com.ibm.ds.users. Kiểm tra tất cả các hộp để chứa các lớp kiểm tra và thông tin kết nối như trình bày trong Hình 24.
    Hình 24. Cấu hình tạo mã trình pureQuery
    Configuring the pureQuery code generation
  4. Nhấn Next. Cửa sổ Bean Fields (Các trường Bean) mở ra.
    Hình 25. Các trường Bean
    Bean fields
    Chú ý là các trường giống nhau có trong bảng cơ sở dữ liệu hiện ra ở đây. Bạn có thể đặt lại tên Java theo tên được cấp cho biến bằng cách thay đổi các giá trị trong cột Field Name (Tên Trường).
  5. Nhấn Next. Trang cuối cùng được hiển thị, như trong Hình 26.
  6. Chọn các câu lệnh SQL được cấu hình trước để đưa vào bean của bạn bằng cách chọn Generate all SQL statements (Tạo ra tất cả các câu lệnh SQL) và nhấn Finish. Việc này sẽ tạo ra các tệp lớp mới vào thẳng dự án tài sản của bạn.
    Hình 26. Câu lệnh SQL
    SQL statements
  7. Quay lại Bước 1 và nhấn chuột phải vào bảng SECURITIES. Làm theo các bước từ 2 -7 nhưng phải chắc chắn là có đặt tên cho gói bảng chứng khoán là com.ibm.ds.securities.
  8. Quay lại Bước 1 và nhấn chuột phải vào bảng REALESTATE. Làm theo các bước từ 2 -7 nhưng phải chắc chắn là có đặt tên cho gói bảng REALESTATE là com.ibm.ds.realestate.
  9. Trong cửa sổ Bean Fields, đặt lại tên propertyvalue thành propertyValue, như trong Hình 27. Chú ý đến Field Name (Tên Trường) được đặt lại ở trên. Tính năng này tạo cho bạn sự linh hoạt trong các tên đặt cho các trường trong từng bảng của bạn. Các giá trị trong cột Field Type (Kiểu Trường) cũng có thể thay đổi được, nhưng mặc định vẫn hoạt động tốt trong hầu hết các trường hợp.
    Hình 27. Đặt lại tên một trường trong cửa sổ Bean Fields
    Renaming a field in the Bean Fields window
  10. Với mã trình pureQuery được sinh ra cho cả ba bảng, hãy xem dự án của bạn trong khung nhìn Project Explorer, như trong Hình 28. Chú ý bốn gói mới dưới biểu tượng Tài nguyên Java: src.
    Hình 28. Khung nhìn Project Explorer
    The Project Explorer view

Tiếp đến bạn sẽ tăng các lớp được sinh ra bằng một truy vấn SQL bổ sung.

Thêm một truy vấn mới cho các đối tượng REALESTATE và SECURITIES

Do các bảng REALESTATE và SECURITIES chỉ có các truy vấn để lấy toàn bộ các bảng hoặc chỉ để tìm kiếm trên khóa chính, nên bạn cần phải tạo ra một truy vấn mới để có thể, ví dụ như, lấy tất cả các bản ghi REALSTATE cho một định danh người dùng đã định.

  1. Mở lớp giao diện RealestateData.java trong gói com.ibm.ds.realestate, và thêm ba dòng dưới đây từ Ví dụ 4.
    Ví dụ 4. Truy vấn mới để lấy tất cả các bản ghi REALESTATE cho một định danh người dùng đã định
          @Select(sql="select AUTOID, PROPERTYVALUE, ADDRESS, CITY,"+
             " ZIP, \"STATE\", USERID from REALESTATE where USERID = ?")
          Iterator<Realestate> getRealestates(String userid);
  2. Một khi bạn lưu tệp tin, các tệp tin khác phụ thuộc vào giao diện này sẽ tự động được cập nhật! Lớp RealestateDataImpl bây giờ đã sẵn sàng cho bạn thêm truy vấn SQL mới này, như bạn thấy sau này khi bạn tạo ra trang Web JSP tương ứng.
  3. Bây giờ hãy thực hiện tương tự cho tệp tin SecuritiesData.java trong gói com.ibm.ds.securities (xem Ví dụ 5).
    Ví dụ 5. Truy vấn để lấy các bản ghi SECURITIES
          @Select(sql="select AUTOID, USERID, SYMBOL, QUANTITY,"+
             " SECURITYTYPE from SECURITIES where USERID = ?")
          Iterator<Securities> getSecuritiess(String userid);

Lớp SecuritiesDataImpl hiện giờ đã sẵn sàng cho bạn sử dụng truy vấn mới này.


Tạo JSP để sử dụng các lớp pureQuery mới dùng Rational Application Developer

Bây giờ bạn có tất cả các lớp này để phát triển ứng dụng Web động của bạn hiệu quả hơn trong thời gian ít hơn. Trong phần này bạn sẽ tạo ra năm tệp JSP mới để gộp cả ứng dụng Web của bạn, tiếp đến là triển khai và kiểm tra trên WebSphere Application Server.

Trang đăng nhập

Để tạo trang đăng nhập cho phép người dùng của bạn đăng nhập:

  1. Nhấn chuột trái vào danh mục WebContent và chọn New > Web Page.
    Hình 29. Tạo một trang Web mới
    Creating a new Web page
  2. Cửa sổ New Web Page (Trang Web Mới) mở ra. Định rõ các chi tiết của trang Web mới của bạn.
    Hình 30. Cấu hình một trang Web mới
    Configuring a new Web page
  3. Đặt tên tệp tin này là login.jsp.
  4. Hãy chắc chắn là giá trị của trường danh mục là /wealth/WebContent/.
  5. Chọn JSP cho Template.
  6. Nhấn Finish để tạo tệp tin.
  7. Quay lại và lặp lại các Bước 1-6, nhưng thay vì tạo ra login.jsp, hãy tạo bốn tệp này: welcome.jsp, logout.jsp, securities.jsp, realestate.jsp.

Bạn sẽ tìm hiểu thêm về từng tệp JSP này và mã hóa chúng trong phần sau của phần này.

Tốt! Giờ hãy tiếp tục và bắt đầu mã hóa JSP!

Mã hóa các tệp JSP

Bắt đầu với trang login.jsp và thay đổi mẫu được tạo cho bạn, như trong Hình 6.

Ví dụ 6. Mã hóa trang đăng nhập
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="users" class="com.ibm.ds.users.UsersDataImpl"
             scope="page" /> 
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="com.ibm.ds.users.Users" %>
<%@page import="pureQuery.example.*" %>
<%@page import="com.ibm.pdq.runtime.*" %>
<html>
<head>
<title>login</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<h1>Login</h1>
<!-- database connection will be made using URL:
     jdbc:db2://localhost:50000/WEALTH
     on users table. Success takes the user to the welcome page. -->
<%
    
    String userid = request.getParameter("userid");
    String password = request.getParameter("password");
    
    if((userid != null && !userid.equals("")) &&
       (password != null && !password.equals(""))){
        Data d = SampleUtil.getData("jdbc:db2://localhost:50000/WEALTH",
                 "<enter_your_username>", "<enter_your_password>");
        users.setData(d);
        Users u = users.getUsers(userid);
        
        if(u != null && u.getPassword().equals(password)){
            session.setAttribute("userid", userid);
            response.sendRedirect("welcome.jsp");
        }
        else{
            out.println("Error logging in.<br/><br/>");
        }
    }
    else if(request.getParameter("login") != null)
        out.println("You must enter a userid and password.<br/><br/>");
%>
<form method="post">
    userid: <input name="userid"/><br/>
    Password: <input name="password" type="password"/><br/>
    <input type="submit" name="login" value="Login"/>
</form>
</body>
</html>

Chú ý <jsp:useBean tag /> trên dòng thứ hai. Tại đây bạn vừa xác định lớp UsersDataImpl cho ứng dụng bằng JSP của bạn. Chú ý cách nó được sử dụng trong mã trình JSP trong phạm vi các thẻ <% %>. Tiếp theo, không kém phần quan trọng là ba câu lệnh nạp, tiếp đến là mọi thứ trong phạm vi các thẻ <body>...</body>.

Trước tiên hãy xem biểu mẫu được tạo phía dưới nơi bạn nhập các trường cho mật khẩu và định danh người dùng, bằng nút Login (Đăng nhập). Khi trình biểu mẫu, bạn lấy các trường và kiểm tra tính hợp lệ của chúng. Sau đó, bạn kết nối với cơ sở dữ liệu sử dụng lớp tiện ích pureQuery đã được tạo ra. (pureQuery.example.SampleUtil). Sau đó bạn đặt giá trị dữ liệu (có chứa kết nối tới cơ sở dữ liệu) trong biến người dùng (bean được thông báo ở đầu trang). Bây giờ bạn có thể chạy các truy vấn trên cơ sở dữ liệu sử dụng các lớp pureQuery.

Truy vấn đầu tiên bạn thực iện sử dụng mã trình pureQuery là một truy vấn tìm nạp tên người sử dụng phù hợp từ cơ sở dữ liệu. Nếu mật khẩu được trả lại phù hợp, bạn đặt biến phiên, định danh người dùng, cho định danh người dùng được cấp và chuyển hướng người dùng sang trang welcome.jsp. Nếu không xác nhận được, bạn sẽ nhận được kết quả là không đăng nhập được, và nếu các giá trị định danh người dùng và mật khẩu không hợp lệ, bạn khai báo như vậy với đầu ra.

Xem một trang đăng nhập.

Hình 31. Trang đăng nhập
The login page

Sau khi đăng nhập, bạn sẽ được gửi đến trang welcome.jsp, trang mà bây giờ bạn sẽ xác định.

Trang chào mừng

Trang chào mừng giống như trang đích đến cho máy khách của công ty quản lý tài sản của bạn. Do vậy mà, nó là một tệp tin khá đơn giản, nên hãy xác định nó như trong Ví dụ 7.

Ví dụ 7. Xác định trang Web welcome.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>welcome</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<!-- If userid session variable is not null then the user is logged in. -->
<%
    String userid = (String)session.getAttribute("userid");
    if(userid == null){
        response.sendRedirect("login.jsp");
    }
%>
<h1>Welcome <% out.print(userid); %>!</h1>
See your <a href="securities.jsp">securities</a><br/>
See your <a href="realestate.jsp">real estate</a><br/><br/>
<a href="logout.jsp">logout</a>
</body>
</html>

Hãy chắc chắn là biến phiên định danh người dùng có tồn tại, và nếu không có biến đó, hãy đưa người dùng trở lại trang Web login.jsp. Mặt khác, thực thi mã trình tiếp tục tại ví trí trang chào mừng người dùng, và hiển thị ba liên kết: Một đến trang chứng khoán, một liên kết khác đến trang bất động sản, và một liên kết khác đến trang đăng xuất. Hãy kiểm tra thực thi này trong Hình 32.

Hình 32. Trang chào mừng
The welcome page

Tốt rồi. Bây giờ hãy tiếp tục và xác định trang đăng xuất.

Trang đăng xuất

Trang đăng xuất xóa biến phiên định danh người dùng, khóa các truy cập thêm vào hệ thống. Xác định trang này, như trong Ví dụ 8.

Ví dụ 8. Xác định trang Web đăng xuất
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>logout</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<!-- Logging out by resetting the userid session variable to false. -->
<%
    String userid = (String)session.getAttribute("userid");
    if(userid != null){
        session.setAttribute("userid", null);
        response.sendRedirect("login.jsp");
    }
%>
</body>
</html>

Không có gì được hiển thị nếu người dùng không được đăng nhập, nhưng nếu người dùng được đăng nhập (định danh người dùng không hợp lệ), biến phiên định danh người dùng được đặt là không hợp lệ, và người dùng được chuyển hướng lại trang đăng nhập. Do đó bây giờ hãy thử nhấn liên kết đăng xuất từ trang chào mừng, bạn sẽ được đưa trở lại trang đăng nhập.

Hình 33. Quay lại trang đăng nhập
Back to the login page

Tiếp theo bạn sẽ mã hóa trang bất động sản nên khách có thể xem và nhập các tài sản bất động sản của họ.

Trang bất động sản

Để tạo một trang bất động sản cho người dùng có thể xem tài sản bất động sản của họ và nhập các tài sản mới, hãy xác định trang Web realstate.jsp, như trong Ví dụ 9.

Ví dụ 9. Xác định trang Web bất động sản
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="realestate" class="com.ibm.ds.realestate.RealestateDataImpl"
             scope="page" /> 
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="java.util.Iterator" %>
<%@page import="com.ibm.ds.realestate.Realestate" %>
<%@page import="pureQuery.example.*" %>
<%@page import="com.ibm.pdq.runtime.*" %>
<%@page import="java.math.BigDecimal" %>
<html>
<head>
<title>realestate</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<!-- Here we login to the database again to fetch all real
     estate holdings in the
     realestate table, same database connection URL as before. -->
<h1>Your realestate holdings</h1>
<table border="1"><tr><th>Address</th>
                 <th>City</th><th>Zip</th>
<th>State</th><th>Value</th></tr>
<%
    String userid = (String)session.getAttribute("userid");
    if(userid == null){
        response.sendRedirect("login.jsp");
    }
    Data d = SampleUtil.getData("jdbc:db2://localhost:50000/WEALTH",
             "<enter_your_username>", "<enter_your_password>");
    realestate.setData(d);
    Iterator i = realestate.getRealestates(userid);
    
    Realestate curr = null;
    
    double total = 0;
    while(i.hasNext()){
        curr = (Realestate) i.next();
        out.println("<tr><td>"+curr.getAddress()+"</td>
		                                   <td>"+curr.getCity()+
                    "</td><td>"+curr.getZip()+"</td>
					                       <td>"+curr.getState()+
                    "</td><td>$"+curr.getPropertyValue()+"</td>
					                       </tr>");
        total += curr.getPropertyValue().doubleValue();
    }
    if(total > 0)
        total = Math.round(total*100.0)/100.0;
%>
</table>
<h3>Total value: $<% out.print(total); %></h3>
<h4>Enter new real estate:</h4>
<%
    String address = request.getParameter("address");
    String city = request.getParameter("city");
    String zip = request.getParameter("zip");
    String state = request.getParameter("state");
    String value = request.getParameter("value");
    if(request.getParameter("create") != null){
        if(!address.equals("") && !city.equals("") &&
           !zip.equals("") && !state.equals("") && !value.equals("")){
            realestate.createRealestate(new BigDecimal(value),
                address, city, zip, state, userid);
            response.sendRedirect("realestate.jsp");
        }
        else
            out.println("You must fill in all fields.<br/><br/>");
    }
 %>
<form method="post">
    Address: <input name="address"/><br/>
    City: <input name="city"/><br/>
    Zip: <input name="zip"/><br/>
    State: <input name="state"/><br/>
    Value: $<input name="value"/><br/>
    <input type="submit" name="create" value="Create"/>
</form>
<a href="welcome.jsp">back</a>
</body>
</html>

Trang này rất giống trang login.jsp nơi bạn vừa khai bean bất động sản ở đầu trang, cùng với một vài câu lệnh nạp của các lớp bạn sẽ sử dụng thông qua trang Web JSP này.

Bắt đầu tại đầu thẻ <body>, mở đầu của một bảng được cài đặt để hiển thị tất cả tài sản bất động sản. Tại đây bạn kết nối lại với cơ sở dữ liệu và hãy chú ý đây là nơi bạn sử dụng các câu lệnh pureQuery mới mà bạn đã tạo ra trong lớp realestateData.java bằng cách truy vấn cơ sở dữ liệu trên định danh người dùng chỉ để truy lục một danh sách các bản ghi phù hợp. Những thứ này sau đó được hiển thị cho trình duyệt trong phạm vi bảng, tiếp đến là một giá trị tổng của các tài sản bất động sản của người dùng.

Cuối cùng, cài đặt một biểu mẫu để lấy đầu vào cho các tài sản bất động sản. Việc nhập theo dữ liệu hợp lệ vào biểu mẫu này gọi chức năng realestate.createRealestate() của bean bất động sản. Sau khi thêm thành công bản ghi bất động sản mới, người dùng được chuyển hướng trở lại cũng trang đó. Nếu nhập dữ liệu không hợp lệ, nó sẽ được thông báo bằng một câu lệnh đầu ra.

Đăng nhập vào hệ thống sử dụng "hilbilly", và sau đó xem trang Web bất động sản, như trong Hình 34.

Hình 34. Trang Web bất động sản
The realestate Web page

Nhấn Create để chạy mã trình và thêm bản ghi bất động sản mới vào hệ thống.

Hình 35. Nhập một bản ghi bất động sản mới
Entering a new realestate record

Bản ghi được thêm thành công, và tất cả được cập nhật

Tiếp đến bạn sẽ chuyển sang trang chứng khoán nơi bạn sẽ truy vấn Yahoo! Finance API.

Trang chứng khoán

Hiện giờ bạn đang ở trang cuối cùng, nơi người dùng sẽ có thể nhìn thấy các giá trị bị trì hoãn của tài sản chứng khoán. Xác định trang này, như trong Ví dụ 10.

Ví dụ 10. Xác định trang Web chứng khoán
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="securities" class="com.ibm.ds.securities.SecuritiesDataImpl"
             scope="page" /> 
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@page import="java.util.Iterator" %>
<%@page import="com.ibm.ds.securities.Securities" %>
<%@page import="pureQuery.example.*" %>
<%@page import="com.ibm.pdq.runtime.*" %>
<%@page import="java.net.*" %>
<%@page import="java.io.*" %>
<html>

<head>
<title>securities</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>
<!-- Here we login to the database to fetch all securities
     in the securities table,
     same database URL as before. -->
<h1>Your stock and options holdings</h1>
<table border="1"><tr><th>Sybmol</th><th>
                   Description</th><th>Quantity*</th>
<th>Type</th><th>Current price**</th>
                                       <th>Total value</th>
<th>Quote date</th></tr>
<%
    String userid = (String)session.getAttribute("userid");
    if(userid == null){
        response.sendRedirect("login.jsp");
    }
    Data d = SampleUtil.getData("jdbc:db2://localhost:50000/WEALTH",
             "<enter_your_username>", "<enter_your_password>");
    securities.setData(d);
    Iterator i = securities.getSecuritiess(userid);
    
    Securities curr = null;
    double total = 0;
    while(i.hasNext()){
        curr = (Securities) i.next();
        
        String str = "http://finance.yahoo.com/d/quotes.csv?s="+
                     curr.getSymbol()+"&f=nd1l1";
        URL url = new URL(str);
        URLConnection conn = url.openConnection();
        DataInputStream in =
            new DataInputStream ( conn.getInputStream (  )  ) ;
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String line = null;
        if(br.ready())
            line = br.readLine();
        
        String company = line.substring(line.indexOf('"')+1,
                             line.indexOf('"', line.indexOf('"')+1));
        
        String date = line.substring(line.indexOf("\",\"")+3,
                          line.indexOf("\",", line.indexOf("\",\"")+4));
        
        String price = line.substring(line.indexOf("\",",
                                          line.indexOf("\",\"")+4)+2);
        
        int multQuantity = curr.getQuantity();
        if(curr.getSecuritytype().equals("option"))
            multQuantity = curr.getQuantity()*100;
        
        float totalValue = Float.parseFloat(price)*multQuantity; 
        totalValue = (float)(Math.round(totalValue*100.0)/100.0);
        
        out.println("<tr><td>"+curr.getSymbol()+"</td>
		                                             <td>"+company+
                    "</td><td>"+curr.getQuantity()+"</td><td>"+
                    curr.getSecuritytype()+"</td><td>$"+price+
                    "</td><td>$"+totalValue+"</td><td>"+date+"
                    </td></tr>");
        
        total += totalValue;
    } 
    if(total > 0)
        total = Math.round(total*100.0)/100.0;

%>
</table>
<h3>Total value: $<% out.print(total); %></h3>
* # of contracts for options<br/>** Delayed quotes,
as retrieved from Yahoo! Finance&trade;
<br/><br/><a href="welcome.jsp">back</a>
</body>
</html>

Bỏ qua các đặc điểm giống với trang Web bất động sản, tại đây bạn truy vấn cơ sở dữ liệu cho tất cả chứng khoán của người dùng này, và thiết đặt một bảng để hiển thị chúng. Tiếp đến đối với mỗi chứng khoán, bạn truy vấn Yahoo! Finance API bằng các thiết lập URL kết nối với trang Web, và lấy nhanh các kết quả vào biến dòng bằng lệnh gọi tới dòng = br.readLine();. Ba dòng tiếp theo phân tích các kết quả thành ba biến. Hãy chú ý rằng nếu securityType bằng với "quyền chọn", số lượng để điện toán giá trị của chứng khoán được nhân với 100 (vì mỗi hợp đồng quyền chọn đều có 100 chứng khoán).

Xem hình ảnh đầu tiên của trang chứng khoán khi hoạt động trong Hình 36 (được đăng nhập với người dùng tên tyler).

Hình 36. Trang Web chứng khoán
The securities Web page

Giống như một người chuyên nghiệp, bạn vừa hoàn thành xong mã trình! Bây giờ là lúc để thử và triển khai trên WebSphere Application Server!

Triển khai và kiểm tra trên WebSphere Application Server

Để chạy ứng dụng của bạn trên WebSphere Application Server, vẫn còn một vài bước cuối cùng để chuẩn bị ứng dụng của bạn.

  1. Nhấn chuột phải vào login.jsp trong cửa sổ Project Explorer và chọn Run As > Run on Server.
    Hình 37. Chạy trên WebSphere Application Server
    Running on WAS
  2. Cửa sổ Run on Server mở ra.
    Hình 38. Xác định một máy chủ mới
    Defining a new server
  3. Chọn Mannually define a new server (Xác định thủ công một máy chủ mới) và chọn WebSphere v6.1 Server dưới danh mục IBM. Nếu mọi thứ có vẻ ổn rồi, nhấn Next.
  4. Cửa sổ WebSphere Server Settings mở ra.
    Hình 39. Cấu hình các cài đặt máy chủ WebSphere
    Configuring WebSphere server settings
  5. Giữ nguyên mặc định và nhấn Next.
  6. Cửa sổ Add and Remove Projects (Thêm và Gỡ các Dự án) mở ra. Hãy chắc chắn là dự án wealthEAR được liệt kê dưới các dự án Configured.
    Hình 40. Thêm và gỡ các dự án
    Add and remove projects
  7. Nhấn Next.
    Hình 41. Chọn các tác vụ
    Select tasks
  8. Thế là xong rồi, vì thế hãy nhấn Finish.

Máy chủ nên khởi động bây giờ. Mở một trình duyệt và xem trang đăng nhập tại địa chỉ URL sau: http://localhost:9080/wealth/login.jsp.

Bây giờ bạn đã có một ứng dụng Rational Application Developer hoàn chỉnh thực sự với kinh nghiệm của Data Studio.


Tóm tắt

Bạn vừa hoàn thành thành công bài hướng dẫn này và thành thạo việc sử dụng hỗ trợ pureQuery cho các trang Web JSP của mình. Bạn vừa cài đặt Rational Application Developer với Data Studio, tạo thành công một Dynamic Web Project được kích hoạt pureQuery (Dự án Web động được kích hoạt pureQuery), sinh mã trình pureQuery từ các bảng cơ sở dữ liệu của bạn, và viết năm trang Web JSP để minh họa cho tính năng của chúng.

Hãy chắc chắn là quay trở lại để xem tiếp Phần 2, phần mà bạn sẽ học cách kiểm tra ứng dụng Web dựa trên Java của bạn để tìm ra các khiếm khuyết và sửa chúng với sự trợ giúp của AppScan!


Tải về

Mô tảTênKích thước
Part 1 source coder-appscan1-code.zip5.8MB

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Rational, Information Management
ArticleID=424066
ArticleTitle=Tạo các ứng dụng bảo mật Java một cách hiệu quả, Phần 1
publish-date=08282009