spring rest etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
spring rest etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

19 Ocak 2017 Perşembe

Spring Rest API Kullanımı



Bu yazımda sizlere Spring Rest API kullanımından bahsedeceğim. Bir sonra ki yazımda da yazdığımız bu web servisleri başka bir uygulamadan nasıl çağıracağımız hakkında (RestTemplate) bilgi vereceğim.

Restful web servisler sunucu ile haberleşmek için daha çok JSON kullanırlar.Client-Server arasında ki iletişim HTTP üzerinden sağlanır.

Bu kısa bilgiden sonra artık Spring REST kodlamaya başlayabiliriz. Ben data olarak kendi veritabanımda ki kutuphane tablosunu kullanacağım. DAO ‘ dan çekeceğiniz verinin türünü sizlere bırakıyorum.



KitaplarRestController.java


package com.mesutemre.restcontroller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.mesutemre.dao.KitaplarDAO;
import com.mesutemre.model.Kitap;
import com.mesutemre.model.KitapResult;

@RestController
@RequestMapping(value = "/kitaplarRest")
public class KitaplarRestController {
 
@Autowired
private KitaplarDAO service;

@RequestMapping(value = "/kitaplar" , method = RequestMethod.GET , produces = "application/json")
public ResponseEntity<List<Kitap>> getKitapListe(){
  List<Kitap> kitapListe = service.getKitapListe();
  if(kitapListe == null){
    return new ResponseEntity<List<Kitap>>(HttpStatus.NO_CONTENT);
  }
  return new ResponseEntity<List<Kitap>>(kitapListe,HttpStatus.OK);
}

@RequestMapping(value = "/findKitapById" , method = RequestMethod.POST , produces  = MediaType.APPLICATION_JSON_VALUE)
  public @ResponseBody ResponseEntity<Kitap> findKitapById(@RequestBody Kitap k){
   Kitap kitap = service.findKitapById(k.getKitapId());
   if(kitap == null){
     return new ResponseEntity<Kitap>(HttpStatus.NOT_FOUND);
   }
   return new ResponseEntity<Kitap>(kitap,HttpStatus.OK);
}

@RequestMapping(value = "/createKitap" , method = RequestMethod.POST
                produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity<KitapResult> createKitap(@RequestBody Kitap k){
   Kitap kitap = service.createKitap(k);
   if(kitap == null){
     return new ResponseEntity<KitapResult>(HttpStatus.FORBIDDEN);
   }
   KitapResult kitapResult = new KitapResult();
   kitapResult.setKitapAd(kitap.getKitapAd());
   kitapResult.setYazarAd(kitap.getYazarAd());
   kitapResult.setKitapDurum(kitap.getKitapDurum());
   kitapResult.setKitaptur(kitap.getKitaptur());
   return new ResponseEntity<KitapResult>(kitapResult,HttpStatus.CREATED);
}

@RequestMapping(value = "/deleteKitap" , method = RequestMethod.POST
                produces = "application/json")
public @ResponseBody ResponseEntity<Kitap> deleteKitap(@RequestBody Kitap kitap){
    Kitap k = service.deleteKitap(kitap.getKitapId());
    if(k == null){
       return new ResponseEntity<Kitap>(HttpStatus.NOT_FOUND);
    }
    return new ResponseEntity<Kitap>(k,HttpStatus.OK);
}

@RequestMapping(value = "/updateKitap" , method = RequestMethod.POST
                produces = "application/json")
public @ResponseBody ResponseEntity<Kitap> updateKitap(@RequestBody Kitap kitap){
    Kitap k = service.updateKitap(kitap);
    if(k == null){
       return new ResponseEntity<Kitap>(HttpStatus.NOT_FOUND);
    }
    return new ResponseEntity<Kitap>(k,HttpStatus.OK);
   }
}



 
Yazdığımız bu metodlar POSTMAN ile aşağıda ki gibi çağrılarak sonuçlar döner.


 







 






 








 





 






16 Ekim 2016 Pazar

Spring MVC , Ajax ve jQuery Kullanımı – 3 (Silme İşlemi)


Serimizin 3. yazısında Spring MVC, Ajax ,jQuery ve önyüzde Semantic UI ile Datatable'dan seçtiğimiz bir item ı sileceğiz. Burada ki senaryomuz şu şekilde olacaktır.
Kullanıcı Datatable ' dan istediği bir veriyi seçecek ardından sil butonuna basıp veriyi silecektir. Seçim yapmadığı takdirde 'Lütfen Seçim Yapınız' alert'i alacaktır.
Senaryomuzu oluşturduğumuza göre kodlamaya geçebiliriz.


springrestornekliste.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.10/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/select/1.2.0/css/select.dataTables.min.css">
<link rel="stylesheet" href="https://datatables.net/release-datatables/extensions/TableTools/css/dataTables.tableTools.css">
<script src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/select/1.2.0/js/dataTables.select.min.js"></script>

<script src="<c:url value="/resources/js/springrestornekliste.js?v=1.3" />"></script>
</head>
<body>
<table id="restdt" class="ui selectable celled table">
 <thead>
   <tr id="filterrow">
    <th>Ad</th>
    <th>Soyad</th>
    <th>E-Posta</th>
    <th>Doğum Tarihi</th>
   </tr>
   <tr>
    <th style="width: 100px;color: blue;">Ad</th>
    <th style="width:100px;color:blue;">Soyad</th>
    <th style="color:blue;">E-Posta</th>
    <th style="width: 100px;color: blue;">Doğum Tarihi</th>
   </tr>
</thead>
<tbody></tbody>
<tfoot>
 <tr>
  <td>
    <input type="submit" id="deleteSpringRestrecordId"
           class="ui red button"
           value="Sil" />
  </td>
 </tr>
</tfoot>
</table>
<div id="srolDelResponse"></div>
</body>

</html>


springrestornekliste.js

var selectedUpdateId;

$(document).ready(function(){
var picker = new Pikaday(
{
  field: document.getElementById('dogumtarihi'),
  firstDay: 1,
  format : 'DD.MM.YYYY',
  minDate: new Date(1900, 0, 1),
  maxDate: new Date(2016, 12, 31),
  yearRange: [1900,2016],
  i18n: {
        previousMonth : 'Önceki',
        nextMonth : 'Sonraki',
        months :      ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
        weekdays : ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
        weekdaysShort : ['Paz','Pzt','Sal','Çar','Per','Cum','Cmt']
        }
});
$('#restdt').dataTable( {
  "ajax": {
  "url": "/SpringDispatcherServlet/springorneklistejson",
  "dataSrc": ""
  },
  "bInfo" : false,
  "columns": [
          { "mData": "ad" },
          { "mData": "soyad" },
          { "mData": "eposta" },
          { "mData": "dogumtarihi" }
       ],
  "oLanguage" : {
  "sLengthMenu" : "_MENU_ ",
  "sSearch" : "<span class='add-on'><i class='icon-search'></i></span>Ara:",
  "sZeroRecords" : "Kayıt Bulunamadı",
  oPaginate: {
  "sFirst": "İlk",
  "sLast": "Son",
  "sNext": "Sonraki",
  "sPrevious": "Önceki"
 },
},
 "iDisplayLength" : 5,
 "aLengthMenu" : [
[ 5, 10 ],
[ 5, 10] ],
"aaSorting" : [ [ 0, 'asc' ] ]
});
var table = $('#restdt').DataTable();
$('#restdt tbody').on( 'click', function () {
  if ( $(this).hasClass('selected') ) {
     $(this).removeClass('selected');
 }else {
     table.$('selected').removeClass('selected');
     $(this).addClass('selected');
 }
});
$('#restdt thead tr#filterrow th').each( function () {
   var title = $('#restdt thead th').eq( $(this).index() ).text();
   $(this).html( '<input type="text" style="height:20px;"     onclick="stopPropagation(event);" placeholder="'+title+'" />' );
});
$("#restdt thead input").on( 'keyup change', function () {
table
.column( $(this).parent().index()+':visible' )
.search( this.value )
.draw();
} );
function stopPropagation(evt) {
   if (evt.stopPropagation !== undefined) {
      evt.stopPropagation();
   }else {
     evt.cancelBubble = true;
   }
}
$('#deleteSpringRestrecordId').click( function () {
   if(table.rows('.selected').data().length == 0){
       alert('Lütfen Seçim Yapınız!');
   }else{
      deleteSpringRest(table.rows('.selected').data()[0].id);
   }
});

function deleteSpringRest(id){
   $.ajax({
        url: "/SpringDispatcherServlet/springrestorneklistedelete/"+id,
        type: "DELETE",
        dataType: 'json',
        async: true,
        beforeSend: function(xhr) {
              xhr.setRequestHeader("Accept", "application/json");
              xhr.setRequestHeader("Content-Type", "application/json");
        },
       success: function(smartphone) {
         var respContent = "";
         respContent += "<a class='ui green label'>Kayıt Silindi.</a>";
         $('#restdt').DataTable().ajax.reload();
         $("#srolDelResponse").html(respContent);
       }
   });
   event.preventDefault();
}


SpringRestOrnekListeController.java

package com.mesutemre.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.mesutemre.dao.SpringRestOrnekDAO;
import com.mesutemre.model.SpringRestOrnek;

/**
* @author mesudemre
*
*/
@Controller
public class SpringRestOrnekListeController {

@Autowired
private SpringRestOrnekDAO service;

@RequestMapping(value = "/springrestornekliste" , method = RequestMethod.GET)
public String showSpringRestOrnekListe(Model model){
     return "springrestornekliste";
}

@RequestMapping(method = RequestMethod.GET , produces = "application/json"
               value = "/springorneklistejson")
public @ResponseBody List<SpringRestOrnek> getSpringRestOrneks(){
     return service.getSpringRestOrnekListe();
}

@RequestMapping(value = "/springrestorneklistedelete/{id}" ,          method=RequestMethod.DELETE,
 produces = MediaType.APPLICATION_JSON_VALUE, consumes =  MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public SpringRestOrnek deleteSpringRestOrnek(@PathVariable int id){
    return service.deleteSpringRestOrnek(id);
}


Uygulamamıza ait ekran görüntüleri aşağıda ki gibidir.