Bài giảng Lập trình Java 5 - Bài 2: Controller

Sử dụng thành thạo @RequestMaping

Ánh xạ nhiều action

Ánh xạ phân biệt POST|GET

Ánh xạ phân biệt tham số

Nắm vững phương pháp nhận tham số

Sử dụng HttpServletRequest

Sử dụng @RequestParam

Sử dụng JavaBean

Sử dụng @PathVariable để nhận dữ liệu từ URL

Sử dụng @CookieValue để nhận cookie

Hiểu rõ kết quả của phương thức action

pdf 32 trang kimcuc 8140
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java 5 - Bài 2: Controller", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình Java 5 - Bài 2: Controller

Bài giảng Lập trình Java 5 - Bài 2: Controller
LẬP TRÌNH JAVA 5
BÀI 2: CONTROLLER
MỤC TIÊU
Sử dụng thành thạo @RequestMaping
Ánh xạ nhiều action
Ánh xạ phân biệt POST|GET
Ánh xạ phân biệt tham số
Nắm vững phương pháp nhận tham số
Sử dụng HttpServletRequest
Sử dụng @RequestParam
Sử dụng JavaBean
Sử dụng @PathVariable để nhận dữ liệu từ URL
Sử dụng @CookieValue để nhận cookie
Hiểu rõ kết quả của phương thức action
@REQUESTMAPPING (1)
Annotation @RequestMapping được sử dụng
để ánh xạ một action đến một phương thức
action trong Controller
Khi người dùng đưa ra yêu cầu say-hello.htm
thì phương thức action sayHello() sẽ thực hiện
Trong một lớp @Controller có thể chứa nhiều
phương thức action.
@REQUESTMAPPING (2)
@RequestMapping(“say-hello”) là cách viết thu
gọn của @RequestMapping(value=“say-hello”)
@RequestMapping() có thể được sử dụng để
đặt trên lớp Controller để ánh xạ chung cho
nhiều action method
@REQUESTMAPPING (3)
Hai cách ánh xạ này
hoàn toàn tương
đương nhau
DEMOHomeController+ home/index
+ home/about
+ home/contact
+ home/feedback
+ home/faq
PHÂN BIỆT POST|GET (1)
Trong Servlet khi yêu cầu từ người dùng gửi đến
server với phương thức web là GET thì phương
thức doGet() của Servlet được thực hiện, ngược
lại nếu phương thức web là POST thì doPost() 
được thực hiện
Chú ý:
Trường hợp POST duy nhất là khi bạn submit một
form có thuộc tính method=“POST”.
Các trường hợp GET thường gặp
Nhập url vào ô địa chỉ của trình duyệt web
Nhấp vào liên kết
Submit form với method=“GET”
PHÂN BIỆT POST|GET (2)
Trong Spring MVC phân biệt POST|GET thông
qua tham số method của phương thức action
Như vậy khi yêu cầu user/login.htm được gửi
đến server, Spring MVC sẽ gọi phương thức
login() nào là tùy thuộc vào phương thức web 
GET hay POST
PHÂN BIỆT POST|GET (3)
Thông thường GET là để vào giao diện còn POST 
được sử dụng để xử lý các nút chức năng
DEMO
UserController
+ GET: user/login
+ POST: user/login
PHÂN BIỆT THAM SỐ (1)
Trong Spring MVC không những hỗ trợ gọi
phương thức action phân biệt theo phương thức
web mà còn cho phép phân biệt theo tham số
truyền theo
Với định nghĩa này khi gọi say-hello.htm phải có
tham số mvc thì phương thức sayHello() mới
được thực hiện
PHÂN BIỆT THAM SỐ (2)
Khi yêu câu student.htm thì phương thức nào sẽ
thực hiện?
 Nếu có tham số btnInsert, 
btnUpdate, btnDelete hoặc
lnkEdit thì các phương thức
insert(), update(), delete() 
hoặc edit() sẽ thực hiện
 Nếu không có các tham số
trên thì index() sẽ thực hiện
 Nếu có nhiều hơn 1 tham số
trên thì sẽ báo lỗi
TRANG SAU SẼ GỌI STUDENT.HTM
 [Thêm]=>insert()
 [Cập nhật]=>update()
 [Xóa]=>delete() 
 [Nhập lại]=>index() 
 [Sửa]=>edit()
