25 Temmuz 2014 Cuma

Linux üzerinden PHP ile MS SQL Bağlantısı yapmak

Merhaba, bu yazımda sizlere linux sunucu üzerinden PHP ile Microsft SQL Server database ine nasıl erişim yapılacağından bahsedeceğim.

Şöyle bir senaryo düşünelim;  Ubuntu server üzerinde PHP ile web projeleri geliştiriyorusunuz.

Uzak bir veri tabanından data çekmeye ihtiyaç duydunuz. Ve neyazıkki uzaktaki veri tabanı Microsoft SQL Server. Eğer bu veri tabanı PostgreSQL yada MySQL olsaydı PHP ile bu veri tabanına bağlantı yapmanız çok kolaydı.
Fakat ben araştırdım ki PHP ile ubuntu üzerinden MS SQL Server a bağlanmak ta enaz onlar kadar kolay.

Aslında Microsoft un PHP için SQL Server bağlantısı yapan driver ı var. Fakat tahmin edeceğiniz üzere Windows platformu üzerinde çalışan PHP geliştiriciler için. Yani siz linux üzerinde bu driver ı kullanarak SQL server'a bağlanamıyorsunuz.  Ancak SQL Server erşimi için  freetds adında  ücretsiz bir open source driver var. Linux veya türevi işletim sistemleri üzerinde geliştirme yapıyorsanız bu driver ı kullanabilirsiniz.


Tabi Öncelikle SQL Server sizin TCP/IP bağlantılarınızı kabul etmesi gerekir. Yani SQL Server sunucusuna  erişim yetkilerinizin olması gerekiyor.


Aşağıdaki komutları sırasıyla çalıştırarak freetds driveri ubuntu üzerinde kuralım:


FreeTDS ve PHP MS SQL uzantısı için
sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase

Apache servisini restart et
sudo /etc/init.d/apache2 restart

FreeTDS ile bağlantı testi
tsql -H SunucuAdi-p 1433 -U kullaniciAdi -P Sifre -D veritabaniAdi

Eğer bağlanırsa çalışıyor demektir.


ÖRNEK PHP Bağlantısı:
$link = mssql_connect('yourserver', 'yourusername', 'yourpassword');

if (!$link)
    die('Unable to connect!');

if (!mssql_select_db('yourdatabasename', $link))
    die('Unable to select database!');

$result = mssql_query('SELECT * FROM yourtable');

while ($row = mssql_fetch_array($result)) {
    var_dump($row);
} 
mssql_free_result($result);



 NOT: Yazının bazı kısımları  ingilizce kaynaklardan türkçeleştirilmiştir.

Tomcat'i restart etmeden intelliJ de değişikliklerin algılanması

Merhaba,
bugün kü yazımın konusu  intelliJ ile geliştirme yaparken tomcati restart etmeden değişikliklerin algılanmasını sağlamak olacak. Önceki yazılarımdan birinde anlattığım ve bildiğinizi düşündüğüm üzere intelliJ ile web projesi geliştirirken  geliştirdiğiniz kodların tomcat'a deploy edilmesi için run tuşuna basarak sunucuyu restart edip kaynakları güncellemeniz gerekmektedir(Ayarların varsayılan ayarlar olduğunu düşünürsek).
Ancak aşağıdaki yapacağımız ayarlarla siz geliştirmeyi bitirip browser'u refresh eder etmez kaynaklar güncellenmesini sağlayacağız. Toplumumuzun(Türk toplumu) okumaktan çabuk sıkılacağını  göz önünde bulundurarak işlemleri sırasıyla ve  ekran görüntüleriyle anlatıyorum. :) 

İlk olarak Üstteki File menüsünden settings seçeneğine tıklanır. 
Kısa yolu : CTRL + ALT + S


Karşımıza gelen ekranda
Ide Settings / Debugger / HotSwap  seçeneğine gelinerek  en alttaki "Reload Classes After Compilation (Derleme işleminden sonra sınıfları tekrar yükle/güncelle)"  ayarını Always olarak set edip OK butonuna basıyoruz.


