19 Temmuz 2014 Cumartesi

İ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

Hiç yorum yok:

Yorum Gönderme