2010-02-14 12 views
8

Czy jest możliwe, aby serwlet zawierał obiekt (w tym przypadku ArrayList), który następnie będzie równoważny wyświetlaniu strony jsp i przekazywaniu tego obiektu do jsp strona. W tym przypadku ArrayList zawiera wyniki bazy danych, które chcę iterować i wyświetlać wyniki na stronie JSP.Jak przekazywać informacje z serwletu na stronę JSP?

Nie używam żadnej architektury MVC, czy jest to możliwe z podstawową architekturą Serwlet/JSP.

Odpowiedz

10

Tak.

  1. w wywołaniu serwletu request.setAttribute("result", yourArrayList);
  2. następnie do przodu do jsp:

    getServletContext().getRequestDispatcher("your.jsp") 
        .forward(request, response); 
    
  3. użyciu JSTL w JSP:

    <c:forEach items="${result}" var="item"> 
        ... 
    </c:forEach> 
    

jeśli nie” t chcesz używać JSTL (ale polecam go używać), wtedy możesz pobierz wartość również za pomocą request.getAttribute("result") w JSP.

Zamiast tego, ale nie jest to zalecane, można zamiast niego używać request.getSession().setAttribute(..), a nie .

+0

Należy zwrócić uwagę, że powodem, dla którego podejście przekierowania() nie jest zalecane, jest to, że nakazuje przeglądarce przejście do nowego adresu URL powodującego nowe żądanie, w którym zakres "żądania" jest inny, dlatego wynik nie może być zapisany w "żądaniu". -scope (request.setAttribute ...), ale musi być przechowywany w zakresie dostępnym dla nowego żądania. W standardowym JSP dostępny jest tylko zakres sesji, gdzie obiekty żyją wiecznie, co zwykle nie jest pożądane. Uważam, że MyFaces Orchestra ma interesującą alternatywę - http://myfaces.apache.org/orchestra/myfaces-orchestra-core/installation.html –

+1

tak, ale to za dużo, ponieważ nie chce używać architektury mvc. – Bozho

2

Obiekty można przekazywać do jsp, osadzając je w Żądaniu.

request.setAttribute("object", object);

oraz w jsp:

request.getAttribute("object");

+0

Co powinienem zrobić, aby uzyskać więcej informacji, nie wydaje mi się, aby uzyskać coś. – Ankur

2

można umieścić go przy request.setAttribute ("myObj" myObj); zobacz javadoc

Powiązane problemy