Daha sonra alttaki ekran görüntüsünde ki gibi run/edit configuration'a tıklayarak çalıştırma ayarlarını açıyoruz.



Burada öncelikle deployment tabına gelinerek set edilen eski ayarlar kaldırılmalıdır. Bunun için alttaki ekrandaki gibi projenin war dosyasını seçip eksi(-)/sil butonuna basılıp ardından da değişikliklerin aktif olabilmesi için OK butonuna basılır.

Daha sonra server tabına gelinerek sağ alt köşede ki fix butonuna basılarak projenin exploded olan war dosyası seçilir. (projeadi.war exploded şeklinde yazar) yine değişiklikleri aktif etmek için OK butonuna basarak kaydederiz.



Son olarak tekrar server tabına gelerek
On Update Action (güncelleme işleminde): update classes and resources (class ve kaynakları güncelle)
On Frame Deactivation(pencere pasif olduğunda) : Update Classes And Resources(Class ve Kaynakları güncelle) burada anlatılmak istenen şudur: intelliJ ekranında geliştirme yapıyorken mouse ı başka bir yere tıkladığınızda(ÖRN: chrome geçtiniz) hemen kaynaklar ve class lar güncellenir

Ayrıca show dialog  seçeneği pasif konuma getirilmelidir.


Bu ayarlardan sonra  tomcat restart olması  tüm değişikliklerin algılanması için proje run edilir. Tomcat restart  işleminden sonra artık  intellij de yaptığımız değişiklikleri takip edebilmek için browserı refresh etmemiz yeterli olacaktır.

22 Temmuz 2014 Salı

JSP İle Resource dosyasından değer okuma

Merhaba, bu yazımda JSP dosyası ile resource dizini altındaki ayar dosyalarının nasıl okunacağını anlatacağım.  ilk olarak spring tabanlı bir web projesi oluşturuyoruz.



Oluşturduğumuz projenin  son halinin dizin yapısı aşağıdaki gib olacaktır.  Sizde proje  oluştururken bu yapıda olmasına dikkat edin.

 Projeyi oluşturduktan sonra size zorluk çıkmasın ve kafanız karışmasın  diye  ayar dosyaları üzerinde herhangi bir değişiklik yapmadım.  Tüm dosyalar (web.xml , mvc-dispatcher-servlet.xml )  varsayılan şekliyledir. 

Şimdi hemen controller oluşturarak kodlamaya başlayalım
ReadController.java aşağıdaki şekliyle oluşturuyoruz.

example1\src\main\java\com\company\controller\ReadController.java
package com.company.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class ReadController {

    @RequestMapping(value = "/" , method = RequestMethod.GET)
    public String readResource(){
        return "read";
    }
}
Uygulama sunucusu üstteki kod sayesinde  localhost:8080 den sonra “/” işareti görülürse bizi read.jsp sayfasına yönlendirir.  


example1\src\main\webapp\WEB-INF\pages\read.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
Read.jsp sayfası..
<hr/>
</body>
</html>


Bu işlemlerden sonra projemizi tomcat üzerinden çalıştırdığımızda ekrana read.jsp sayfası .. mesajını  yazacaktır.

Şuana kadar yaptığımız işlemleri sıralarsak ;controller oluşturduk ve get metoduyla sayfaya gelen isteklerin tamamını read.jsp sayfasına yönlendirdik. Ve projeyi çalıştırarak ekranda read.jsp sayfası .. mesajını yazdırdık

Şimdi bu read.jsp sayfasından resource dizinindeki config.properties dosyasını okuyalım. Tabi öncelikle config.properties i oluşturmamız gerekmektedir.

example1\src\main\resources\config.properties
#db connection params
db.host = localhost
db.name = store
db.user = root
db.pass = 123456


Config dosyasını oluşturduktan sonra read.jsp dosyasını  aşağıdaki gibi düzenleyebiliriz.
Read.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
read.jsp sayfası ..
<hr/>

<%@ page import = "java.util.ResourceBundle" %>

<%
    //config.properties dosyasını oku
    ResourceBundle resource = ResourceBundle.getBundle("config");

    //config dosyasındaki değerleri değişkenlere ata
    String username = resource.getString("db.user");
    String password = resource.getString("db.pass");
    String hostame = resource.getString("db.host");
    String dbname = resource.getString("db.name");


