java web etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
java web etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Mart 2016 Perşembe

Javada Bilinmeyen Tiplerdeki Parametrelerle Çalışmak- Varargs(Variable Arguments)

Merhaba,
Bu yazımda sizlere javada varargs kullanımından bahsedeceğim.
Diyelim ki  bir method tanımlamak istiyorsunuz ve bu method bazen String bazen Integer parametre ile çağrılacak. Hatta bazı durumlarda hem String hem Integer parametreyi aynı anda göndermek isteyeceksiniz.  Yani metodun hangi tipteki parametre ile çağrılacağını bilmiyorsunuz. Eğer sadece bir bilinmeyen tipte sadece  bir  parametre yollayacak olsaydık bu  durumda yapmamız gereken işlem metodu Object tipinde bir parametre ile  çağırmak olacaktı.  Ancak birden fazla ve farklı tiplerdeki parametre(String,Integer,boolean.. vs aynı anda) ile aynı anda göndermek istediğimizde bu tanımlama işimize yaramayacaktı.   İşte tam elimiz kolumuz bağlandı mı diye düşünürken  varargs kullanımı  yardımımıza konuşuyor.   Object... (üç nokta array olduğunu belirtiyor) tipinde bir parametre alan foo adında bir method tanımlıyoruz.  Ve bu metodu istediğimiz tiple çağırıp kullanabiliyoruz. Aşağıda örnek bir kodlama yaptım incelemenizi tavsiye ederim. Bir  çok projede bu kullanım işinize yarayacaktır.

Kod örneği:
package com.lvt;

/**
 * Created by leventyildiz on 17/03/16.
 */

public class Run {

    public static void main(String[] args) {

        foo("Levent", 123, true);
    }

    public static void foo(Object... objects) {

        for (Object s : objects) {

            System.out.println(s.toString());

        }
    }
}

çıktı:
Levent
123
true


javada String class’ı içerisinde kullanımı.
public static String format(Locale l, String format, Object... args) {
   
return new Formatter(l).format(format, args).toString();
}


Formatter class’ında ki kullanımından bir örnek:
public Formatter format(String format, Object ... args) {

    return format(l, format, args);

}


String classıyla bir örnek yapalım:
String str = String.format("integer values: %d - %s", 5,"aliveli");

System.out.println(str);

Burada String class’ı içindeki format methoduna hem String hem Integer parametreyi aynı anda gönderdik.

Çıktı:
integer values: 5 - aliveli

19 Şubat 2016 Cuma

spring mvc ile controller dan view katmanına parametre gönderme işlemi

Merhaba,
bu yazımda spring ile controller dan view katmanına  parametre nasıl gönderildiğinden bahsedeceğim.  Bu  işi iki farklı şekilde yapabilirsiniz. Birincisi spring MVC içinde gelen ModelMap objesinden oluşturup bu objeye bir değişken set edersiniz. İkinci yöntem ise yine ModelMap objesini de kapsayan ModelAndView classını oluşturarak bu class'a obje  eklersiniz.

İlk yöntem:
@RequestMapping(value = {"/", "/hello"}, method = RequestMethod.GET)
public String printWelcome(ModelMap model) {
    model.addAttribute("message", "started!");    return "hello";}

ModelMap objesine message adında bir değişken set ediyoruz(model.addAttribute)

ikinci yöntem:
@RequestMapping(value = {"/hello2"}, method = RequestMethod.GET)
public ModelAndView printWelcome2() {
    ModelAndView mv = new ModelAndView("hello");    mv.addObject("message", "started2");    return mv;}

Oluşturduğumuz ModelAndView class'ına message diye bir String obje ekliyoruz.


 Her iki controller da da view katmanına message adında bir değişken yollamaktadır. Bu işlemden sonra ilgili JSP  sayfasına giderek ${message} şeklinde bir yazımla değişkeni ekrana basabilir veya istediğiniz şekilde kullanabilirsiniz.

14 Haziran 2015 Pazar

Spring - Apache Tiles Entegrasyonu (Template Oluşturma)

