• Thế Giới Giải Mã

    Bí ẩn nhân loại Leonardo Da Vinci

  • Thế Giới Giải Mã

    Anh hùng thầm lặng Nikola Tesla

  • Thế Giới Giải Mã

    Thần đèn Thomas Edison

  • Thế Giới Giải Mã

    Người thôi miên Adolf Hitler

Showing posts with label Struts 1 Framework. Show all posts
Showing posts with label Struts 1 Framework. Show all posts

21 October 2016

Struts Framework: Validation Register (Validation Framework) [P7]

Cấu trúc Validation Login [Phần 6] đã xong!
[Phần 7] Validation Register bằng Framework
- Hỗ trợ chức năng validate trên form trên cả client (browser) lẫn server.- Phát sinh cả code javascript trên server để validate form nhập liệu.- Sử dụng sub class của DynaValidatorForm để validate trên server.- Sử dụng tập tin validator-rules.xml
  • Định nghĩa các constraints dùng javascripts cho validate
  • Các constraints này được áp dụng trong tập tin validation.xml (xác định validate cụ thể cho từng thuộc tính hay từng field áp dụng cho form bean)
- Config để validator framework để hỗ trình bày error trên client thông qua file truts-config.xml và tạo message báo lỗi qua *.properties- Kích hoạt validation trên action bằng cách thiết lập thuộc tính validation=“true” trong action-mapping- Các thành phần trong tập tin validator-rules.xml
- form-validation: root của tài liệu xml này
- global: xác định thành phần của rules và có thể truy cập từ các form.
- validator: xác định đối tượng validator – constraints
  • name: tên validator
  • classname: tên class form bean
  • method: tên phương thức trong form bean
  • methodParams: các tham số truyền cho phương thức
  • msg: các message báo lỗi
  • depends: xác định validation constraints được áp dụng cho từng đối tượng cụ thể
  • jsFunctionName: tên của chức năng javascript
  • javascript: chứa code validation của javascript trên client
- Các thành phần trong tập tin validation.xml
- form-validation: root
- global: chứa đựng các constant element.
- constant: xác định các pattern
- constant-name: tên constant
- constant-value: giá trị constant
- formset: chứa đựng các form element.
- form: xác định thành phần của form
  • name: tên form chứa các field element xác định thành phần cần validation
- field: xác định validation trên control trên form
  • property: xác định tên field trên form bean
  • depends: xác định constraint áp dụng từ validator-rules.xml
  • Chứa các thiết lập cho tham số qua arg
- arg:
  • key dùng xác định giá trị trong việc xuất thông báo lỗi
  • Chứa các khai báo thông qua thuộc tính var để xác định các ràng buộc cần validation
- var:
  • var-name: điều kiện validation
  • var-value: công thức validation
-Cấu hình register.jsp
 -Form bean ở phần trước đã tạo
-Mapping sửa lại phần validate="false" thành validate="true"
-Mở phần validation.xml cấu hình cho username, password, lastname như sau:
<formset>
<!-- An example form -->
    <form name="RegisterActionForm">

        <field property="username" depends="required,mask">
            <arg0 key="Username"  resource="false" />
            <var>
                <var-name>mask</var-name>
                <var-value>^[a-zA-Z]*$</var-value>
            </var>
        </field>  

        <field property="password" depends="required, minlength, maxlength">
            <arg0 key="Password" resource="false" />
            <arg1 key="${var:minlength}" name="minlength" resource="false" />
            <var>
                <var-name>minlength</var-name>
                <var-value>6</var-value>
            </var>
            <arg1 key="${var:maxlength}" name="maxlength" resource="false" />
            <var>
                <var-name>maxlength</var-name>
                <var-value>20</var-value>
            </var>

        </field>

        <field property="lastname" depends="required,mask"> 
            <arg0 key="Lastname"  resource="false" />
            <var>
                <var-name>mask</var-name>
                <var-value>^[a-zA-Z]*$</var-value>
            </var>
        </field>

    </form>

</formset>
-Chỉnh sửa RegisterActionForm extends thư viện có sẵn ValidatorForm quan sát thật kỹ những chỗ khoanh đỏ.
-Ở RegisterStrutsAction chúng ta lấy giá trị bằng request và truyền nó qua method insert
-Build, deploy, run đến trang register để test.
-Khi để trống.
 -Nhập sai pattern username ^[a-zA-Z]*$
-Nhập đúng username
Nhập sai pattern Lastname ^[a-zA-Z]*$
-Nhập đúng Lastname
-Nhập password quá ngắn!
-Nhập password quá dài!
-Nhập đúng password.
Download (Zip import Netbeans) Xem thêm |

20 October 2016

Struts Framework: Validation Login [P6]