%>


<%--değerleri ekrana buradan basıoyruz--%>
<b> Kullanıcı adı:</b> <%=username%> <br/>
<b> Şifre : </b> <%=password%>  <br/>
<b> Sunucu :  </b><%=hostame%>  <br/>
<b> Veritabnı: </b> <%=dbname%> <br/>

</body>
</html>
Bu işlemleri sırasıyla yaptıktan sonra config dosyasında ki değerler sırasıyla ekrana basılacaktır.



NOT: Normal şartlarda jsp dosyasından config dosyası okunmaz. Değrler controller(JAVA) aracılığıyla okunup view’a(JSP)  gönderilir. Burada adım adım işleyişi göstermek adına böyle bir örnek yaptım. Bir sonraki yazımda da controller aracılığıyla değerleri okuyup view edeceğiz

kaynak dosyalar : indirmek için tıklayın

19 Temmuz 2014 Cumartesi

Terminal üzerinden linux dosya izinlerini değiştirme

Merhaba, size kendim için aldığım notlardan bir paylaşım daha yapacağım.
Bu yazımda linux üzerinde bir dosyanın erşim yetkilerinin nasıl değiştirileceğini paylaşacağım.

Alttaki sarı renkli komutları terminalden çalıştırınca /var/www dizinine yazma/okuma/silme yetkisi verilmiş olur. Bildiğiniz üzere /var/www dizini bizim PHP kodlarımızın bulunduğu Apche nin varsayılan çalıştırma dizinidir. Normal şartlarda kodlarınız burada tutulur. Eğer kodlarınızı varsayılan dizinden çalıştırıyorsanız bu dosyaya yazma/silme/düzenleme yetkisi vermenizin güvenlik açığı oluşturacağını unutmayın.

NOT: Ben /var/www dizinine bu izni vermedim. :) Sadece ingilizce olarak bulduğum bir kaynağı türkçeleştirdim. 

Öncelikle linux kullanıcınızın www-data gurubuna dahil olduğundan emin olmalısınız. Eğer kullanıcınız burada tanımlı değilse aşağıdaki komutla kullanıcınızı bu guruba dahil edebilirsiniz.

sudo adduser kullaniciadiniz  www-data

bu işlemlerden sonra siz /var/www dizininin sahiplik ayarlarını değiştirebilirsiniz.


sudo chown kullaniciadiniz:www-data -R /var/www



Bir sonraki adımda izinleri değiştirecek komutu yazabilirsiniz.  

sudo chmod 0755 -R /var/www


sudo chmod g+s -R /var/www


İzin verirken kullanılan değerlerin anlamı aşağıdaki gibidir:

0644 :Oku, Yaz

0755 : Oku, Yaz, Çalıştır

0775 : Oku, Yaz, Çalıştır

0777 : Oku, Yaz, Çalıştır


Linux sunucuda Apache/Php/Postgres kurulumu

Merhaba, bu yazımda daha önce PHP ile development ortamı hazırlarken aldığım notlarımı paylaşacağım.
PHP ye ilk başladığımı zamanlarda windows ortamında geliştirme yapıyordum fakat bir ara PHP desteği verdiğim bir şirketle proje sözleşmesi yaparken geliştirmelerin ubuntu üzerinde yapılacağını konuşmuştuk.  Bu karar sonrasında internette çeşitli araştırmalar yaparken aldığım notlar aşağıdadır.
Aşağıdaki işlemler sırasıyla yaptığınızda:
Apache 
PHP
Java
Postgresql 
kurulumunu linux üzerinde gerçekleştirmiş olursunuz.

1-      SSH(server) kurulumu için terminal üzerinden
sudo apt-get install openssh-server

2-      Apache kurulumu
sudo apt-get install apache2

2-      enable rewrite engine (url rewrite)
sudo a2enmod rewrite


3-      Yapılan değişikliklerin aktif olabilmesi için apache servisini restart ediyoruz.
sudo service apache2 restart


4-      PHP kurulumu
sudo apt-get install php5


