22 Ocak 2013 Salı
Javada enum nasıl kullanılır.Enum nedir.
Merhabalar
Bu yazımda java da enum nedir ve nasıl kullanılır.Ayrıca javadaki geçmişini anlatağım.
Java enum' u C deki gibi kabul etmez.Gereksiz görür.Enum un işlevini bunun için interface le halledilebileceğini
Düşünmüşlerdir.Ve java beşe gelene kadar java da enum kullanımı bu şekildedir.
Sebebi ise Enumlardaki değer ve İçeriklerin değişik olmasıdır.Örneğin Amerikada ki hafta başlangıcı pazardan
başlar.Atanan değerin 1 den pazar gününden başlatılmış olması türkiye için sorun ve problemdir.Bundan dolayı java enumu
belli bir süre kabul edilmemiştir.
Inteface li enum versiyon kullanım vbe yaratımı şu şekildedir.
intarface days{
int MONDAY=0;
int Tuesday=1;
int WEDNESDAY=2;
}
public class DaysTest {
public static void printDay(int day){
switch(day){
case 0:System.out.println("pazartesi");break;
case 1:System.out.println("Salı");break;
case 2:System.out.println("Çarşamba");break;
default : System.out.println("bilinmeyen gün");
}
}
public static void main(String[] args) {
int day=Days.TUESDAY;
printDay(day);
printDay(Days.MONDAYS);
printDay(32);
}
}
Bu kodu n console çıktısı ise şu şekildedir.
Salı
pazartesi
bilinmeyen gün
Şeklindedir.
Java 5 de gelince ise javada enum kullanımı şu şekilde dir.
Bir enum oluşturulur.:
enum Day{
MONDAY,
TUESDAY,
WEDNESDAY;
}
Bir class oluşturulur.Ve içerik şu şekildedir.Her gün için bir case yaratılarak şartlandırılmış olur.Örnek
public class DayTest2 {
public static void printDay(Day day){
switch(day){
case MONDAY:System.out.println("Pazartesi");
}
}}
21 Ocak 2013 Pazartesi
Wrapper nedir nasıl kullanılır
Javada typler vardır.
ıkı grup da type vardır
1)primitive _____int short double vesaır bu alana gırer tek sey barındırır.
2)class_______ bunlar ıcınde bırcok sey barıdnırır.Methodlar primitive tipler bu alana girer.
Sorun bır tam sayıyı class olarak kullanmak ıstedıgımız veya bu nun gıbı bırde strıngı ıntegere cevırecegı zaman
sorunları cozmek ıcın kullanılır.
wrapperen ınstance olarak kullanımı
int i=3;
Integer w=new Integer(4);
ıntegerı klasa cevırırken
kutulama denıyor(Giydirme Bezeme manasında kullanılmış) boxing
Integer wi=new Integer(i);
"wi."..... şeklinde kullanılır
klası ıntegere cevırırken
Kutusuzlama(Çıkartma soyma manasında kullanılmış) umboxing
Integer iw=wi.intValue();
wrapperın strıng olarak kullanımı
String s=Integer.toString(i);
int' ı string e cevırmek ıcın
int is=Integer.parseInt(s);
su sekılde nesne yaratımı yapılabılır ancak burda otomatık olarak java kendısı yapmaktadır.
yanı nesneyı kendısı yaratmaktadır.her durumda nesne primitive tipe eşit deldir
ılk ornekde primitive tip nesneye su soyle cevırılır
1) otomatık kutulama
Integer xw=i;
Arka planda compiler Integer wi=new Integer(i) bu işlemi gerçekleştirr
2) olark nesne primitive tipe
Otomatıc kutusuzlama
Integer xi=w;
Ancak bunlar otomatık olarak arkada java compiler
1 sı nesne newlmeyı Integer w=new Integer(4);
ıkıncısı ıse Integer iw=wi.intValue(); yi çagırır
Javada typler vardır.
ıkı grup da type vardır
1)primitive _____int short double vesaır bu alana gırer tek sey barındırır.
2)class_______ bunlar ıcınde bırcok sey barıdnırır.Methodlar primitive tipler bu alana girer.
Sorun bır tam sayıyı class olarak kullanmak ıstedıgımız veya bu nun gıbı bırde strıngı ıntegere cevırecegı zaman
sorunları cozmek ıcın kullanılır.
wrapperen ınstance olarak kullanımı
int i=3;
Integer w=new Integer(4);
ıntegerı klasa cevırırken
kutulama denıyor(Giydirme Bezeme manasında kullanılmış) boxing
Integer wi=new Integer(i);
"wi."..... şeklinde kullanılır
klası ıntegere cevırırken
Kutusuzlama(Çıkartma soyma manasında kullanılmış) umboxing
Integer iw=wi.intValue();
wrapperın strıng olarak kullanımı
String s=Integer.toString(i);
int' ı string e cevırmek ıcın
int is=Integer.parseInt(s);
su sekılde nesne yaratımı yapılabılır ancak burda otomatık olarak java kendısı yapmaktadır.
yanı nesneyı kendısı yaratmaktadır.her durumda nesne primitive tipe eşit deldir
ılk ornekde primitive tip nesneye su soyle cevırılır
1) otomatık kutulama
Integer xw=i;
Arka planda compiler Integer wi=new Integer(i) bu işlemi gerçekleştirr
2) olark nesne primitive tipe
Otomatıc kutusuzlama
Integer xi=w;
Ancak bunlar otomatık olarak arkada java compiler
1 sı nesne newlmeyı Integer w=new Integer(4);
ıkıncısı ıse Integer iw=wi.intValue(); yi çagırır
20 Ocak 2013 Pazar
Javada static kullanımı(static neden atanır)
Merhabalar.
Öncelikle static javada static kullanımının nedenlerinden bir tanesi hafızadan kar sağlamak ve performans artırmak içindir.Javada object bir field için hafızada 4 bayt yer ayrılmaktadır.Static olarak tanımlanan fieldlar ise değişmeyen her field için ortak olan değerlerde kullanılır.Her field ve methodda statc olmayan ortak static bir değişken atanabilir.Örnek verilecek olursa bir bankanın 3 milyon müşterisi vardır.Ancak o Bankanın her bir müşterisi için atanan faiz getirisi veya götürüsü aynıdır.İşte bu sekilde 3 milyon müşterinin faiz oranlarını kaydeden bellekde object field Tanımlamak yerine bir tane static tanımlanarak bu iş halledilmiş olur.Ve toplam da hafızada tutulan yer sadece 4 bayt tır.
Aynı örnek üzerinden gidilecek olursa static tanımlanan değişkenleri her object kullanabilir.Bir değişkenin değerinin değiştrilmesi ile iş yükünden de kurtulmuş olunur.Müşteri faiz oranı diye static bir değişken tanımlanır.Faiz oranı değişirse eğer ;static değer değiştirilerek iş bitirilmiş olur.
Örnek: static double faizOran=12;
şeklindedir
static değerler için Rectangle clasında x bir değer için kullanım Rectangle.x=4;şeklindedir.Kısaca bir Instance yaratmadan kullanılır.Instance ı dahada açarsak normalde
Rectangle r=new Rectangle();
r.x=3;
şeklinde olan objec field kullanımı yerine static değer atanan field kullanımı yukarıda bahsettiğimiz şekildedir.
Ancak javada uzman lar için kullanımı sağlıklıdır.
19 Ocak 2013 Cumartesi
JSF Bean e parametre gonderme yontemleri en iyi yontem
JSF Bean e parametre
gonderme yontemleri en iyi yontem
<h:commandButton action="#{user.editAction}" > <f:setPropertyActionListener target="#{user.action}" value="delete" /> </h:commandButton>Command button ile bean e bu deger gonderilir bean tarafında ise set get ile alınır .
@ManagedBean(nae="user") @SessionScopedm public class UserBean{ public String action; public void setAction(String action) { this.action = action; } public String editAction() { //now action property contains "delete" } }
18 Ocak 2013 Cuma
PRIMEFACES FARKLI BİR VİEWA AJAXCALL YAPMAK
Primefacesda aynı view içinde ajax cagıracaksanız bunu dokumantasyondada yer alan asagıda sekilde yapabiliyorsunuz
| <h:panelGrid columns="2"> |
| <p:commandButton value="PrimeFaces" actionListener="#{ |
| <h:commandButton value="JSF Impl" actionListener="#{ |
| <f:ajax render="txt txts" execute="@form"/> |
| </h:commandButton> |
| </h:panelGrid> |
| <p:dataList id="txts" var="text" value="#{showcaseView.texts}" type="inset"> |
| <f:facet name="header">Values</f:facet> |
| #{text} |
| </p:dataList> |
| public void add() { |
| texts.add(text); |
| text = null; |
| } |
Yukarısı Ayni viewda ajax call yapmanın yontemidir .
Fakat Aynı viewda aynı işlemi yapmak için su sekilde bir işlem yapmamız gerekmekte.Diğer viewin içindeki form un idsi su sekilde verilmelidr
<p:commandButton value="Ekle"
action="#{AddBean.add}"
update=":formB:txts" process="@all" />
hedef ise su sekilde olmalıdır
<h:form id="formB">
<p:dataList id="txts" var="userShortInfo" ....
beanda calısan metodda ise donus degeri hedefin içindeki bulundugu view olmalıdır
public String tiklaKonusYapanKullanicilar() {
onlineTiklaKOnus= userService.
return "pm:digerViewinIdsi";
}
java.lang.ArrayIndexOutOfBoundsException : 1 org.primefaces.mobile.util. MobileUtils.buildNavigation( MobileUtils.java:33) Hatası
<f:facet name="left"><p:button value="Back" icon="back" href="#"/></f:facet>
seklinde bir hata yapmanızdan kaynaklaniyor href in içi bos olmamassi gerekiyor oldugu viewin yada sayfanin adresini verebilirsiniz
Javada Uygulama Portu adresi bilgilerine request ile ulasma
Javada Uygulama Portu adresi bilgilerine request ile ulasma
Javada
HttpServletRequest kullanılacak objemiz
request nesnesini olusturdugumuzu varsayalım
request .getLocalAddr() -Server in ip adresini String olarak doner
request .getLocalName() -requestin yapildigi serverin ismi
request .getServerName() - requestin gonderildigi serverin ismi
request .getLocalPort() - serverin requesti kabul ettiği port
request .getServerPort() - requestin gonderildigi port
request .getContextPath() - Context path olarak tanımladıgımız kısım orn godoro.com:8080/Dynamicapp/
17 Ocak 2013 Perşembe
programcılara ...
| |||||||||
PROGRAMCILARA ON EMİR0. Gördüğünü doğru yaz, yazdığını doğru oku. 1. Büyük harf yerine küçük, küçük harf yerine büyük kullanma. 2. Tek adı parçalama, ayrı adları birleştirme. 3. Açtığın her öğeyi kapa, açmadığın hiç bir öğeyi kapama. 4. Kullandığın her öğeyi tanıt, tanıttığın her öğeyi yerinde kullan. 5. Kullandığın her değişkenin türünü belirt ve hep bu türe uygun kullan. 6. Değişken yerine tür, tür yerine değişken kullanma. 7. Değişken yerine değer, değer yerine değişken kullanma. 8. Parametre isteniyorsa ver, sonuç dönüyorsa al. 9. Yapmadığının çalışmasını, ilk yaptığının doğru çalışmasını bekleme. | |||||||||
Ck editör kullanımı
Ck editör kullanımı
ckeditör konuşlandırma
Merhaba arkadaşlar bu yazımda becerim mukabilinde java ile ck editör kurulumunu anlatmaya çalışacağım.Bu içeriği türkçe kaynaklarda bulamamakla beraber bulduğum diğer kaynaklarda ise eksik olduğunu farketmiş bulunmaktayım.Benim izlemiş olduğum yontem biraz farklı olsada nihayetinde işimizi görecektir.Oncelikle ckeditör download edin içerisinde bir jar dosyası ile birlikte klasör gelecektir.Klasörü wep pages in altına kopyalayın.jar dosyasını ıse librarry dizininin altına kopyalayın.Ekletiyi kullanmadan önce dikkat edilmesi gerekenler ise şunlar:1:tomcatimiz 7.0 olmalıdır ck editör 'ün son versiyonları aksi durumlarda çalışmamaktadır.
2:web deki kaynakların genelinde jar dosyasını web inf in altına konuşlandırmamız gerektiği söylenmekte ancak ben bunu denedim olmadığı için library ye konuşlandırdım ve çalıştı.Kısaca bu notla birlikte karşılaştırma yapariseniz bir yanlışlık yoktur.
ckeditör Kullanım
Jsp file ın içerisinde öncelikle import umuzu yapmamız gerekmektedir:<%@taglib uri="http://ckeditor.com" prefix="ckeditor" %>
bu kodu import etmemiz ilk aşama.(İşte tomcat version problemi burda çıkmaktadır burada java tomcat version problem veya hata alırsanız versiyonunuzu yükseltin)Sıradaki işlemimiz ise kaynak sitelerinde belirtilmemiştir.Sayfa head tag i içerisinde
<script src="../ckeditor/ckeditor.js"></script>
tag ini kullanmamız gerekmekte.Ancak burdakı path i doğru yapmanız gerekmektedir"../ckeditor/ckeditor.js
".en son yapmamız gereken ıse eger form kullanmıs ısenız su sekılde yapmanız gerekır
<form action="ArticleInsert.jsp" method="post">
<label for="textareaId"></label>
<textarea class="br_problem" id="articleBodyTwoId" name="articleBodyTwo" cols="20" rows="10"></textarea><br />
<input type="submit" name="gonder" value="İçeriği ekle"/><br />
</form>
<ckeditor:replace replace="articleBodyTwoId" basePath="/ckeditor/" />
Bu şekilde ck editör çalıştırılabilir.Ancak kullandğım editörün genel bir problemi vardı kaynaklardan araştırmama rağmen bulamadım .kopyalanan içeriklerin her satırının sonuna <br> ve <p> tagini eklemektedir.Kaynağın içine girip html kodalrının düzenlenmesine ihtiyaç duymaktadır.
9 Ocak 2013 Çarşamba
PRİMEFACES Invalid byte 1 of 1-byte UTF-8 sequence. Hatası
<p:commandLink value="/user/OnlineUser.jsf"> Evet</p:commandLink>
<p:commandLink value="#littleThan">Hayır</p: commandLink>
<p:commandLink value="#littleThan">Hayır</p:
Kullanımından kaynaklanıyor .Deploy hatası gibi gozuksede deployment kısminda degil publish edilirken olusn hata filter kullanılırsa yada debugger farkedilebilir .Bu hata commandlink dısında ki taglardan dolayıda olusabilir
- <p:commandLink id="ajax" updat
e="panel,display" actionListen er="#{pprBean.savePerson}" sty le="margin-right:20px;"> - <h:outputText value="
Ajax Submit" /> - </p:commandLink>
Seklinde olması gerekiyor .
7 Ocak 2013 Pazartesi
Krakter problemi çözümleri
Türkçe karakter problemi veya değişik karakterler sürekli karşımıza çıkmaktadır.Bir keresin de bu problemle bir hafta uğraşmışlığım vardır.Birincil öncelik DB mizin türkçe karakterlerle çalışıyor olmasıdır.
Yani dbde şu iki seçenekten birisi seçili olmalıdır.Latin_5 ve utf8_turkish_ci seçili olmalıdır.Birkaç kaynakda da utf8_unicode_ci bu seçimin de problemi çözdüğünü söylemektedir.Ancak denemedim.
Java için <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> head de bu kod,importta ise <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>bu kodu kullanmamız gerekmektedir.
Kesin olarak çözeceğini düşündüğüm yöntem ise java kodu içerisinde şu kodlamanın yer alması database ile entegre adilmesi şartı ile request.setCharacterEncoding(" UTF-8");
budur.requestten gelen her kodu utf-8 karakter grubuna atarak database düzgün şekilde göndermektedir.Normal de bu işleme de ihtiyacınız olmamyabilir. Ve sadece database inizi türkçe uyumlu hale getirerek bu problem ortadan kaldırılabilir.
Gerek donanım ayarları gerekse derleyici ayarlarından kaynaklı çözülememiş problemlere en uygun çözüm requestten gelen her kodun pars edilmesidir.
Faydalanabileceğiniz kaynaklar:
godoro
Yani dbde şu iki seçenekten birisi seçili olmalıdır.Latin_5 ve utf8_turkish_ci seçili olmalıdır.Birkaç kaynakda da utf8_unicode_ci bu seçimin de problemi çözdüğünü söylemektedir.Ancak denemedim.
Java için <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> head de bu kod,importta ise <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>bu kodu kullanmamız gerekmektedir.
Kesin olarak çözeceğini düşündüğüm yöntem ise java kodu içerisinde şu kodlamanın yer alması database ile entegre adilmesi şartı ile request.setCharacterEncoding("
budur.requestten gelen her kodu utf-8 karakter grubuna atarak database düzgün şekilde göndermektedir.Normal de bu işleme de ihtiyacınız olmamyabilir. Ve sadece database inizi türkçe uyumlu hale getirerek bu problem ortadan kaldırılabilir.
Gerek donanım ayarları gerekse derleyici ayarlarından kaynaklı çözülememiş problemlere en uygun çözüm requestten gelen her kodun pars edilmesidir.
Faydalanabileceğiniz kaynaklar:
godoro
Kaydol:
Yorumlar (Atom)