简体   繁体   中英

Sending form data from a jsp to a web service client (SOAP)

Basically I have a web service connected to a database, that has an insert method. I've created a registration form in a jsp and I need to send data the user inserted in the registration.jsp form to my web service. So I used a web service client invocation as the action to the registration.jsp when clicking the submit button.

I dont know how to get the data the user entered in the form and pass it to the web client who in turn insert it in my web service database.

Here are my codes:

    <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>

And this is the code for the web client upon clicking the submit button of the

registration( 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>

I dont know how to get the parameters for fname from the registration.jsp to put in the web client. When I write:

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

to get the value of textfield fname into my web service, in my database a row is created but NULL is inserted instead of the values my user entered in the form.

Please help.

I dont see any issue with your client side code(html/jsp) if you use request.getParameter("fname") as long you provide input to FirstName. To isolate the issue, print the value of fname in your 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);

If this prints your input correctly, you would need to see service implementation to check it reads and process the input correctly. If it is fname is null , then we can come back to the HTML/JSP to have second look.

Update: To see the request in details, you could use below code

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

}

Try this and lets see if you get values for any of the input your enterd in your html form.

Satheesh

This isn't really my area of expertise, but instead of calling action="Wclient2.jsp" you could call action="pass.php" then create a php file to grab the variables and redirect to Wclient2.jsp passing your variables in a query string.

For example in the pass.php file:

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

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

That might be a really weird (or newbie) way to accomplish it, but just of the top of my head I do know that it works. Hopefully someone else will have a more appropriate answer, but in case no one replies quickly enough, I hope this helps a little bit :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM