Отправить переменную через 2 формы с сервлетом - PullRequest
0 голосов
/ 25 февраля 2012

У меня проблема с 2 сервлетами. По сути, я получил 1 страницу JSP с формой, когда я нажимаю на кнопку Отправить, мне нужно получить все переменные из этого JPS, чтобы вставить их во второй (входной тип = "скрытый"), чтобы, наконец, отправить все вместе.

Мой сервлет 1 (Добавить клиента)

    @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    System.out.println("salut 1  ");
    request.getRequestDispatcher("/JSP/Template/BankAdvisor/AddClient.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String firstname = request.getParameter("firstname");
    String lastname = request.getParameter("lastname");
    String email = request.getParameter("email");
    String address = request.getParameter("address");
    String city = request.getParameter("city");
    String zipcode = request.getParameter("zipcode");
    String phone = request.getParameter("phone");

    if (firstname != null && lastname != null && email != null && address != null && city != null && zipcode != null && phone != null) {

        if (!lastname.isEmpty() && !firstname.isEmpty() && !email.isEmpty() && !address.isEmpty() && !city.isEmpty() && !zipcode.isEmpty() && !phone.isEmpty()) {

            request.setAttribute("firstname", firstname);
            request.setAttribute("lastname", lastname);
            request.setAttribute("email", email);
            request.setAttribute("address", address);
            request.setAttribute("city", city);
            request.setAttribute("zipcode", zipcode);
            request.setAttribute("phone", phone);
            request.getRequestDispatcher("/BankAdvisor/AddAccount").forward(request, response);

        } else {

            response.sendRedirect(getServletContext().getContextPath() + "/BankAdvisor/AddClient");
        }

    } else {

        response.sendRedirect(getServletContext().getContextPath() + "/BankAdvisor/AddClient");
    }

}

Мой сервлет 2 (Добавить аккаунт)

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.getRequestDispatcher("/JSP/Template/BankAdvisor/AddAccount.jsp").forward(request, response);
    String firstname = request.getParameter("firstname");
    String lastname = request.getParameter("lastname");
    String email = request.getParameter("email");
    String address = request.getParameter("address");
    String city = request.getParameter("city");
    String zipcode = request.getParameter("zipcode");
    String phone = request.getParameter("phone");
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String firstname = request.getParameter("firstname");
    String lastname = request.getParameter("lastname");
    String email = request.getParameter("email");
    String address = request.getParameter("address");
    String city = request.getParameter("city");
    String zipcode = request.getParameter("zipcode");
    String phone = request.getParameter("phone");

    //The two news variables
    String accountName = request.getParameter("accountname");
    String accountType = request.getParameter("accounttype");

    if (firstname != null && lastname != null && email != null && address != null && city != null && zipcode != null && phone != null) {

        if (!lastname.isEmpty() && !firstname.isEmpty() && !email.isEmpty() && !address.isEmpty() && !city.isEmpty() && !zipcode.isEmpty() && !phone.isEmpty()) {

         // ACTION 
        } else {
            response.sendRedirect(getServletContext().getContextPath() + "/BankAdvisor/AddClient");
        }

   } else {
 response.sendRedirect(getServletContext().getContextPath() + "/BankAdvisor/AddClient");
   }
}

Спасибо

1 Ответ

0 голосов
/ 25 февраля 2012

В сервлете 1 следует использовать:

getServletContext().getRequestDispatcher("/BankAdvisor/AddAccount").forward(request, response);

вместо:

request.getRequestDispatcher("/BankAdvisor/AddAccount").forward(request, response);

потому что с ServletRequest#getRequestDispatcher(java.lang.String), если путь начинается с "/", он интерпретируется как относительно текущего корневого контекста (т.е. пути к контексту текущего запроса).

  • Пример: если вы получили запрос на http://test/myapp/toto, он будет перенаправлен на http://test/myapp/toto/BankAdvisor/AddAccount

Принимая во внимание, что с ServletContext#getRequestDispatcher(java.lang.String) путь интерпретируется как относительно текущего корневого контекста (то есть пути к контексту текущего веб-приложения).

  • Пример: если вы получили запрос на http://test/myapp/toto, он будет перенаправлен на http://test/myapp/BankAdvisor/AddAccount, если корень контекста веб-приложения равен http://test/myapp
...