2009-09-10 4 views
7

Я пытаюсь использовать RequestDispatcher для отправки параметров из сервлета.Как отправить параметры из сервлета

Вот мой сервлет код:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

String station = request.getParameter("station"); 
String insDate = request.getParameter("insDate"); 

//test line 
String test = "/response2.jsp?myStation=5"; 

RequestDispatcher rd; 
if (station.isEmpty()) { 
    rd = getServletContext().getRequestDispatcher("/response1.jsp"); 

} else { 
    rd = getServletContext().getRequestDispatcher(test); 
} 

rd.forward(request, response); 

} 

Вот мой JSP, с кодом, чтобы прочитать значение - однако он показывает нуль.

Спасибо за любые предложения. Greener

+0

RequestDispatcher не используется для чтения параметров. Поэтому я отредактировал ваш пост. –

ответ

11

В вашем использовании request.setAttribute сервлета следующим образом

request.setAttribute("myStation", value); 

где значение случается, объект, который вы хотите прочитать позже.

и извлечь его позже в других сервлет/JSP с использованием request.getAttribute в

String value = (String)request.getAttribute("myStation") 

или

<%= request.getAttribute("myStation")> 

Обратите внимание, что сфера использования прибудет/SetAttribute ограничена по своей природе - атрибуты сброс между запросами. Если вы собираетесь хранить значения дольше, вы должны использовать контекст сеанса или приложения или лучше базу данных.

Атрибуты отличаются от параметров, поскольку клиент никогда не устанавливает атрибуты. Атрибуты более или менее используются разработчиками для передачи состояния от одного сервлета/JSP к другому. Поэтому вы должны использовать getParameter (нет установленного параметра) для извлечения данных из запроса, при необходимости установить атрибуты с помощью setAttribute, переслать запрос с помощью RequestDispatcher и извлечь атрибуты с помощью getAttribute.

+0

Благодарим за обширные комментарии. Я очень ценю. Пропущенные значения имеют масштаб страницы, поэтому я думаю, что метод, который вы мне показали, будет достаточным. – Greener

+0

Добро пожаловать :) –

2

Использование getParameter(). Атрибут устанавливается и читается внутри приложения.

1

В вашем коде String test = "/response2.jsp?myStation=5";

Вы добавляете myStation = 5 в качестве строки запроса. Поскольку параметры строки запроса сохраняются в качестве параметров запроса в объекте запроса.

Таким образом, вы можете использовать,

Он работает fine.Thanks.

Смежные вопросы