Cấu trúc Update [Phần 5] đã xong
[Phần 6] Sử dụng Validation trong Struts Framework
Khái niệm về quản lý error trong Struts Framework (Struts Error Management)
A - Struts hỗ trợ 02 class quản lý lỗi đó là ActionError ActionErrors
  • Class ActionError dùng để xử lý và trình bày lỗi khi lỗi được phát sinh thông qua ActionMessage. ActionError class nằm trong gói org.apache.struts.action
  • Class ActionErrors dùng để tạo ra collection để thu thập một tập lỗi trong ActionError.
  • Class ActionMessage
  1. Chứa đựng thành phần liên quan đến message liên quan đến lỗi trong 02 thành phần class nêu ở trên
  2. Một object ActionMessage chứa 02 thành phần: phần thứ nhất là key dùng để truy cập message, phần còn lại dùng để truyền tham số (place holder) để đưa các thông tin cần thiết để tạo ra message có nghĩa

B - Để xử lý lỗi trong quá trình nhập liệu Struts đưa ra 02 cách để xử lý đó là lập trình trực tiếp trong codekhai báo thông qua việc sử dụng validation framework – một plugin của Struts Framework
  • Lập trình trực tiếp

-Người lập trình cài đè overriding phương thức validate() trong Action Form Bean-Thực hiện cài đặt việc xử lý liên quan đến lỗi của chương trình thông qua các thành phần quản lý lỗi nêu ra ở trên, cụ thể là trong quá trình kiểm tra nếu không thỏa yêu cầu chúng ta sẽ add message sử dụng ActionMessage vào ActionError tương ứng-Cơ chế hoạt động:
-Sau khi user nhập liệu trên form và submit thông tin trở về server-Trong struts framework, request được action Servlet chuyển đến ActionForm, vì action Form đã được cài đặt hàm validate do vậy dữ liệu sẽ được checking trong hàm validate theo nội dung cài đặt-Hàm validate đươc xem như là lính canh hay là đối tượng kiểm soát, nếu như không có Error nào phát sinh thì -request sẽ đuợc chuyển đến Action Class tương ứng được mapping trong struts-config-Ngược lại, khi có lỗi phát sinh, ActionError khác rỗng thì request sẽ không đưa đến Action mà container hay Action Servlet sẽ response lại errors về phía client – browser cho người dùng
  • Validation Framework

- Hỗ trợ chức năng validate trên form trên cả client (browser) lẫn server.- Phát sinh cả code javascript trên server để validate form nhập liệu.- Sử dụng sub class của DynaValidatorForm để validate trên server.- Sử dụng tập tin validator-rules.xml
- Định nghĩa các constraints dùng javascripts cho validate
- Các constraints này được áp dụng trong tập tin validation.xml (xác định validate cụ thể cho từng thuộc tính hay từng field áp dụng cho form bean)
- Config để validator framework để hỗ trình bày error trên client thông qua file truts-config.xml và tạo message báo lỗi qua *.properties- Kích hoạt validation trên action bằng cách thiết lập thuộc tính validation=“true” trong action-mapping- Các thành phần trong tập tin validator-rules.xml
- form-validation: root của tài liệu xml này
- global: xác định thành phần của rules và có thể truy cập từ các form.
- validator: xác định đối tượng validator – constraints
  • name: tên validator
  • classname: tên class form bean
  • method: tên phương thức trong form bean
  • methodParams: các tham số truyền cho phương thức
  • msg: các message báo lỗi
  • depends: xác định validation constraints được áp dụng cho từng đối tượng cụ thể
  • jsFunctionName: tên của chức năng javascript
  • javascript: chứa code validation của javascript trên client
- Các thành phần trong tập tin validation.xml
- form-validation: root- global: chứa đựng các constant element.- constant: xác định các pattern
- constant-name: tên constant
- constant-value: giá trị constant
- formset: chứa đựng các form element.
- form: xác định thành phần của form
  • name: tên form chứa các field element xác định thành phần cần validation
- field: xác định validation trên control trên form
  • property: xác định tên field trên form bean
  • depends: xác định constraint áp dụng từ validator-rules.xml
  • Chứa các thiết lập cho tham số qua arg
- arg:
  • key dùng xác định giá trị trong việc xuất thông báo lỗi
  • Chứa các khai báo thông qua thuộc tính var để xác định các ràng buộc cần validation
- var:
  • var-name: điều kiện validation
  • var-value: công thức validation
  • Struts Validation Framework
  • Trong phần code bổ sung trên chúng ta thấy html:message giúp chúng ta lấy tập lỗi về và gán vào attribute error để có thể in ra màn hình tất cả lỗi
  • logic:messagePresent tag được dùng để kiểm tra nếu lỗi khác rỗng thì mới vào phần thân của tag để xử lý
  • Tiếp theo, bởi vì chúng ta cần validation bằng cách lập trình trực tiếp, do vậy chúng ta mở tập tin LoginActionForm.java để cài đặt phương thức validate
  • Trong tập tin LoginActionForm.java, chúng ta gõ chữ valid và nhấn tổ hợp phím ctrl + space bar để chọn hàm validate có tham số HttpServletRequest

  • Chúng ta thực hiện cài đặt hàm validate cụ thể nếu kích thước chuỗi của username là bằng 0 thì chúng ta sẽ add message tương ứng vào ActionMessage và đưa vào ActionErrors, tương tự cho password