Merhaba,
şuana kadarki yazılarımdaki örnekleri incelediğinizde işlemlerin tamamını  tek bir Jsp  sayfasında  yaptığımı göreceksiniz. Bu yazımda ise bir Jsp sayfası içerisine başka sayfalarında dahil edilmesi işleminden bahsedeceğim. Template oluşturma yapısından bahsediyorum(alttaki görüntü)

Aslında bütün web ve yazılım  projelerinde ortak kullanılan alanlar(Header,Footer,Menu) belirlenerek ilgili sayfada çağrılır. Bu şekilde her sayfada aynı kodların yazılmasının önüne geçilmiş olur. Esasında her sayfa için aynı kodları yazarak ta sonuca gidebilirsiniz ancak bakım,tutum ve yeni eklenecek özellikleri de(geliştirme) göz önünde bulundurursak bu yazımda anlatacağım yöntem ilginizi çekecektir diye düşünüyorum. Evet anahtar kelimeyi paylaşıyorum : Apache tiles (Döşeme)

Öncelikle bu yapıyı kullanmak için illede Apache Tiles kullanmak durumunda değilsiniz.
<jsp:include page="WEB-INF/common/header.jsp" /> 
 Şeklinde ki direktiflerle de ortak kullanılan kısımları tek sayfada toplayabilirsiniz.  Güzel ama daha  iyi bir yolu yok mu bu işin diye soracağınızı düşünerek sizlere Apache Tiles Kullanmanızı tavsiye ediyorum. Nasıl kullanacağız sorusuna cevaben  bu yazıda Spring ile entegre ederek bu işlemi gerçekleştireceğiz.

1-  Projemize intelliJ ile bir web projesi oluşturarak başlıyoruz.

2-  log4j yi  pom.xml'e  ekleyin.


