2010-08-31 6 views

ответ

10

Вы можете установить все значения в объект ответа, прежде чем forwaring запрос на СПЯ. Или вы можете поместить свои значения в сессионный компонент и доступа к ней в JSP

+0

спасибо чувак. Я сделал то же самое, и это сработало для меня. :-) – Developer

14

Применение

request.setAttribute ("имя_атрибута");.

, а затем

getServletContext(). GetRequestDispatcher ("/ file.jsp"). Forward();

Тогда он будет доступен в JSP.

В качестве побочного примечания - в jsp избегать использования кода Java. Используйте JSTL.

+0

Спасибо, Божо! Я не знаю много о JSTL прямо сейчас. Но определенно я собираюсь это изучить. – Developer

+0

Почему 'getServletContext()' а не 'запрос'? – CodyBugstein

74

Это не будет работать, если:

  1. Вы перенаправив ответ на новый запрос по response.sendRedirect("page.jsp"). Разумеется, новый объект запроса, конечно, не будет содержать атрибутов, и они не будут доступны в перенаправленном JSP. Вам нужно перенаправить, а не перенаправить. Например.

    request.setAttribute("name", "value"); 
    request.getRequestDispatcher("page.jsp").forward(request, response); 
    
  2. Вы обращаетесь это неправильный путем или с помощью неправильного имени. Предполагая, что вы установили его, используя имя "name", то вы должны быть в состоянии получить доступ к нему в пересылаемой JSP страницы следующим образом:

    ${name} 
    
+0

Пересылка после, например, форма отправки считается плохой практикой, вы должны использовать реальные переадресации (301). Затем вам нужно передать состояние по сеансам или получить параметры. – lukyer

+0

да идеальный ответ @BalusC – Binay

+0

@BalusC, что вы подразумеваете под «вы должны иметь доступ к нему на пересылаемой странице JSP следующим образом: $ {name}" ?? Я попытался написать <% out.println ($ {name});%>, и это не сработало. но <% out.println (request.getAttribute ("name"));%> сделал. – Pavel

12

Кроме того, используя атрибут передать информацию из сервлет на страницу JSP, можно также передать параметр . Это делается просто путем перенаправления на URL-адрес, который указывает рассматриваемую страницу JSP, и добавление механизма нормального параметра-сквозного URL-адреса.

Пример.Соответствующая часть кода сервлета:

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"); 
} 

И соответствующая часть JSP страницы 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

Простой способ, который я нашел,

В сервлета:

Вы можете установить значение и переслать его на JSP, как показано ниже

req.setAttribute("myname",login); 
req.getRequestDispatcher("welcome.jsp").forward(req, resp); 

В welcome.jsp вы можете получить значения по

.<%String name = (String)request.getAttribute("myname"); %> 
<%= name%> 

(или) непосредственно и можно назвать

<%= request.getAttribute("myname") %>. 
+0

Все ответы действительны, но этот выглядит просто. – Siva

1

Вы также можете использовать RequestDispacher и передавать данные наряду с страницу jsp, которую вы хотите.

request.setAttribute("MyData", data); 
RequestDispatcher rd = request.getRequestDispatcher("page.jsp"); 
rd.forward(request, response); 
3

Это код сервлета, который содержит строковую переменную a. значение для a получается с html-страницы с формой. затем установите переменную в объект запроса. затем передайте его в jsp, используя методы forward и requestdispatcher.

String a=req.getParameter("username"); 
req.setAttribute("name", a); 
RequestDispatcher rd=req.getRequestDispatcher("/login.jsp"); 
rd.forward(req, resp); 

в JSP выполните следующие действия, показанные ниже в программе

<%String name=(String)request.getAttribute("name"); 
out.print("your name"+name);%> 
Смежные вопросы