sudo apt-get install php5-cgi


sudo apt-get install php5-curl


sudo apt-get install php5-imagick


sudo apt-get install php5-pgsql



sudo apt-get install php5-xmlrpc

5-      Java kurulumu (Java olmadan Psql çalışmaz)

sudo apt-get install openjdk-7-jre

6-      Postgresql Kurulumu
Download : http://www.enterprisedb.com/downloads/postgres-postgresql-downloads   linkinden postgre linux versiyonu indirilir. İndirilen dosya  winscp aracılığıyla linux sunucuya gönderilir.
İndirilen sıkıştırılmış dosyayı açmak için  tar xvf komutu kullanılır

tar xvf ppasmeta-9.3.1.3-linux-x64.tar.gz


Komutu çalıştırmadan önce  terminal üzerinden dosyanın bulunduğu dizine  gidilmelidir.
Dosyanın çıkarıldığı dizine gidilerek  (.run)  uzantılı dosya çalıştırılır.

./ppasmeta-9.3.1.3-linux-x64.run



postgre ye uzak erişim için kurulum /opt/PostgresPlus/9.3AS/data/pg_hba.conf dosyası edit edilerek


aşağıdaki şekilde düzenlenir.





Bu işlemlerden sonra 192.168.2.91 nolu IP den bu sunucudaki postgre vertitabanına uzak erişim açılmıştır.


7-       Üstteki işlemlerden sonra  makine reboot edilir.


8-      Yüklenen Paketleri görmek için  
dpkg --get-selections| grep -v deinstall > output.log


(Yüklü dosyaları output.log dosyasına yazar)

Spring MVC ile Hello World

Merhaba, önceki yazımda intelliJ aracılığıyla spring projeleri oluşturmuştuk. Hatta intellij'nin bize yol göstermek  için  ekrana HelloWorld yazan örnek bir kodlama yaptığından bahsetmiştik.
NOT: Bu kodları inceleyerek java da spring aracılığıyla ekrana mesaj vermenin nasıl olacağı konusunda fikir edinebilirsiniz. ayrıca bu kodların ne anlama geldiğini açıkladığım  yazıyı inceleyebilirsiniz.

Bu yazımda Spring  ile ekrana HelloWorld mesajının nasıl yazdırılacağını anlatacağım.  Yazının uzun olmasını istemediğimden hemen kodlamaya geçmek istiyorum.

ilk olarak  intelliJ ile bir web projesi oluşturuyoruz.
oluşturduğumuz projenin son hali aşağıdaki gibi olacaktır.


oluşturduğumuz projede spring framworku kullanmak için maven install komutunu çalıştırmamız gerekiyor.
Maven tabına gelerek(varsayılan olarak intellij geliştirme ekranın sağ tarafında yer alır) install butonuna basıyoruz.


ikinci aşamada projede src/main/webapp/WEB-INF/pages dizinine gelerek burada  welcome.jsp adında bir jsp dosyası oluşturuyoruz.

welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title></title> </head> <body> Hello World </body> </html>

hemen ardından bu jsp dosyamızı view edecek controller dosyasını oluşturmamız lazım. projede src/main/java/ dizini altındaki com.company.controller paketine sağ tıklayarak
new/java class seçeneği ile WelcomeController  adında bir java dosyası oluşturuyoruz.
intellij de yeni class oluşturmanın kısa yolu:
ALT + 1  
ALT + insert




WelcomeController.java (Controller in ilk harfini ve ardından gelen her yeni kelimenin ilk harfini büyük harfle yazmak yazılım geliştirme standartlarındandır.)
package com.company.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; //sınıfın controller olduğunu belir @Controller public class WelcomeController { //URL deki /welcome parametresini görünce welcome metodunu çağır @RequestMapping(value = "/welcome" , method = RequestMethod.GET) public String welcome(){ return "welcome"; } }

üstteki WelcomeController.java da ve alttaki ayar dosyalarının derlenmesi sonucu Spring framework base URL(localhost:8080) den sonra /welcome görürse hemen welcome() metodunu çağıracak. bu metod bize görüntülemek istediğimiz jsp sayfasının adını döndürecektir.