<!-- Logging -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${org.slf4j-version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${org.slf4j-version}</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${org.slf4j-version}</version>
    <scope>runtime</scope>
</dependency>


3- tiles'ı  pom.xml e ekleyin
<!-- Tiles -->
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-extras</artifactId>
    <version>${tiles-version}</version>
</dependency>



4- mvc-dispatcher-servlet.xml    üzerinden spring/apache-tiles bağlantısını yapın
<!-- Tiles configuration -->
<bean id="tilesConfigurer"
      class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles/tiles-definitions.xml</value>
        </list>
    </property>
</bean>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>



5- tiles-definitions.xml  dosyasında layout yapısını tasarlıyoruz.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
        "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
        "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>

    <definition name="singleLayout" template="/WEB-INF/template/singleLayout.jsp" />


    <definition name="mainLayout" template="/WEB-INF/template/mainLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/template/fragments/header.jsp" />
        <put-attribute name="menu" value="/WEB-INF/template/fragments/menu.jsp" />
        <put-attribute name="footer" value="/WEB-INF/template/fragments/footer.jsp" />
    </definition>

</tiles-definitions>



burada singleLayout ve mainLayout diye iki tanım yaptım. Birinde sade bir sayfa yapısı olacak diğerinde üst menü ve footer bilgileri de gelecek.

Ben bu projede header ve footer alanlarına bootstrap kaynaklarını ekledim. Yavaş yavaş görsel tarafada ağırlık verelim istedim.

Sayfalarda yukarıda tanımladığımız layout-tiles çağrısı yapıldıktan sonra içerik sayfaya özgü olarak girilir.

örnek sayfa içeriği  aşağıdaki gibidir:
about.jsp:
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>

<tiles:insertDefinition name="mainLayout">
    <tiles:putAttribute name="body">


        <h1>About page !</h1>

        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
            magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
            commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
            nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
            anim id est laborum.</P>


    </tiles:putAttribute>
</tiles:insertDefinition>


AboutController.java
package com.company.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

/**
 * Created by root on 6/14/15.
 */
@Controller
public class AboutController {

    private static final Logger logger = LoggerFactory.getLogger(AboutController.class);

    @RequestMapping(value = "/about", method = RequestMethod.GET)
    public ModelAndView about(){
        ModelAndView mv = new ModelAndView("about");
        return mv;
    }

}


NOT: log4j kütüphanesi apache tiles ın gereksinimlerinden biridir. projenize log4j yi dahil etmeniz gerekmektedir.

NOT2: Tiles versiyonları önemlidir. Burada ben tiles3 kullandım. Diğer versiyonlarda ki  ufak tefek farklılıklar başlangıç aşamasında  kafanızı karıştırabilir. ilk aşamada benimle aynı spring versiyonunu ve apache-tiles versiyonunu kullanmanızı tavsiye ediyorum

kaynak dosyalar(github) : indirmek için tıklayın

Spring ile sayfa kaynaklarına mapping yöntemiyle erişim

Merhaba, bu yazımda sizlere spring projelerinize kaynak(css, js, png,.. vs) dosyaları nasıl dahil edeceğinizi anlatacağım.

1- öncelikli olarak bir spring web projesi oluşturun.

2- webapp dizini altında resources dizini ve onun altında da erişmek istediğiniz kaynakları  oluşturun
ÖRN: css/custom.css
resources/css/custom.css


3- beans xml dosyasının en üst kısmına(defination yapılan kısma) alttaki  satırları ekleyin. bu sayede spring mvc ile resources mapping (kaynak haritalama-tanımlama) işlemi gerçekleştireceğiz
xmlns:mvc="http://www.springframework.org/schema/mvc"

(xsi:schemaLocation kısmınada bu satırları eklemelisiniz)
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd


4- resoources dizinindeki tüm kaynakları static path olarak map edin.
<!--resources access(mapping)--><mvc:resources mapping="/static/**" location="/resources/"/>
<mvc:annotation-driven/>

üstteki tanımın,  resources/ dizinindeki tüm kaynaklara static sözcüğü(path) ile erişeceğim demektir.


5-  Aşağıdaki şekilde kaynak(css) dosyaları sayfanıza dahil edebilirsiniz.
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/custom.css">

6- Aşğağıdaki tanımla da png dosyalarını syfanıza çağırabilirsiniz.
<img src="${pageContext.request.contextPath}/static/img/spring.png" />

sonrasında çağırmak istediğiniz dosyaları yine benzer şekilde çağırabilirsiniz


NOT: Üstteki şekilde map ederek kaynakları sayfalarda çağırmanız durumunda;  oluşan html sayfalarında sağ tıklayıp kaynağı görüntüle dendiğinde kaynak dosyaların gerçek dizinleri değil map edilmiş dizinleri görünecektir. Bu da projenizi güvenlik konularında bir adım daha öne taşıyacaktır.


kaynak dosyalar(github) : indirmek için tıklayın

12 Ekim 2014 Pazar

Spring + Quartz ile zamanlanmış görevler

Merhaba,
bu yazımda sizlere spring ve quartz entegrasyonundan bahsedeceğim. Bir projede belli aralıklarla işlem yapmak isterseniz(SMS gönderme , Mail gönderme, vs ..), bu yapıdan faydalanabilirsiniz. Ben bu projede 10 sn aralıklarla mail gönderme işlemini anlatacağım, kodları inceleyerek zamanlanmış görevler hakkında bilgi sahibi olabilirsiniz.

Öncelikli olarak intelliJ aracılığıyla bir Spring web projesi oluşturuyoruz.
Proje bittiğinde aşağıdaki yapıda olacaktır:


pom.xml dosyasına quartz dependency tanımlamalarını yaparak hemen başlayalım.

pom.xml
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>

        <!-- Quartz API -->
        <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>quartz</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.directory.studio</groupId>
            <artifactId>org.apache.commons.logging</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-support</artifactId>
            <version>2.0.6</version>
        </dependency>

Web projesi oluşturduğum için projeye gelen tüm URL leri  index.jsp  sayfasına yönlendirelim. Yönlendirme yapmasak ta quartz çalışacaktır ancak yönlendirme yaparsak projeyi çalıştırdığımız bir karşılama sayfası olur ve sayfa bulunamadı hatası almayız.
HelloController .java
@Controller
@RequestMapping("/")
public class HelloController {
                @RequestMapping(method = RequestMethod.GET)
                public String printWelcome(ModelMap model) {
                               model.addAttribute("message", "Hello world!");
                               return "hello";
                }
}

scheduler için xml dosyası aracılığıyla MailReportServiceImpl .java dosyasındaki mailSend metotunu çağıracağız. Dolayısıyla bu class ve metodu hemen oluşturalım.

 MailReportServiceImpl .java
package com.company.service.impl;

import com.company.service.MailReportService;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * Created by levent.yildiz on 12.10.2014.
 */
public class MailReportServiceImpl implements MailReportService {
    @Override
    public void mailSend() {

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar calendar = Calendar.getInstance();
        String strDate = dateFormat.format(calendar.getTime());

        //TODO : development
        //Mail gönderme işlemi burada yapılacak
        System.out.println("Mail Gonderiliyor.." + strDate);
    }
}



Ve son aşamada quartz ayarlarını bir xml dosyasından yapıyoruz.
MailReportServiceImpl , MethodInvokingJobDetailFactoryBean(Quartz) ve SimpleTriggerBean(Quartz) metotlarını çağıran bean ler oluşturuyoruz.

MethodInvokingJobDetailFactoryBean metodunu çağırırken kendi yazdığımız MailReportServiceImpl  classını ve mailSend metodunu refere ediyoruz.

Birde son olarak SimpleTriggerBean metoduna bu job'un ne sıklıkla çalışması gerektiğini set ediyoruz.

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p" xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


    <!-- Beans -->
    <bean id="mail"
          class="com.company.service.impl.MailReportServiceImpl"/>


    <bean id="methodJobDetailBean"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
          p:concurrent="false" p:targetObject-ref="mail" p:targetMethod="mailSend"/>


    <!-- For Testing -->
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"
          p:jobDetail-ref="methodJobDetailBean" p:startDelay="20000"
          p:repeatInterval="10000"/>


    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
          p:waitForJobsToCompleteOnShutdown="true">
        <property name="triggers">
            <list>
                <ref bean="simpleTrigger"/>
            </list>
        </property>
    </bean>
  
</beans>


projenin çıktısı aşağıdaki gibi olacaktır:


kaynak dosyalar(github) : indirmek için tıklayın

24 Ağustos 2014 Pazar

Spring framework + Jquery + Ajax ile basit bir post işlemi.

Herkese merhaba,  hatırlarsanız blog yazmaya başlarken bir karar almıştım ve aşama aşama sizlerle birlikte proje yapmayı planlıyordum. Üzülerek belirtiyorum ki bu yazım projeye başladığımı haber veren bir paylaşım içermemektedir. Aksine iş yoğunluğumdan dolayı bir süre daha bu proje ertelenecektir.  Burada altını çizmem gereken bir durum var vazgeçmedim sadece iş yoğunluğumdan dolayı bu projeyi  erteledim. Evet arkadaşlar sizlere sıfırdan bir projeyi adım adım(ekran görüntüsü  + yazı + kaynak kod şekline) anlatacağım söz :) .

