Merhabalar arkadaşlar. Bu yazıda önceki yazıda gördüğümüz @FormParam notasyonunun JBoss tarafından geliştirilip RestEasy kütüphanesine konmuş ve bir başka parametre alma notasyonu olan @Form’u öğreneceğiz.

Önceki yazıda hatırlayacağınız üzere bir form sayfası hazırlamıştık ve web servis metoduna istekte bulunurken @FormParam’lar ile tek tek değerleri geçirmiştik. @Form notasyonu ise bu tek tek geçirme işlemi yerine formdaki bilgileri tutan bir form değişkenini metoda parametre olarak vermenizi sağlıyor. Bu işlem sırasında form değişkenin ait olduğu sınıf içerisinde tanımlanmış olan değişkenlere değerler yine @FormParam notasyonu ile enjekte ediliyor.

Şimdi bir örnek uygulama yapalım ve nasıl çalıştığına bakalım.

FormNotation.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Form Notation Example</title>
    </head>
    <body>
        <h1>Formdaki Alanları Doldurunuz</h1>
        <form method="POST" action="restful/formNotationExample/formNotationMethod">
            <table>
                <tr>
                    <td>Adınız:</td>
                    <td><input type="text" name="name"/></td>
                </tr>
                <tr>
                    <td>Soyadınız:</td>
                    <td><input type="text" name="surname"/></td>
                </tr>
                <tr>
                    <td>Telefon Numaranız:</td>
                    <td><input type="text" name="phoneNumber"/></td>
                </tr>
                <tr>
                    <td>Adres:</td>
                    <td><input type="text" name="adress"/></td>
                </tr>
            </table>
            <input type="submit" value="GÖNDER"/>
        </form>
    </body>
</html>

JSP sayfası içerisinde tek yaptığımız şey önceki yazıdaki gibi bir form hazırlamak ve action’ına web servis metodunun path bilgisini vermek.

FormNotationExample.java

package com.mycompany.resteasytutorials;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.jboss.resteasy.annotations.Form;

@Path("/formNotationExample")
public class FormNotationExample {
    @Path("/formNotationMethod")
    @Produces(MediaType.APPLICATION_JSON+";charset=UTF-8")
    @POST
    public Response processParams(@Form Person person){
        
        return Response.status(200).entity(person).build();
    }
}

Web servis sınıfımız içerisinde path bilgisi formNotationMethod olan bir POST metodu yazdık. Bu metot gördüğünüz üzere hem JSP sayfasındaki formun action’ı olan metot hem de parametresi user-defined class tipinde bir parametre.

Person.java

package com.mycompany.resteasytutorials;

import javax.ws.rs.FormParam;

public class Person {
    @FormParam("name")
    private String name;

    @FormParam("surname")
    private String surname;

    @FormParam("phoneNumber")
    private String phoneNumber;

    @FormParam("adress")
    private String adress;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }
}

Person sınıfının içinde gördüğümüz gibi JSP sayfasından gelecek bilgileri tutacak değişkenler tanımlı. Bu değişkenler bilgileri @FormParam notasyonu vasıtası ile kendilerine alacaklar.

JSP sayfasından bilgiler girilip GÖNDER butonuna tıklandığında çağırılan web servis metodu @Form notasyonu ile parametre almasından ötürü önce Person sınıfına sen ilgili değerleri al, kendine koy sonra bana bir Person değişkeni ver diyor ve akabinde ne işlem yapılacaksa onu yapıyor.

Ekran Çıktısı

Bu yazıda da bu kadar arkadaşlar. @Form notasyonu ile veri alıp kullanmayı öğrenmiş olduk. Gelecek yazıda görüşene kadar sağlıcakla kalın.

Selam ve Sevgilerimle