arşiv

yazılar buna göre etiketlendi; ‘java’

Jsf 2.0 İle Login.jsf (with PrimeFaces)

Cumartesi, 19 Şub 2011 jdeveloper yorum yok

Bu defa size login işleminden bahsedeceğim.Aslında işlem biraz basit

ama biraz java bean ile durumları oynayabilirsiniz.Örnek olarak Jpa ile veritabanına baglanarak login işlemini onaylatabilirsiniz.Guvenlik durumunu ayarlayabilirsiniz.Bu gibi durumları bean içinde yapabilirsiniz.Şimdilik ben veritabanına falan baglanmayacağım.Basit olarak bir şifre olacak bu şifrenin girilip girilmediğini onaylayacağız.Yanlış veya boş geçilme durumunda ise bazı mesajlar ekrana çıkartacağız.

Şimdi yine bir önceki anlattığım gibi araçlar kullandım.Tabiki bazı resim ve cssler için oynamanız gerekebilir.Şimdi ilk olarak yapmamız gereken yine aynı şekilde bir dynamic web project acmalıyız.

File->New->Dynamic Web Project
Bundan sonra web.xml dosyamızı jsf ve primefacese göre configire etmemiz lazım.

web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?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"
 id="WebApp_ID" version="2.5">
 <display-name>Calendar</display-name>
 
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup> 1 </load-on-startup>
 </servlet>
 
 <!-- Faces Servlet Mapping -->
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <!-- Prime Resource Servlet -->
 <servlet>
  <servlet-name>Resource Servlet</servlet-name>
  <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
 </servlet>
 
 <!-- Prime Resource Mapping  -->
 <servlet-mapping>
  <servlet-name>Resource Servlet</servlet-name>
  <url-pattern>/primefaces_resource/*</url-pattern>
 </servlet-mapping>
 
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
 </welcome-file-list>
</web-app>

Bu işlemi yaptıktan sonra şimdi yapmamız gereken xhtml sayfamızı tasarlamamız.Tabi ki burada sizin isteginize ve zevkinize kalmıs bir durumdur.Benim suan yaptıgım tasarımın kodu aşağıdaki gibidir.

login.jsf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">
 
<h:head></h:head>
<h:body>
<p:panel id="panel" header="Üye Girişi" footer="Mehmet Demircioğlu">
<h:outputLabel value="Giriş İçin İcona Tıklayınız--->"></h:outputLabel>
<h:outputLink id="loginLink" value="javascript:void(0)" onclick="dlg.show()" title="login">
	<p:graphicImage value="/images/login.png" />
</h:outputLink>
</p:panel>
<p:growl id="growl" showDetail="true" life="3000" />
 
<p:dialog id="dialog" header="Kullanıcı Girişi" widgetVar="dlg">
	<h:form>
 
		<h:panelGrid columns="2" cellpadding="5">
			<h:outputLabel for="username" value="Kullanıcı Adı: *" />
			<h:inputText value="#{loginBean.username}"
					id="username" required="true"
requiredMessage="Kullanıcı Adını Bos Gecemezsiniz." />
 
			<h:outputLabel for="password" value="Şifre: * " />
			<h:inputSecret value="#{loginBean.password}"
 
id="password" required="true" requiredMessage="Şifreyi Bos Gecemezsiniz"/>
 
			<f:facet name="footer">
				<p:commandButton value="Giriş" update="growl"
					actionListener="#{loginBean.login}"
					oncomplete="handleLoginRequest(xhr, status, args)"/>
			</f:facet>
		</h:panelGrid>
 
	</h:form>
</p:dialog>
 
<script type="text/javascript">
	function handleLoginRequest(xhr, status, args) {
		if(args.validationFailed || !args.loggedIn) {
			jQuery('#dialog').effect("shake", { times:3 }, 100);
		} else {
			dlg.hide();
			jQuery('#loginLink').fadeOut();
		}
	}
</script>
 
</h:body>

Bu işlemi yaptıktan sonra artık java kodlarımızı konusturabiliriz.Java Beanımız aşagıdaki gibi kod şeklindedir.

LoginBean.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package org.mhmt.dem;
 
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
 
import org.primefaces.context.RequestContext;
 
@ManagedBean(name="loginBean")
@RequestScoped
 
public class LoginBean {
 
	private String username;
 
	private String password;
 
	public String getUsername() {
		return username;
	}
 
	public void setUsername(String username) {
		this.username = username;
	}
 
	public String getPassword() {
		return password;
	}
 
	public void setPassword(String password) {
		this.password = password;
	}
 
	public void login(ActionEvent actionEvent) {
		RequestContext context = RequestContext.getCurrentInstance();
		FacesMessage msg = null;
		boolean loggedIn = false;
 
		if( username.equals("Mehmet") &&  password.equals("jdeveloper")) {
 
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("HOŞ GELDİNİZ. " + username + " Kullanıcımız. "  + "!"));
 
		} else {
			loggedIn = false;
			msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Hatalı Giriş", "Şifre veya Kullanıcı Adınız yanlış..");
		}
 
		FacesContext.getCurrentInstance().addMessage(null, msg);
		context.addCallbackParam("loggedIn", loggedIn);
	}
 
}

İşlemleri tamamladıktan sonra artık çalıştırabiliriz.Web browsera şu linki yazarak çalıştırabiliriz.

http://localhost:8080/LoginApplication/Login.jsf

Artık işlemler tamamlanmıstır.Hepinize kolay gelsin.

Jsf 2.0 Eclipse Üzerinde Çalıştırılması

Cumartesi, 05 Şub 2011 jdeveloper yorum yok

İlk olarak jsf nedir? Bu soruyu kısaca açıklayalım.Jsf yeni nesil web uygulama çatısı diye açıklayabiliriz.MVC tasarım destğini oldugunca kullanması avantajlarından sayailiriz.Bazı özelliklerinden bahsedecek olursak;

  • Geniş çaplı marka ve endüstri desteği
  • Web uygulaması geliştirmede Daha yüksek  seviyeli soyutlama
  • Davranış ve görüntüleme arasında iyi bir ayrım sağlar
  • Bileşen modeline dayanır.
  • Genişletilebilir bileşen ve rendering mimarisi

Şimdi eclipse üzerine nasıl entegre edeceğiz acıklayalım;

1-İlk olarak buradan Jsf 2.0 jar dosyalarını indiriyoruz.(Binary Bundle olanın en son sürümünü indiriyoruz.)

2-Ecilipse acıyoruruz.Buradan New->DynamicProject seçiyoruz.

Yukarıdaki resim gibi işlemleri hallediyoruz.Unutmayın configaritondan JavaServer Faces 1.2V  veya 2.0V seciniz.

3-Daha sonra Windows sekmesinden Prefences seciyoruz.Daha sonra buradan da Java altında bulunan Build Path ile yeni bir User Library olusuturuyoruz.Bunu yapmamızın sebebi jsf sayfaları olustururken jsf dosyalarını kolaylıkla projemızın içine alınmasıdır.

4-Daha sonra jstl4.jar dosyasını indirip,projemizin WEBCONTENT altında bulunan lib klasörünün içine atıyoruz.

5-Daha sonra önceden oluşturmuş oldugumuz User libraryde bulunan Jsf libini projemizin içine alıyoruz.

6-İşlemler bittikten sonra proje klasörü aşağıdaki şekilde gibidir.

Burada faces-config.xml ise jsf ayarlarıdır.Buradan istediğiniz şekil değiştirebilirsiniz.Şimdi kısa bir örnek yapalım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
 
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
 
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
 
<!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=ISO-8859-1">
 
jsf Ornek-mehmetdemircioglu.com
 
</head>
 
<body>
 
<f:view>
 
<h:inputText>Merhaba Dünya!!</h:inputText>
 
</f:view>
 
</body>
 
</html>

Jsf ile hibernate entegrasonu yazısını kısa zaman içerisinde bloglayacağım.

Categories: J2EE Tags: , ,

Singleton Tasarım Şablonu

Cumartesi, 05 Şub 2011 jdeveloper yorum yok

Programlama yaparken bazı tasarım şablonlarını kullanırız.Biraz araştırmalarımdan sonra Singleton Design Pattern anlatmaya çalıcagım.Java ilede bir örnek ile gösterecem.İngilizcesinden de anlaşıldığı üzere teklik üretim diyebiliriz.Şimdi açıklayalım;

Singleton tasarımı kısaca bir sınıftan sadece bir tane kalıtım yoluyla yeni bir nesne olusturma diyebiliriz.

Bu yüzden Singleton tasarım şablonu ile geliştirilecek sınıfın tasarımı, sınıfın sadece bir örneğinin oluşturulabilir olmasını sağlayacak şekilde hazırlanmalıdır.

Bir nesne oluşturulurken sınıfın ilk olarak constructor methodu çağrıldığı için, Singleton nesneleri tasarlarken sınıfların constructor (yapılandırıcı) methodlarını private olarak tanımlarsak, sınıfın örneğini, sınıf dışından oluşturulmasının engellemiş oluruz.

Singleton nesneleri tasarlarken göz önünde bulundurmamız gereken bir diğer nokta da, singleton nesnenin var olan tek örneğini istenilen durumda döndürecek olan methodun staticolarak tanımlanmasıdır. Böylece sınıfın herhangi bir örneğini oluşturmadan (zaten oluşturamıyoruz) doğrudan bu methodu çağırarak, var olan tek nesneyi istediğimiz an çağırabiliriz.Şimdi örneğimizi inceleyelim;

Burada sınıfın nesnesine sadece getExam() ; ile ulaşabilecektir.Alt tarafta bulunan thread ile ana sınıfımız 150 ms bekleyecektir.Şimdi bir test java ile bunları cağıralım;

Kodumuz çalıştırdığımız zaman gördüğünüz gibi sadece 1 defa yapısal sınıfı bir defa çağırmaktadır.Bunu daha ayrıntılı bir şekilde incelemek isterseniz Özcan Acar makalelerini incelemenizi tavsiye ederim.

Sil Baştan-Ken Grimwood

Cumartesi, 05 Şub 2011 jdeveloper yorum yok

Bu yaz  okuduğum kitaplar içerisinde en güzellerinde biri diyebilirim.Kitabı okumamın ve seçmemi nedenlerinden biri kitabın kapak kısmında bulunan “Hayatımızı tekrar,tekrar ve tekrar yaşamak zorunda kalsaydınız…” cümlesi  diyebilirim.Kitap inanılmaz bir derecede sürükleyici ve enterasan olaylarla doludur.

Kitabın kahramanı olan Jeff Winston bu şansı birkaç kez elde ettiği halde hayatta sıkışıp kalmıştır. Jeff Winstonhayatta hiç beklemediği anda ölür ve tekrar hayata gözlerini açar, takvime baktığında ise 1963 yılını göstermektedir. O sabah 18 yaşında, üniversite yatakhanesinin duvarlarına bakarak uyanır. Her şey eskisi gibidir… tek bir fark dışında: Jeff geleceği avcunun içi gibi bilmektedir. Futbol ligi final maçlarından at yarışlarına kadar kimin kazanacağını, Wall Street’te köşeyi dönmek için hangi şirketlere yatırım yapmak gerektiğini… Yalnız, bilmediği bir şey vardır: Neden hayatını sil baştan yaşamak zorundadır? Sevdiği her şeyi ve herkesi kazanıp kaybetmeye daha ne kadar devam edecektir?

Sonuc olarak insanlar aynı hayatı yaşaması bazen kötü gecen günlerini muhtesem yasama döndürmek isterken daha berbat bir duruma getirebiliyor.Bence en iyisi hayatın anlık olmasıdır.Herşey tek bir zaman ve döngüsüz yaşanmalıdır.Yaşamın nasıl bize davranacağını bildiğimiz durumda yaşamdan zevk ve heyacan almayabiliriz.

Birçok dile çevrilen ve listeleri alt üst eden Sil Baştan hayatın karmaşık döngüsünü sorgularken hayal gücünüzü de sonuna kadar zorluyor.

Çok sıradışı bir kitap olmasından dolayı herkesin merakla okuyacığını düşünüyorum.