web.xml
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Application</display-name> <!--ilk olarak mvc-dispatcher yükle--> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!--tüm url de eşleştirme yap(tarama yap)--> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>


mvc-dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--varsayıaln paket // spring başlaması için--> <context:component-scan base-package="com.company.controller"/> <!--jsp dosyalarını çağırırken /WEB-INF/pages/dosyadi.jsp şeklinde çağır--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> </beans>

NOT:  web.xml ve mvc-dispatcher-servlet.xml dosyalarında kodsal  değişiklik hiç yapmadım. Sadece daha anlaşılır olması adına bu dosyaların içinde yorum satırları yazdım.

üstteki kodları içerin projeyi çalıştırdığımızda ekranda HelloWorld mesajını yazacaktır.
URL : http://localhost:8080/welcome 
örnek görüntü aşağıdadır:



kaynak dosyalar : indirmek için tıklayın

İntellij ile web projesi oluşturma - (Açıklamalar)

Merhaba,
önceki yazılarımdan birinde size intellij ile web projesinin nasıl oluşturulacağını anlatmıştım. Projeyi oluşturduktan sonra intellij nin bazı dosyaları bize yol göstermek için kendisinin oluşturduğunu da belirtmiştim.
Bu yazımda da bir web projesi oluşturduğumuzda gelen dosyaların ve içindeki değerlerin ne anlama geldiğini paylaşıyor olacağım.

Dosya içeriklerini yorum satırlarıyla birlikte paylaşıyorum. Eğer yorumların renklendirilmiş olarak görmek istiyorsanız dosya içeriklerini intellij ye taşıyarak okuyun bu şekilde size renklendirilmiş görünümde daha anlaşılır gelebilir. Yada alttaki kaynak dosyaları indirip intellij ile açıp inceleyin.

NOT: Kafa karışıklına neden olmasın diye içeriklerin tamamının açıklamasını yazmadım. Şuan için açıklaması yapılanları bilmek yeterlidir. ilerleyen dönemlerde zaten tüm içerikleri bir bir ele alıyor olacağız.


  • MVC deki view kısmı olan hello.jsp dosyası. Controller dan gelen değerleri ekrana basar. 
ornek1\src\main\webapp\WEB-INF\pages\hello.jsp
<html> <body> <%--jsp de controller dan dönen mesajı ekrana yazmak için ${mesaj} kullanılır. yani dolar($) ve süslü parantezler{} arasına controller dan dönen değişken yazılır. örn olarak aşağıda controllerdan dönen message değişkeni ekrana yazdırılmaktadır.--%> <h1>${message}</h1> </body> </html>



  • MVC nin controller kısmıdır. tüm kontroller burada yapılır ve view'a değer gönderilir.
ornek1\src\main\java\com\company\controller\HelloController.java
package com.company.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; //@controller antotation u ile sınıfımızın bir control sınıfı olduğunu belirtti @Controller //@RequestMapping("/") ile localhost:8080/ dan sonra gelecek tüm değerlerde bu metodun çağrılacağını bildirttik. //eğer @RequestMapping("/login") desyedik localhost:8080/login değerinin geleceğini ifade etmiş olacaktık. @RequestMapping("/") public class HelloController { //Gelecek olan değerlerin GET metoduyla beklediğimizi @RequestMapping(method = RequestMethod.GET) ile belirttik @RequestMapping(method = RequestMethod.GET) public String printWelcome(ModelMap model) {//methoda ModelMap türümde bir parametre tanımadık //ModelMap olarak tanımladığımız model'e message diye bir anahtar ekliyoruz. ve bu anahtarın değeri ni Hello World olarak set ediyoruz. // burada model.addAttribute("name", "aliveli"); desyedik model'e name i aliveli olan değer eklemiş olacaktık model.addAttribute("message", "Hello world!"); //string olarak gideceğimiz sayfanın adını döndürüyoruz. burada hello değilde return home deseydik /WEB-INF/pages/ dizininde home.jsp sayfasına yönlendirmiş olacaktık return "hello"; } }




  • java da web projelerinin ayarlarının yapıldığı web.xml dosyasıdır.