Daha fazla yazıyı uzatmadan  geçen süre içerisinde vakit buldukça aldığım notlarımı düzenleyerek paylaşmak istiyorum ki Türkçe kaynak  sıkıntısı yaşayan arkadaşların kendini geliştirmesine katkıda bulunmuş ve bu yolda yollarına bir ışık tutmuş olayım.

Bu yazımda bir Jsp projesinde form değerlerinin nasıl POST edileceğini anlatacağım.
Kullanılan teknolojiler:
- IntelliJ idea
- Java
- Spring framework
- Jquery 
- Ajax

Her zamanki gibi web tabanlı Spring MVC projemizi oluşturuyoruz.  Projenin bitmiş hali aşağıdaki gibi olacaktır:



Öncelikle model adlı paketin altında Person adında bir class oluşturuyoruz(POJO). İçinde sadece değişkenler, getter ve setter methodları olan classlara POJO(Plain Old Java Objects) deniyor.

Com.company.model / Person
package com.company.model;

public class Person {

    private String firstname;
    private String lastname;
    private String email;

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

İkinci olarak index.jsp sayfasını aşağıdaki şekilde düzenliyoruz. Bu sayfada basic bir form var ve jquery ile form elementlerine ulaşarak (Jquery selector)  ajax ile formu post ediyoruz ve Springin json formatında döndürdüğü sonuçları ekrana yazdırıyoruz.

Burada hem zaman kaybetmemek hemde yeniden tekerleği keşfetmemek adına görüntünün otomatik oluşması için bootstrap kullanacağım siz isterseniz kendi tasarımınızı oluşturabilirsiniz. Bootstrap linkleri aşağıdadır.
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>



src\main\webapp\WEB-INF\pages\index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>