Lưu ý:
  • Giá trị tạo lập trong Action Message không phải là giá trị message trình bày mà là key value để chúng ta khai báo trong message resource (tập tin property) để tạo nên sự uyển chuyển trong việc trình bày về phía người dùng
  • Chúng ta nên đặt theo dạng để dễ nhớ và dễ hiểu dạng tên_Form.tên_Field_validation.tên_ràng_buộc


- Chúng ta tìm tập tin ApplicationResources.properties trong com.myapp.struts để bổ sung key message và message tương ứng cần trình bày. Chúng ta truy cập tập tin này trong struts-config đã tự động set default reference đến tập tin này
- Chúng ta bổ sung message (Lưu ý: nên copy toàn từng nhãn dán vào cuối file và đưa ra định nghĩa để tránh sai sót)

  • Chúng ta mở lại tập tin struts-config.xml, di chuyển đến phần action của phần login, chúng ta nhìn thấy như sau

  • Validation được được xác định là false nghĩa là struts sẽ không kích hoạt được hàm validation khi request được chuyển đến action form, do vậy, chúng ta sẽ bỏ thuộc tính này cũng có nghĩa thiết lập validate là true



  •  Chúng ta đã cấu hình hoàn tất validation lập trình trực tiếp cho Login
  • Start Server JBoss, Build Project, Deploy và Test

Khi Chưa nhập
 Để trống password
 Để trống username
 Đăng nhập thành công

Struts Framework: Update JDBC Mysql [P5]

Cấu trúc Delete [Phần 4] đã xong
[Phần 5] Chúng ta thực hiện tiếp tục với chức năng Update lastname và roles

  1. Chúng ta cần phải áp dụng kỹ thuật hidden form field để tạo control textbox ẩn chứa giá trị username cần update để đem dữ liệu về server tìm kiếm user tương ứng
  2. Lần nữa chúng ta phải tạo textbox ẩn thứ 2 để chứa tham số đang search trong trang trước để truyền đến phần xử lý của kết quả trang update để tạo cảm giác lưới được cập nhật. (áp dụng như phần phân tích của delete)
  3. Chúng ta cần biến giá trị của lastname và roles trở thành 02 control textbox và checkbox để người dùng có thể cập nhật giá trị
  4. Để dữ liệu truyền về server xử lý, chúng ta cần phải có form, và ở đây mỗi hàng là một form – nghĩa là có nhiều form. Nếu chúng ta dùng một form thì giá trị tham số trả về luôn là control đầu tiên – dẫn đến kết quả sai lệch - ở đây chúng ta đang muốn cập nhật đúng hàng đang chọn lựa
  5. Chúng ta cập nhật trang show.jsp như sau
-Tạo Action Class tên UpdateStrutsAction để thực hiện delete và xử lý không cần Action Form


-Thực hiện mapping trong struts-config.xml tương tự như delete là chuyển đến action search
-Cấu trúc project cuối cùng được cập nhật như sau
-Build, Deploy và test Project đến trang show
Search a:

 Database gốc:
Update Nerissa:
Cập nhật Database:
Download zip (import Netbeans)

Struts Framework: Delete JDBC Mysql [P4]

Cấu trúc Search và Show [Phần 3] đã xong
[Phần 4] Tạo chức năng Delete để delete một hàng dữ liệu chọn bất kỳ trên trang show
-Chúng ta cần phải áp dụng kỹ thuật URL Writing để cập nhật chuỗi query String truyền về server nhưng ở đây chúng ta phải sử dụng pattern .do
-Chuỗi này cần chứa 02 tham số, tham số thứ nhất chứa giá trị khóa để thực hiện tìm kiếm record cần xóa (username) để đem dữ liệu về server, tham số còn lại chứa tham số đang search trong trang trước để truyền đến phần xử lý của kết quả trang delete để tạo cảm giác lưới được cập nhật. Chúng ta sẽ dùng lại tên biến giống y hệt biến trong trang search vì dưới dạng forward tên biến sẽ truyền lặp lại dẫn đến chúng ta sẽ lấy được tham số ban đầu để thực hiện lại chức năng search
-Link Delete phải thông qua action để điều khiển, do vậy chúng ta phải áp dụng JSTL để tạo link với đầy đủ chuỗi query string

-Chúng ta cập nhật trang show.jsp như sau

-Lưu ý các tên trong khung đỏ là phải bắt buộc tuân thủ để chúng ta có thể thực hiện thao tác đúng đắn cho ứng dụng

-Chúng ta tạo Action Class xử lý trực tiếp không cần Action Form như chức năng search với tên DeleteStrutsAction với chức năng delete là lấy tham số từ request ra như sau



-Ở đây chúng ta thực hiện mapping Action Forward trong action delete nhưng ở đây, chúng tôi làm ví dụ cho thấy từ action này gọi action khác (ở đây delete action sẽ gọi action search), do vậy trong lúc chọn Forward, chúng ta không chọn Resource như các bước trên mà chọn Action và nhấn combo box để chọn action tương ứng
-Chúng ta nhấn Add thì struts-config.xml được cập nhật như sau
-Build, deploy và test project đến chỗ trình bày kết quả của trang search
Search với a:
Database gốc:
Delete Emma Aria:

 Database cập nhật lại:

 

BACK TO TOP

Xuống cuối trang