13 Eylül 2016 Salı

Spring MVC , Ajax ve jQuery Kullanımı – 1


4 kısımdan oluşacak olan Spring MVC , Ajax ve jQuery kullanımı yazı dizisinde , Ajax ve jQuery teknoljilerinin Spring MVC ile nasıl kullanıldığını örnek bir ekran üzerinden inceleyeceğiz.

İlk kısımda Semantic UI ile jQuery datatable kullanımına bakıp , ikinci kısımda ise Ajax POST ile bu datatable’a kayıt atma işlemi üzerinde duracağım.
Senaryomuzu oluşturduğumuza göre artık kodlamaya geçebiliriz.

ajaxRegister.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://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet"
href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css"/>
<script src="http:////code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#ajaxmt').dataTable( {
 "ajax": {
 "url""/SpringDispatcherServlet/ajaxMList",
 "dataSrc"""
 },
 "bInfo" : false,
 "columns": [
 { "mData""adAjax" },
 { "mData""soyadAjax" }
 ],
 "oLanguage" : {
 "sLengthMenu" : "_MENU_ ",
 "sSearch" : "<span class='add-on' display:none;><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' ] ]
});
$('#ajaxmt thead tr#filterrow th').each( function () {
 var title = $('#jtab thead th').eq( $(this).index() ).text();
 $(this).html( '<input type="text" style="height:20px;"    onclick="stopPropagation(event);" placeholder="'+title+'" />' );
} );
// DataTable
var table = $('#ajaxmt').DataTable();
// Apply the filter
$("#ajaxmt 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;
  }
 } 
});
</script>
</head>
<body>
<hr>
 <div align="center">
  <table id="ajaxmt" class="ui celled table">
    <thead>
      <tr id="filterrow">
        <th>Ad</th>
        <th>Soyad</th>
     </tr>
     <tr>
       <th style="width200px;colorblue;">Ad</th>
       <th style="width:300px;color:blue;">Soyad</th>
     </tr>
   </thead>
  </table>
 </div>
</body>
</html>



jsp sayfamızı yukarıda ki gibi yazdıktan sonra geriye url kısmında da belirttiğimiz üzere controller sınıfımızda ki metodu yazmamız gerekir. Bu sınıf aşağıdaki gibi yazılır.


AjaxRegisterController.java

package com.mesutemre.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
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.AjaxmDAO;
import com.mesutemre.model.AjaxM;

@Controller
public class AjaxRegisterController {

@Autowired
private AjaxmDAO service;

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

@RequestMapping(method = RequestMethod.GET, value = "/ajaxMList" ,
produces = "application/json")
public @ResponseBody
List<AjaxM> getAjaxmList() {
     return service.getAllAjaxMList();
  }
}





20 Haziran 2016 Pazartesi

Spring MVC ile Dosya Yükleme


Bu yazımda sizlere Spring MVC ile file upload işleminden bahsedeceğim. Bu işlem Spring MVC de multipart request lerin handle edilme işlemidir. Bu multipart request leri handle etmenin 2 yolu vardır.

1. StandartServletMultipartResolver
Servlet 3.0 ın sunduğu bir özellik olup , uygulamada ki Servlet sürümünün 3.0 veya üzeri olmasını gerektirir.

2. CommonsMultipartResolver
Jakarta commons FileUpload kullanarak multipart requestleri çözer.


Şimdilik 2.yolu kullanarak dosya yükleme işlemini gerçekleştireceğiz. Bunun için pom.xml dosyamıza aşağıda ki satırları eklememiz gerekmektedir.

<dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring</artifactId>
       <version>2.5.6</version>
   </dependency>

<!-- Spring MVC framework -->
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>2.5.6</version>
   </dependency>
<!-- Apache Commons Upload -->
   <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.2</version>
    </dependency>

<!-- Apache Commons Upload -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>
<!-- JSTL -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>


Bunları ekledikten sonra DispatcherServlet classımıza temp dosyalarının tutulacağı yeri göstermek maksadı ile aşağıda ki metodu eklememiz gerekiyor.


@Override
protected void customizeRegistration(Dynamic registration) {
    registration.addMapping("/");
    registration.setMultipartConfig(new        MultipartConfigElement("/home/mesud/springtemp",2097152, 4194304, 0));
}

Artık JSP sayfamızı ve Controller classımızı yazabiliriz.


fileUpload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" isELIgnored="false"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>

<div class="body">
   <h1>Resim Yükleme Formu</h1>
   <form method="POST" enctype="multipart/form-data">
      <label>Profil Resmi : </label> <input type="file" name="profilResim"
   accept="image/jpeg,image/png,image/gif" />
   <br/>
   <input type="submit" value="<s:message code="register.save"/>" />
   <br/>
   <strong> ${uploadFileName} </strong>
   </form>
</div>

FileUploadController.java

package com.mesutemre.controller;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;


@Controller
public class FileUploadController {

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

@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
public String uploadImageFile(
@RequestParam("profilResim") MultipartFile file , Model model) {

if (!file.isEmpty()) {
 try {
  BufferedOutputStream stream = new BufferedOutputStream(
  new FileOutputStream(new File("/home/mesud/springupload/"+file.getName())));
  FileCopyUtils.copy(file.getInputStream(), stream);
  stream.close();
  model.addAttribute("uploadFileName", file.getName());
  System.out.println(file.getName()+" başarı ile yüklendi...");
  System.out.println("Dosya büyüklük : "+file.getSize());
 } catch (Exception e) {
   e.printStackTrace();
 }
 } else {
   System.err.println("Boş dosya...");
}

return "fileUpload";
}

}

Yükleme ekranımız aşağıda ki gibi olur.




Bir sonraki yazıda görüşmek üzere hoşçakalın.