    <%--bootstrap css--%>
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">

    <%--bootstrap js--%>
    <script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

    <%--jquery js--%>
    <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script>

</head>
<body>
<style>

    .personDiv{ margin:0px auto; margin-top: 10px;  padding:20px; width: 50%; border: 1px solid #000; }

</style>

<script>
    $( document ).ready(function() {

        $("#btnFormPost").click(function () {

            alert("clicked");
            $.ajax({
                type: "post",
                dataType: "json",
                url: "http://localhost:8080/person/add.htm",
                data:'firstname=' + $("#firstname").val() + "&lastname=" + $("#lastname").val() + "&email=" + $("#email").val(),
                success: function(response){

                    $("#resFirstName").text(response["firstname"]);
                    $("#resLastName").text(response["lastname"]);
                    $("#resEmail").text(response["email"]);
                },
                error: function(){
                    alert('Post İşlemi Esnasında Bir Hata Oluştu');
                }//error finish
            });//ajax finish
        });//click finish

    });
</script>

<div class="personDiv">
<form role="form" name="personForm" method="POST" onsubmit="return false;">
    <div class="form-group">
        <label for="firstname">Ad</label>
        <input type="text" class="form-control" name="firstname" id="firstname" placeholder="Ad">
    </div>

    <div class="form-group">
        <label for="lastname">Soyad</label>
        <input type="text" class="form-control" name="lastname" id="lastname" placeholder="Soyad">
    </div>
    <div class="form-group">
        <label for="email">E-Posta</label>
        <input type="email" class="form-control" id="email" name="email" placeholder="E-Posta">
    </div>
    <button type="submit"  id="btnFormPost" class="btn btn-primary">Gonder</button>
</form>
</div>

<div class="personDiv" id="result">
    <div class="form-group">
        <label>Adı : </label>
        <label id="resFirstName"></label>
    </div>
    <div class="form-group">
        <label>Soyadı : </label>
        <label id="resLastName"></label>
    </div>
    <div class="form-group">
        <label>E-Posta : </label>
        <label id="resEmail"></label>
    </div>
</div>

</body>
</html>

Son olarak controller u yazıyoruz. Controller dosyasında  URL de "/" gördüğünde varsayılan olarak index.jsp sayfası çağrılacak URL de  "/person/add.htm”  gördüğünde ise add methodu devreye girecek ve formdan gelen değerleri alıp tekrar forma geri gönderecek.

Com.company.controller / PersonController
package com.company.controller;

import com.company.model.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
public class PersonController {


    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index() {
        return "index";
    }


    @RequestMapping(value = "/person/add.htm", method = RequestMethod.POST)
    public
    @ResponseBody
    Person add(HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        Person person = new Person();

        String firstName = request.getParameter("firstname");
        String lastName = request.getParameter("lastname");
        String email = request.getParameter("email");

        person.setEmail(email);
        person.setFirstname(firstName);
        person.setLastname(lastName);

        return person;
    }
}


@Controller  anatosyanu ile sınıfımızın bir controller olduğunu belirttik.
@RequestMapping ile URL in nasıl map edileceğini ve hangi methoda göre değer alacağımızı belirttik.
@ResponseBody ile methodun içinde çıktı oluşturacağımızı belirttik.
yapılan işlemler özetle bu kadardı :)

Aslında burada formdan değerler alındıktan sonra DB işlemleri yaptırabilirdik. Sizlere bir anda bilgi yüklemesi yaparak kafanızı karıştırmayım istedim eğer talep olursa   İlerleyen yazılarımda da POST edilen değerleri DB ye aktarma işlemlerini anlatıyor olurum.

Her neyse tüm bu işlemlerden sonra projeyi  derleyip, web browserdan çalıştırıp (http://localhost:8080/) 
ilgili alanları doldurarak  Gönder butonuna basarsak değerler post edilip, response oluşturulacaktır. ve response edilen değerler ekrana yazılacaktır.






kaynak dosyalar(github) : indirmek için tıklayın