Jak przekazać zmienną z serwletu do jsp? setAttribute
i getAttribute
nie działa dla mnie :-(Przekazywanie zmiennych z serwletu do jsp
Odpowiedz
Można ustawić wszystkie wartości do obiektu odpowiedzi przed forwaring żądanie do JSP. Albo można umieścić swoje wartości do fasoli sesji i do niego dostęp w JP
Thanks koleś. Zrobiłem to samo i zadziałało to dla mnie. :-) – Developer
Zastosowanie
request.setAttribute ("attributeName").
i
getServletContext(). GetRequestDispatcher ("/ file.jsp"). Forward();
Następnie będzie dostępny na stronie JSP.
Na marginesie - w swoim jsp należy unikać kodu java. Użyj JSTL.
Dzięki Bozho! Nie wiem teraz zbyt wiele o JSTL. Ale zdecydowanie się tego nauczę. – Developer
Dlaczego 'getServletContext()', a nie 'request'? – CodyBugstein
To nie działać, gdy:
Jesteś przekierowanie odpowiedzi na nowego wniosku przez
response.sendRedirect("page.jsp")
. Nowo utworzony obiekt żądania oczywiście nie będzie już zawierać atrybutów i nie będzie dostępny na przekierowanej stronie JSP. Musisz przekierować, a nie przekierować. Na przykład.request.setAttribute("name", "value"); request.getRequestDispatcher("page.jsp").forward(request, response);
łączysz to w niewłaściwy sposób lub za pomocą złą nazwę. Zakładając, że masz ustawić go przy użyciu nazwy
"name"
, to powinieneś być w stanie uzyskać do niego dostęp w przekazany strony JSP następująco:${name}
Przekazywanie po, na przykład, formularzu księgowania jest traktowane jako zła praktyka, powinieneś używać prawdziwych przekierowań (301). Następnie musisz przekazać stan według sesji lub uzyskać parametry. – lukyer
tak doskonała odpowiedź @BalusC – Binay
@BalusC, co masz na myśli przez "powinieneś być w stanie uzyskać do niego dostęp na przekierowanej stronie JSP w następujący sposób: $ {name}" ?? Próbowałem napisać <% out.println ($ {name});%> i nie zadziałało. ale <% out.println (request.getAttribute ("name"));%> zrobił. – Pavel
Poza tym przy użyciu atrybutuprzekazać informacje z serwletu do strony JSP można również przekazać parametr . Odbywa się to po prostu poprzez przekierowanie do adresu URL, który określa stronę JSP, i dodanie mechanizmu normalnego przekazywania parametrów przez adres URL.
Przykład.Odpowiedni fragment kodu serwletu:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
// processing the request not shown...
//
// here we decide to send the value "bar" in parameter
// "foo" to the JSP page example.jsp:
response.sendRedirect("example.jsp?foo=bar");
}
A odpowiednia część JSP stronie example.jsp
:
<%
String fooParameter = request.getParameter("foo");
if (fooParameter == null)
{
%>
<p>No parameter foo given to this page.</p>
<%
}
else
{
%>
<p>The value of parameter foo is <%= fooParameter.toString() %>.</p>
<%
}
%>
Prosty sposób, który znalazłem znaczy
W serwletu:
Możesz ustawić wartość i przekazać ją do JSP, jak poniżej:
req.setAttribute("myname",login);
req.getRequestDispatcher("welcome.jsp").forward(req, resp);
W Welcome.jsp można uzyskać wartości przez
.<%String name = (String)request.getAttribute("myname"); %>
<%= name%>
(lub), bezpośrednio u można nazwać
<%= request.getAttribute("myname") %>.
Wszystkie odpowiedzi są prawidłowe, ale ten wygląda na prosty ... – Siva
Można również użyć RequestDispacher i przekazać wraz z danymi strona jsp, którą chcesz.
request.setAttribute("MyData", data);
RequestDispatcher rd = request.getRequestDispatcher("page.jsp");
rd.forward(request, response);
To jest kod serwletu, który zawiera zmienną łańcuchową a. wartością dla a jest przechodzenie ze strony html z formularzem. , a następnie ustaw zmienną w obiekcie żądania. następnie przekazać go do jsp metodami forward
i requestdispatcher
.
String a=req.getParameter("username");
req.setAttribute("name", a);
RequestDispatcher rd=req.getRequestDispatcher("/login.jsp");
rd.forward(req, resp);
w JSP następujące kroki przedstawione poniżej w programie
<%String name=(String)request.getAttribute("name");
out.print("your name"+name);%>
Niektóre przykładowy kod pomogłoby – skaffman