Giáo trình Lập trình Java - 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
Biết cách nhận Cookie với @CookieValue
Hiểu rõ kết quả của phương thức action
32 trang |
Chia sẻ: huongthu9 | Lượt xem: 453 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Lập trình Java - Bài 2: Controller, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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
Các file đính kèm theo tài liệu này:
- giao_trinh_lap_trinh_java_bai_2_controller.pdf