JAX RS – 12 – @FormParam & @Form

Merhaba Arkadaslar
Bu bolumde @FormParam ve @Form annotation’larini inceleyecegiz.

PersonResource.java

package _06.formParam.service;

import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;

@Path("/person-formParam")
public class PersonResource {

	@POST
	@Path("/addPerson")
	public String addPerson(@FormParam("name") String name, @FormParam("surname") String surname) {
		String message = "addPerson is called. " + "Welcome , " + name + " " + surname;
		return message;
	}
}

Dikkat edecek olursak @POST annotation’ini kullandik. @FormParam annotation ile formdaki ilgili form parametrelerine erisim saglayabiliriz.

The @javax.ws.rs.FormParam annotation is used to access 
application/x-www-form- urlencoded request bodies.
When the input request body is of the type "application/x-www-form-urlencoded", 
a.k.a. an HTML Form, you can inject individual form parameters from 
the request body into method parameter values.

Ornegimizi test etmek icin Desktop’ta basit bir HTML form olusturabiliriz  ;

persons-jersey.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>@FormParam Example</title>
</head>
<body>
<form id="form1" action="http://localhost:8080/injavawetrust.jersey.tutorial/person-formParam/addPerson" method="post">
    <div>              
    </div> 
    <table>
       <tr>
              <td align="right">Name :</td>
              <td><input type="text" name="name" /></td>
       </tr>
       <tr>
              <td align="right">Surname : </td>
              <td><input type="text" name="surname" /></td>
       </tr>       
        <tr>
              <td><input type="submit" value="Submit"/></td>
        </tr>
</table> 
    </form>
</body>
</html>

formparam-html-jersey

Benzer sekilde action kismini resteasy projesine gonderecek sekilde degistirip test edebiliriz.

<form id="form1" action="http://localhost:8080/injavawetrust.resteasy.tutorial/person-formParam/addPerson" method="post">

Ya da onceki bolumlerde ekledigimiz REST plugin’leri araciligiyla HTTP POST istegini data form bilgilerini ekleyerek gonderebiliriz.

Bir baska ornek olarak @Form annotation’ini kullanabiliriz. Bu annotation sadece RESTEasy icin gecerlidir.

Person.java

package _06.formParam.model;

import javax.ws.rs.FormParam;

public class Person {

	@FormParam("name")
	private String name;

	@FormParam("surname")
	private String surname;

	//getters and setters
	//toString

}

@Form annotation’ini import org.jboss.resteasy.annotations.Form olarak import ediyoruz.

PersonResource.java

package _06.formParam.service;

import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import org.jboss.resteasy.annotations.Form;

import _06.formParam.model.Person;

@Path("/person-formParam")
public class PersonResource {

	@POST
	@Path("/addPerson")
	public String addPerson(@FormParam("name") String name, @FormParam("surname") String surname) {
		String message = "addPerson is called. " + "Welcome , " + name + " " + surname;
		return message;
	}

	@POST
	@Path("/addPersonModel")
	public String addPersonModel(@Form Person person) {
		String message = "addPersonModel is called.";
		return message + " " + person.toString();
	}

}

persons-resteasy-formparam.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>@Form Example</title>
</head>
<body>
<form id="form1" action="http://localhost:8080/injavawetrust.resteasy.tutorial/person-formParam/addPersonModel" method="post">
    <div>              
    </div> 
    <table>
       <tr>
              <td align="right">Name :</td>
              <td><input type="text" name="name" /></td>
       </tr>
       <tr>
              <td align="right">Surname : </td>
              <td><input type="text" name="surname" /></td>
       </tr>       
        <tr>
        		<td> 
        			<input type="submit" value="Submit"/> 
        		</td>
        </tr>
</table> 
    </form>
</body>
</html>

Github kaynak kodlar / source folder
injavawetrust.resteasy
injavawetrust.jersey

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *