2010-08-31 6 views

Odpowiedz

10

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

+0

Thanks koleś. Zrobiłem to samo i zadziałało to dla mnie. :-) – Developer

14

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.

+0

Dzięki Bozho! Nie wiem teraz zbyt wiele o JSTL. Ale zdecydowanie się tego nauczę. – Developer

+0

Dlaczego 'getServletContext()', a nie 'request'? – CodyBugstein

74

To nie działać, gdy:

  1. 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); 
    
  2. łą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} 
    
+0

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

+0

tak doskonała odpowiedź @BalusC – Binay

+0

@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

12

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> 
<% 
    } 
%> 
17

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") %>. 
+0

Wszystkie odpowiedzi są prawidłowe, ale ten wygląda na prosty ... – Siva

1

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); 
3

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);%>