Отправка данных формы из jsp клиенту веб-службы (SOAP)

В основном у меня есть веб-служба, подключенная к базе данных, которая имеет метод вставки. Я создал регистрационную форму в jsp, и мне нужно отправить данные, которые пользователь вставил в форму Registration.jsp, в мою веб-службу. Поэтому я использовал вызов клиента веб-службы в качестве действия для Registration.jsp при нажатии кнопки отправки.

Я не знаю, как получить данные, введенные пользователем в форму, и передать их веб-клиенту, который, в свою очередь, вставит их в мою базу данных веб-службы.

Вот мои коды:

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title> Registration</title>
    </head>
    <body>
        <h1> Welcome</h1>


        <form name="test" action="Wclient2.jsp" method="POST" enctype="multipart/formdata">

                   <table border="0">
                <thead>
                    <tr>
                        <th>Register Here</th>
                      <th></th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>First Name:</td>
                        <td><input type="text" name="fname" value="" size="50" /></td>
                    </tr>
                    <tr>
                        <td>Last Name:</td>
                        <td><input type="text" name="lname" value="" size="50" /></td>
                    </tr>
                    <tr>
                        <td>Email:</td>
                        <td><input type="text" name="email" value="" size="50" /></td>
                    </tr>
                    <tr>
                        <td>Password:</td>
                        <td><input type="password" name="password" value="" size="50"/>      </td>
                    </tr>

                    <tr>
                        <td></td>
                        <td> <input type="submit" value="submit" name="submit" /> </td>
                    </tr>
                </tbody>
            </table>

        </form>
    </body>
</html>

И это код для веб-клиента при нажатии кнопки отправки

регистрация (action="Wclient2.jsp" method="POST")

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title> Enroll</title>
    </head>
    <body>
        <h1> Welcome</h1>

        <form name="test"<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

           <%-- start web service invocation --%><hr/>
        <%        

            try {
                mypack.Bioweb_Service service = new mypack.Bioweb_Service();
                mypack.Bioweb port = service.getBiowebPort();
                // TODO initialize WS operation arguments here

                java.lang.String fname = "";
                java.lang.String lname = "";
                java.lang.String email = "";
                java.lang.String password = "";

                // TODO process result here

                java.lang.String result = port.insert(fname, lname, email, password);
                out.println("Result = " + result);

            } catch (Exception ex) {
                // TODO handle custom exceptions here
            }
        %>
        <%-- end web service invocation --%><hr/>

    </body>
</html>

Я не знаю, как получить параметры для fname из Registration.jsp, чтобы поместить их в веб-клиент. Когда я пишу:

java.lang.String fname = request.getParameter("fname");

чтобы получить значение текстового поля fname в моем веб-сервисе, в моей базе данных создается строка, но вместо значений, которые мой пользователь ввел в форму, вставляется NULL.

Пожалуйста помоги.


person Div    schedule 10.10.2012    source источник


Ответы (2)


Я не вижу никаких проблем с вашим кодом на стороне клиента (html/jsp), если вы используете request.getParameter("fname"), пока вы вводите ввод для FirstName. Чтобы изолировать проблему, напечатайте значение fname в вашем jsp.

String fname =request.getParameter("fname") ;
System.out.println("Value of first name " +fname) // this will print your console
java.lang.String result = port.insert(fname, lname, email, password);

Если это правильно печатает ваш ввод, вам нужно будет увидеть реализацию службы, чтобы проверить, правильно ли он читает и обрабатывает ввод. Если это fname is null , мы можем вернуться к HTML/JSP, чтобы посмотреть еще раз.

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

Enumeration reqParams= request.getParameterNames();
while (reqParams.hasMoreElements()) {
    String key= (String) reqParams.nextElement();
    String val = request.getParameter(element);
    System.out.println(" Key ==> "+key+" , Value ==> "+val);

}

Попробуйте это и давайте посмотрим, получите ли вы значения для любого ввода, введенного вами в вашей html-форме.

Сатиш

person Satheesh Cheveri    schedule 10.10.2012
comment
Привет, сатиш, спасибо за ваш ответ. Я попробовал то, что вы сказали, однако это все еще дает мне NULL, и я не понимаю, почему! Вывод: значение имени null Не могли бы вы мне помочь. - person Div; 10.10.2012
comment
Отредактировал мои предыдущие ответы; Но я не нахожу никаких проблем с вашим кодом, за исключением одного неверного тега (‹form name=test‹html›) в вашем jsp, что тривиально и не должно вызывать никаких проблем. - person Satheesh Cheveri; 10.10.2012
comment
Еще раз спасибо, я удалил форму и создал другую, я думаю, это действительно был один неверный тег, и теперь он сохраняется. :) - person Div; 10.10.2012

На самом деле это не моя область знаний, но вместо вызова action="Wclient2.jsp" вы можете вызвать action="pass.php", а затем создать php-файл, чтобы получить переменные и перенаправить на Wclient2.jsp, передав ваши переменные в строка запроса.

Например, в файле pass.php:

$fname = $_POST['fname'];
$lname = $_POST['lname'];

header( 'Location: http://www.yoursite.com/path/Wclient2.jsp?fname=' .fname. '&lname=' .lname );

Это может быть действительно странный (или новичок) способ сделать это, но я знаю, что это работает. Надеюсь, у кого-то еще будет более подходящий ответ, но если никто не ответит достаточно быстро, я надеюсь, что это немного поможет :)

person Bob    schedule 10.10.2012
comment
Привет, спасибо за ваш ответ, но я не могу использовать php в этом, должен быть jsp/html. Я уверен, что это какая-то действительно глупая ошибка, которую я сделал, может быть, всего одна строка кода, но я не могу ее найти! :( - person Div; 10.10.2012