Lỗi load dữ liệu lên JSP

Chào anh chị ! Em gặp vấn đề như này với web servlet :
Em có một class servlet là ABC.java với annotation là @WebServlet("/ABCurl"), trong này sẽ tạo một list số 1, 2, 3, 4… truyền list này vào request.SetAttribute(“list”,list) và Forward sang trang XYZ.jsp. Trên trình duyệt truy cập theo đường dẫn myweb.com/ABCurl thì trang JSP nhận được list và load bình thường. Giống ví dụ này.


Nhưng khi em mở trang JSP trên browser myWeb.com/XYZ.jsp thì không có dữ liệu vì list chưa được tạo. Em hỏi cách khắc phục ạ vì em thấy web người ta URL có đuôi mở rộng là .jsp nhưng cách em làm là phải vào url của servlet rồi servlet mới chuyển hướng sang JSP. Mở trực tiếp JSP chỉ hiện ra HTML, CSS không có dữ liệu để truyền vào. Em cảm ơn.

Như bạn đã nói “Em có một class servlet là ABC.java với annotation là @WebServlet(”/ABCurl"), trong này sẽ tạo một list số 1, 2, 3, 4… truyền list này vào request.SetAttribute(“list”,list)" -> nếu không truy cập vào request này thì lsao có đc list mà đẩy ra, muốn k dùng luôn jsp thì bạn cần phải get list đc luôn trong jsp.

Cảm ơn anh đã phẩn hồi. Vì em tạo một lớp DAO để kết nối database nếu View là JSP dùng DAO để lấy ra list rồi load lên giao diện thì em thấy không đúng mô hình MVC lắm. Có cách nào không a

bạn thử nói đâu là view, đâu là model đâu là controller mình xem?

@thanghanu98

  • Model là các class Java Beans và các class DAO ( class DAO trả về List).
  • Controller là java servlet lấy dữ liệu từ DAO chuyển qua JSP
  • View là JSP và JSTL.
    Nếu e làm web sẽ thiết kế như vậy.
6 Likes

câu hỏi của mình giống như này nè mọi người https://stackoverflow.com/questions/15839854/how-load-servlet-on-index-jsp

Vậy thì không cho người người dùng truy cập vào từng trang lẻ JSP nha bạn. Theo mô hình MVC thì browser sẽ truy cập vào URL của các thành phần trong controller, và controller sẽ lấy dữ liệu trong model “đổ” vào view và “quăng” file JSP đó xuống browser cho client. Bạn dùng Filter trong servlet để chuyển hướng tất cả các URL truy cập file JSP về URL của controller tương ứng là được

5 Likes

Còn về Model trong mô hình MVC có phải các lớp java beans hay không thì mình không chắc

Bạn tìm hiểu filter thử xem, bắt request cho chuyển hướng vào servlet trước để tạo ra list số 1,2,3,4… xong rồi mới vào trang .jsp

@YenNgoc mình cũng bị giống như bạn
Bạn đã khắc phục được chưa, chỉ giúp mình với.
Cảm ơn nhiều

tải xuống

Không cho user truy cập vào url của file JSP nha bạn, trên thanh bar chỉ làm việc với url của controller thôi nha bạn. VD : https://abc.com/login (path của servlet) chứ không phải https://abc.com/login.jsp (path của file jsp trong folder webcontent) như vậy thì user sẽ không biết được url của file jsp để truy cập còn muốn chắc chắn hơn nữa thì tất cả request cố ý truy cập vào file JSP thì bạn cho redirect về lại url của controller bằng thẻ JSTL hoặc config trong file web.xml

2 Likes

Mình cho user truy cập vào URL của file servlet nằm trong Package Controller mà, còn về phần View thì mình để những file.jsp.
file nằm trong Package Controller thì mình dùng RequestDispatcher để forward đến những file.jsp, chứ mình không cho người dùng trực tiếp truy cập vào file.jsp.

Mình test hàm Main của những file bên Controller thì nó vẫn cho ra List kết quả bình thường, nhưng không thể load lên file.jsp được.

Mình hiểu ý bạn rồi, mình đã sử dụng JSTL và redirect nhưng vẫn không thể load được dữ liệu lên.
Bạn có thể teamview giúp mình được không, cảm ơn bạn nhiều.

Bên servlet bạn phải cho data vào attribute tự đặt tên. VD : request.setAttribute("username", "abcxyz") sau đó đó forward toàn bộ data, request sang trang file JSP. Rồi bên file JSP nhận data bằng cách dùng dấu $ hay kí hiệu gì đó của JSTL mình quên rồi. VD < div >${username} </ div > sẽ ra abcxyz ( xem ví dụ : https://www.roseindia.net/jsp/requestsetattribute.shtml ) còn nếu bạn muốn chèn code java thuần vào file jsp thì dùng Object name = request.getAttribute("username"); sau đó dùng biến name gắn vào thẻ html. Bạn xem kỹ đoạn sevlet controller gửi qua file jsp và cách nhận data đó trong file jsp. Phân biệt forward và redirect lúc kết nối với file JSP

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?