Burak IŞIKLI :))

Google App Engine Java İpuçları

Posted in Java by Burak IŞIKLI on 14 Ağustos 2009

Google, geçtiğimiz günlerde app engine yani uygulama sunucusunu piyasaya sürdü. İlk izlenimlerimin ardından app engine ile ilgili birkaç detay vermek istedim. Yemek tarzındaki kurulumu birçok sitede kurulumun nasıl yapılacağını bulmanız mümkün. Ben de ayrıca java programcıları ve teknolojileri derneği tarafından yayınlanmış sitenin pdf dosyasını veriyorum.

Kurulumu yapıp örnek bir proje oluşturduktan sonra uygulamanın nasıl çalıştığını anlayalım. Öncelikle deploy yapmadan projeniz web’e atılmaz. Bu nedenle de yerel alanda istediğiniz kadar değişiklik yaparken asıl sayfanız(belirttiğinizad.appspot.com) herhangi bir değişiklik olmaz.

Her zaman belirttiğiniz proje isminin servlet’i oluşturuluyor. Örneğin deneme diye proje oluşturuyorsanız servlet’inizin adı otomatik olarak denemeServlet oluyor. Peki bunu nasıl değiştireceğiz? Refactor kullanmanız ismini değiştirmek için yeterli gelmiyor. Bunu deneyip deploy ederseniz karşınıza boş bir sayfa çıkacaktır. Bildiğiniz üzere bu servlet’imizin bağlı olduğu web.xml dosyası olması gerekiyor. İşte bu dosya war klasörünün altındaki web-inf klasöründedir. Aşağıdakine benzer bir dosya karşınıza gelecektir.

web.xml


<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
 <servlet>
 <servlet-name>Deneme</servlet-name>
 <servlet-class>edu.burakkk.google.app.DenemeServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>Deneme</servlet-name>
 <url-pattern>/deneme</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
 <welcome-file>index.html</welcome-file>
 </welcome-file-list>
</web-app>

Buradan servlet-class ismini de değiştirerek servlet isminde kolayca değişiklik yapabilirsiniz. Ayrıca url-pattern ile servletinizin çalışacağı uzantıyı da değiştirebilirsiniz. deneme yerine deneme.do yapabilirsiniz. Başlangıçta google app engine tarafından oluşturulan index.html yerine de welcome-file değiştirerek de kendi istediğiniz dosyayı hatta çalıştıracağınız servlet’i yapabilirsiniz. Bunun anlamı xxx.appspot.com sayfasını açtığınızda kendi tarafından oluşturulmuş index sayfası yerine sizin sayfanız çıkabilir.

Eğer uygulama ismini veya versiyonu değiştirmek istiyorsanız aynı dizindeki(war/web-inf) appengine-web.xml dosyasından yapacaksınız.

appengine-web.xml


<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
 <application>bisikli</application>
 <version>1</version>

 <!-- Configure java.util.logging -->
 <system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
 </system-properties>

</appengine-web-app>

Application kısmından uygulama ismini versiyon kısmından da versiyonunu değiştirebilirsiniz.

Bunları dikkate alarak anasayfamızda gerçek ip’nizi çıkaran bir servlet yapalım.

edu.burakkk.google.app isimli paket ipAlma isimli servlet yaratıyoruz.

ipAlma.java


package edu.burakkk.google.app;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.*;

@SuppressWarnings("serial")
public class ipAlma extends HttpServlet {
 public void doGet(HttpServletRequest req, HttpServletResponse resp)
 throws IOException {
 resp.setContentType("text/html");
 PrintWriter out = resp.getWriter();
 out.println("IP: " + req.getRemoteHost());
 out.flush();
 out.close();
 }
}

web.xml


<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
 <servlet>
 <servlet-name>ipAlma</servlet-name>
 <servlet-class>edu.burakkk.google.app.ipAlma</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>ipAlma</servlet-name>
 <url-pattern>/ipAlma</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
 <welcome-file>ipAlma</welcome-file>
 </welcome-file-list>
</web-app>

Bu projeyi deploy ettiğinizde anasayfanızda IP: XXXXX şeklinde ip’nizi yazan bir web sayfası çıkacaktır. Örnek sayfaya http://bisikli.appspot.com/(sizinUygulamaAdınız.appspot.com) adresinden ulaşabilirsiniz. Ayrıca aynı sayfaya servlet’mize http://bisikli.appspot.com/ipAlma bu adresle de ulaşabiliriz.

Java Bean

Posted in Java by Burak IŞIKLI on 21 Haziran 2009

Java Bean’ler reusable(yeniden kullanılabilir) yazılım bileşenidir. Java Bean’ler bir serializable(serileştirebilir), herhangi bir argümanı olmayan constructor’a sahip ve getter-setter metodunun kullanıldığı java objesidir. Bunun için bazı şartları sağlaması gerekmektedir:

* Sınıfın public default constructor’ı olmalıdır.
* Sınıf properties(özellikleri) set-get metodlarını kullanarak erişilmelidir.
* Sınıf serializable(serileştirebilir) olmalıdır.

Java Bean’ler Enterprise Java Bean’lerden farklıdır, karıştırılmamalıdır.

PersonBean.java

package edu.burakkk.bean;
import java.io.Serializable;

/**
 * Java Bean
 *
 *@version 1.0 Release 1
 *@author Burak ISIKLI
 *
 **/

public class Bean implements Serializable {
 static final long serialVersionUID = 102755394728345L;
 private String name;
 private boolean happiness;

 /** No-arg constructor (takes no arguments). */
 public Bean() {
 }

 public String getName() {
 return this.name;
 }
 public void setName(final String name) {
 this.name = name;
 }

 public boolean isHappiness() {
 return this.happiness;
 }
 public void setHappiness(final boolean happiness) {
 this.happiness = happiness;
 }
}

TestPersonBean.java

package edu.burakkk.bean;

public class TestBean {
 public static void main(String[] args) {
 Bean person = new Bean();
 person.setName("Burakkk");
 person.setHappiness(true);

 // Output: "Burakkk [Mutlu]"
 System.out.print(person.getName());
 System.out.println(person.isHappiness() ? " [Mutlu]" : " [Mutlu Değil]");
 }
}

testPersonBean.jsp

<% // Use of PersonBean in a JSP. %>
<jsp:useBean id="person" scope="page"/>
<jsp:setProperty name="person" property="*"/>

<html>
<body>
Isim: <jsp:getProperty name="person" property="name"/>
Secenek: <jsp:getProperty name="person" property="happiness" />

<form name="beanTest" method="POST" action="testPersonBean.jsp">
Isim: <input type="text" name="name" size="50">
Secenek:
<select name="happiness">
 <option value="false">Mutlu</option>
 <option value="true">Mutlu Degil</option>
</select>
<input type="submit" value="Test et">
</form>
</body>
</html>

Bu örnekte isminizi ve mutlu olup olmadığınızı soran bir java bean yaptık. Bu java bean’i hem java’da derleyerek hem de jsp aracılığıyla ulaşabiliriz. Java’da derlediğiniz takdirde “Burakkk [Mutlu]” ekranda yazacaktır. JSP’de ise bir form ekrana gelerek form girdiğimiz değerlerle sayfayı sürekli güncelleyecektir.

Kaynaklar:

http://en.wikipedia.org/wiki/JavaBeans

http://java.sun.com/docs/books/tutorial/javabeans/whatis/index.html

http://www.roseindia.net/ejb/introduction/javabean.shtml

Tagged with: , ,