2015-05-09 3 views
0

У меня есть страница jsp с формой, которая, когда она отправлена, отправляется на сервер Servlet, который вставляет данные формы в базу данных.
Перенаправление страницы с сервлетами Java

Когда данные вносятся в базу данных, я пытаюсь получить браузер обратно на мою страницу JSP и показать яваскрипта предупреждение о том, что данные были вставлены успешно, мой код выглядит следующим образом:

RequestDispatcher rd; 
    if(dao.insertClient(client)) { 
     rd = getServletContext().getRequestDispatcher("/pages/clients.jsp"); 
     rd.include(request, response); 
     out.print(
      "<script type=\"text/javascript\">" 
       + "alert("Client inserted successfully!");"+ 
      "</script>" 
     );   
    } 

этот код делает именно то, что я хочу, но этот метод getRequestDispatcher() перенаправляет страницу к самому сервлета, и URL, как http://localhost:8080/Servlet, таким образом, я не могу доступ любой стажер ссылку страницы , так как ссылки на другие страницы, очевидно, находятся вне контекста сервлета, а glassfi sh возвращает ошибку 404.

Вместо использования getRequestDispatcher(), я попытался с помощью response.sendRedirect(), таким образом я могу вставить данные в базу данных и доступ к стажеру ссылки, но Javascript оповещения не.

У кого-то есть предложение о том, как я могу перенаправить страницу на clients.jsp и отобразить предупреждение javascript?

Спасибо!

+1

Почему вы не используете Ajax для отправки запроса на ваш сервлет. Таким образом, вам не нужно перемещаться от jsp – underdog

+0

Почему бы вам не поместить скрипт в сеанс, и после того, как вы перенаправите его, вы можете прочитать его оттуда? –

+0

Можете ли вы передать мне базовый синтаксис, чтобы поместить скрипт в сеанс? Я googled но не нашел его. – emersondms

ответ

0

вы можете попробовать другой подход:

Установить параметр из сервлета так:

RequestDispatcher rd; 
if(dao.insertClient(client)) { 
    rd = getServletContext().getRequestDispatcher("/pages/clients.jsp"); 
    request.setAttribute("isSuccess", "success"); 
    rd.include(request, response); 
} 

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

<% 
    String result = request.getParameter("isSucess"); 
    if("success".equals(result)){ 
%> 
    <script type="text/javascript" > 
     alert("Client inserted successfully!"); 
    </script> 
<% 
    } 
%> 
+0

На самом деле приведенный выше код показывает предупреждение, но проблема в том, что getRequestDispatcher перенаправляет страницу на сервлет, а не на jsp, если я использую другой метод response.sendRedirect(), он перенаправляет на jsp, и я могу получить доступ к внутренним ссылкам, но предупреждение не показано, спасибо! – emersondms

+0

@emersondms: посмотрите на это http://stackoverflow.com/questions/24176684/how-to-show-alert-in-a-jsp-from-a-servlet-and-then-redirect-to-another -jsp –

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