Как отправить параметры из сервлета - PullRequest
8 голосов
/ 10 сентября 2009

Я пытаюсь использовать 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 с кодом для чтения значения - однако он показывает ноль.

    <h1>response 2</h1>
    <p>
        <%=request.getAttribute("myStation")  %>
    </p>

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

Ответы [ 3 ]

14 голосов
/ 10 сентября 2009

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

request.setAttribute("myStation", value);

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

и извлеките его позже в другой сервлет / jsp, используя request.getAttribute как

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

или

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

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

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

3 голосов
/ 10 сентября 2009

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

2 голосов
/ 12 августа 2014

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

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

Поэтому вы можете использовать,

Работает отлично. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...