src\main\webapp\WEB-INF\web.xml
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Spring MVC Application</display-name>

    <!--mvc-dispatcher-servlet.xml dosyasını web.xml dosyasının içinde çağırıyoruz.-->
    <servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--ilk yüklenecek olan servlet oalrak belirle-->
        <load-on-startup>1</load-on-startup>

</servlet>

    <!--/ koyarak http://localhost:8080/ den sonra tüm değerlerde buradaki kuralları uygula-->
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>




  • Java da yine bir ayar dosyasıdır. bu dosya web.xml aracılığıyla çağrılır.
ornek1\src\main\webapp\WEB-INF\mvc-dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--spring in ayağa kalkarken hangi paket ile projeye dahil olacağını burada set ederiz. aşağıdaki tanımda spring com.company.controller paketinde projeye giriş yapar.--> <context:component-scan base-package="com.company.controller"/> <!--spring projemizin jsp dosyalarına erişimi sağlarken baseURL(localhost:8080) den sonra gelen değerin önüne /WEB-INF/pages/ parametresini sonuna da .jsp parametresini ekler ne demek bu? örn: login sayfasına erişmek için siz localhst:8080/login yazdığınızı varsayarsak. spring login değerinden önce ve sonra gelecek değerleri hesap ederek /WEB-INF/pages/login.jsp ye dönüştürecektir. yani /WEB-INF/pages/ dizininin altında login.jsp sayfası arayacaktır --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> </beans>



  • Daha iyi anlatabilmek için başka nasıl bir tanımlama getirmek gerektiğini bilmiyorum ama şuan için asistan maven için yeterince açıklayıcıdır diye düşünüyorum :) pom.xml sayesinde bize projede lazım olan dosya adlarını  bu asistana belirtiyoruz. 
unutmayın maven install dediğimizde bu asistan pom.xml deki tüm tanımlı dosyaları indirip projeye dahil ediyor.
ornek1\pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.springapp</groupId> <artifactId>ornek1</artifactId> <!--war dosyası olarak output oluştur--> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <!--projenin adı--> <name>ornek1</name> <properties> <!--<properties> tagları arasında genellikle versiyon belirtimi olmak üzere--> <!--bu dosyanın(pom.xml) alt satırlarında birden fazla tekrar edecek olan özellikler tanımlanır.--> <!--spring versiyonunu bir değişken gibi kullanmak için <spring.version> tagları arasında kullanacağımız spring versiyonunu belirttik--> <spring.version>3.2.0.RELEASE</spring.version> <!--üstte <spring.version> tagı ile kullanacağımız spring versiyonunu 3.2.0.RELEASE olarak set ediyoruz. bu tanımalamadan sonra--> <!--dependency tagları arasında <version>${spring.version}</version> yazarsak maven otomotik olarak bizim 3.2.0.RELEASE--> <!--kastettiğimizi anlamış olacaktır--> </properties> <dependencies> <!--dependency(Bağımlılık) maven nedir adlı yazımda maven in bir asistan gibii çalıştığından bahestmiştik.--> <!--işte asistanın bağımlılıkları burada tanımlanıyor. dependency tagları arasında yazdığımız herşeyi maven projemizin yanında getiriyor.--> <!--core spring frameworkünü kullanacağımızı ve bu frameworkün dosya/jar larını bize getirmesini maven a bildiriyoruz--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!--aynı şekilde spring in web tarafında ihtiyacımız olduğunu asistanımız maven'a söyledik--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!--servlet-api ye projede ihtiyacımız olduğunu belirttik--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <!--jsp api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <!--spring-web (Model View Controler)--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!--spring test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <!--juint test--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> </dependencies> <!--build tagları ile projenin nasıl derleneceğini belirtiriz--> <build> <!--ornek1 olarak çıktı oluşturur--> <!--bu output projeyi oluşturduğumuz dizinin altında ornek1/target/ornek1.war şeklindedir--> <finalName>ornek1</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <includes> <include>**/*Tests.java</include> </includes> </configuration> </plugin> </plugins> </build> </project>

kaynak dosyalar : indirmek için tıklayın