DEMO
Chạy và giải thích student.htm
LẬP TRÌNH JAVA 5
PHẦN 2
XỬ LÝ THAM SỐ NGƯỜI DÙNG
Tham số là dữ liệu truyền đến server khi có yêu
cầu từ người dùng dưới dạng các trường của
form hoặc chuỗi truy vấn của liên kết
Ví dụ
Khi nhấp vào liên kết sau thì các tham số mark và
name sẽ được truyền đến phương thức action
Hello
Khi nhấp vào nút Hello của form sau thì các tham số
mark và name sẽ được truyền đến phương thức
action
Hello
XỬ LÝ THAM SỐ
Spring MVC cung cấp các phương pháp nhận
tham số sau đây
Sử dụng HttpServletRequest tương tự Servlet
Sử dụng @RequestParam
Sử dụng JavaBean
Sử dụng @PathVariable để nhận một phần trên URL
SỬ DỤNG HTTPSERVLETREQUEST
Chỉ cần thêm đối số HttpServletRequest vào
phương thức action là có thể nhận được tham số
người dùng như Servlet
SỬ DỤNG @REQUESTPARAM (1)
Sử dụng @RequestParam thể hiện tính chuyên
nghiệp hơn và có thể chuyển đổi tự động sang 
kiểu mong muốn.
Ví dụ sau được sử dụng để nhận các tham số có
tên là id và password
SỬ DỤNG @REQUESTPARAM (2)
@RequestParam(value, defaultValue, required) là
dạng đầy đủ với ý nghĩa của các tham số:
value: chỉ ra tên tham số muốn nhận
defaultValue: là giá trị mặc định của tham số khi tham
số không tồn tại
required: tham số có bắt buộc hay không
Ví dụ với khai báo nhận tham số sau
@RequestParam(value=“tuoi", defaultValue=“20", 
required=false) Integer age
Tên tham số là tuoi sẽ được nhận vào đối số là age
Nếu không có tham số thì giá trị của age là 20
Tham số tuoi là không bắt buộc
VÍ DỤ
SỬ DỤNG JAVABEAN (1)
Lớp JavaBean là lớp thỏa mãn các qui ước sau
Phải được định nghĩa là public
Phải có constructor không tham số
Đọc ghi dữ liệu thông qua getter/setter
SỬ DỤNG JAVABEAN (2)
Thuộc tính của bean được xác định từ các getter 
và setter bằng cách
Bỏ get và set và đổi ký tự đầu tiên của phần còn lại
sang ký tự thường
Ví dụ lớp User có 2 thuộc tính cho phép đọc/ghi
là id và password
Thuộc tính id được xác định từ getId() và setId()
Thuộc tính password được xác định từ getPassword() 
và setPassword()
Chú ý quan trọng: các trường dữ liệu không phải
là thuộc tính của bean
SỬ DỤNG JAVABEAN (3)
Spring MVC cho phép sử dụng JavaBean để
nhận các tham số cùng tên với các thuộc tính
của bean.
Với ví dụ này thì các thuộc tính id và password 
của đối số user sẽ nhận các giá trị từ các tham số
cùng tên là id và password.
SỬ DỤNG @PATHVARIABLE
Spring MVC cho phép nhận một phần dữ liệu từ
đường dẫn URL
Ví dụ action edit() sau đây sẽ lấy được tên sinh
viên từ URL student/Nguyễn Văn Tèo.htm
Sửa
NHẬN GIÁ TRỊ COOKIE
Trong Servlet bạn có thể nhận cookie thông qua 
HttpServletRequest. Phương pháp này viết mã
khá dài dòng, phức tạp.
Trong Spring MVC bạn có thể sử dụng
@CookieValue để nhận dữ liệu từ cookie
Ví dụ này cho phép sử dụng đối số id để nhận
giá trị của cookie có tên là userid
@COOKIEVALUE
@CookieValue(value, defaultValue, required) 
có 3 tham số và ý nghĩa như sau
Value: tên cookie muốn nhận dữ liệu
defaultValue: giá trị mặc định của cookie
Required: có bắt buộc cookie userid có tồn tại hay 
không
Ví dụ
@CookieValue(value="userid", defaultValue="poly", 
required=false) String id
Sử dụng đối số id để nhận giá trị của cookie có tên là userid
Nếu cookie không tồn tại thì giá trị của id là poly
Cookie này cho phép không tồn tại
DEMO
Đăng nhập 2 có ghi nhớ tài khoản
ĐẦU RA CỦA PHƯƠNG THỨC ACTION
Return của phương thức action không đơn thuần
phải là tên của view mà có thể là 1 trong 3 
trường hợp sau
Tên view => ViewResolver sẽ xử lý để xác định view
 return “”
Nội dung => được trả trực tiếp về client mà không
qua ViewResolver. Trường hợp này phương thức
action phải được chú thích bởi @ResponseBody
 return “”
Lời gọi một action khác
 return “redirect:/”
ĐẦU RA CỦA PHƯƠNG THỨC ACTION
Trường hợp này rất hữu ích
cho tương tác JSON, 
JavaScript, XML
TỔNG KẾT NỘI DUNG BÀI HỌC
Sử dụng thành thạo @RequestMaping
Ánh xạ nhiều action
Ánh xạ phân biệt POST|GET
Ánh xạ phân biệt tham số
Nắm vững phương pháp nhận tham số
Sử dụng HttpServletRequest
Sử dụng @RequestParam
Sử dụng JavaBean
Sử dụng @PathVariable để nhận dữ liệu từ URL
Biết cách nhận Cookie với @CookieValue
Hiểu rõ kết quả của phương thức action

File đính kèm:

  • pdfbai_giang_lap_trinh_java_5_bai_2_controller.pdf