11 Şubat 2013 Pazartesi
JSTL XML Tags kullanımında javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/xpath/VariableStack solution hatasının çözümü
Projemize xalan-2.7.1.jar dosyasını buradan indirip eklediğimiz takdirde bu mesele çözüme kavuşmuş olacaktır...
10 Şubat 2013 Pazar
JSTL SQL TAG İLE JSP SAYFALARINDA VERİTABANI İŞLEMLERİ
Öncelikle
şunu belirtelim ki JSTL SQL taglari kullanarak yapacağımız veritabanı
işlemlerini Javabeanler ile ya da Servlet tarafında yapabiliriz. Fakat JSTL
taglari her anlamda işimizi kolaylaştırır. Özellikle de JSTL Core tags. Önümüz deki
yazılarımızda bu JSTL taglarinden bahsetmeye devam edeceğiz. JSTL (Java
Standart Tag Library) nin kısaltmasıdır.
Şimdi gelelim JSTL sql taglarini kullanarak
veritabanı işlemlerine. Veritabanında aslında güncelleme ve sorgulama dışında başka
bir sorgu tipi yoktur. Ekleme ,silme ve güncelleme (INSERT,DELETE ve UPDATE)
veritabanında güncelleme sorgu grubuna girip Javada yapılırken executeUpdate() kullanılır.
Veritabanında var olan verileri çekmek için ise executeQuery() metodunu kullanıyorduk.
Şimdi bu 3 temel işlemi bir de JSP tarafında yapalım.
JSP sayfalarında bu JSTL taglarini kullanmak için
JSTL 1.1 kütüphanesini eklememiz lazım. Daha sonra sql taglarini kullanabilmek
için aşağıda ki kodu en başa yazmamız gerekir.
<%@taglib
uri="http://java.sun.com/jsp/jstl/sql"
prefix="sql" %>
Daha sonra her
sql tag kullanacağımız sayfa da bulunması gereken kod parçası ise şudur ki bu
kod ile MySql bağlantısı kurabilmek için gerekli olan bağlantı bilgilerini
ihtiva eder.
<sql:setDataSource
var="dataSource" driver="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3307"
user="root"
password="root"
scope="session" />
Şimdi kabul edelim ki elimizde bir HTML formu var ve o HTML formunda da
isimleri soyadi ,adi ve tel olan 3 tane de veri bulunsun.
INSERT İŞLEMİ
<sql:update
var="veri" dataSource="${dataSource}">
INSERT INTO test.tel_rehberi
(ad,soyad,no)
VALUES (?,?,?)
<sql:param value="${param.adi}"
/>
<sql:param value="${param.soyadi}"
/>
<sql:param value="${param.tel}"
/>
</sql:update>
<c:if test="${veri>=1}">
<c:out value="${param.adi}
${param.soyadi} kaydedildi."></c:out>
<a
href="index.jsp">Kayit
sayfasina donmek icin tiklayiniz...</a>
</c:if>
DELETE İŞLEMİ
<sql:update
var="veri" dataSource="${dataSource}">
DELETE FROM test.tel_rehberi
WHERE ad=? AND
soyad=?
<sql:param value="${param.adi}"/>
<sql:param value="${param.soyadi}"/>
</sql:update>
<c:if
test="${veri>=1}">
<c:out value="${param.adi}
${param.soyadi} silindi."></c:out>
<a
href="index.jsp">Kayit
sayfasina donmek icin tiklayiniz...</a>
</c:if>
23 Ağustos 2012 Perşembe
Google’ın Autocomplete Algoritması ve JSuggestField Bileşeni
Google arama motorunda herhangi bir konuda arama
yaparken bize tavsiyeler sunması autocomplete
algoritması sayesindedir. Bu algoritma belki de son zamanların en güzel
algoritmalarından birisidir.
İşte bu işi yapan Java da bir class vardır. Bu classı
kullanmak için buradan jar
dosyasını indirmek gerekiyor. Daha sonra
bu jar dosyasını projemize eklememiz gerekiyor.
Burada kullanacağımız sınıf JSuggestField classıdır. Onunda
kullanımı için aşağıda ki kodlara bir göz atabilirsiniz.
package
suggestionjava;
import
ch.rakudave.suggest.JSuggestField;
import
java.awt.Dimension;
import
java.awt.FlowLayout;
import
java.util.Vector;
import
javax.swing.JFrame;
public class SuggestionJava
{
public static void main(String[]
args) {
Vector<String> v=new
Vector<>();
Dimension
d=new Dimension(60,20);
JFrame f=new JFrame();
v.add("Mesut");
v.add("Emre");
v.add("Emirhan");
v.add("Hüsamettin");
v.add("İlker");
v.add("Muhammed");
JSuggestField sg =new
JSuggestField(f);
sg.setSuggestData(v);
sg.setPreferredSize(d);
f.setVisible(true);
f.setLocationRelativeTo(null);
f.setSize(200, 100);
f.setLayout(new FlowLayout());
f.add(sg);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Bu classın constructoru gereği içine bir frame ve bir
Vector atabiliriz. Ya da sadece Frame de alabiliriz. Biz yalnızca Frame nesnesi
alıp daha sonra setSuggestData()
metodu ile Vector nesnesi ekledik. Program çalışında karşımıza bir textField
gelecek. Netekim bu class JTextField classında türetilmiştir. Pencere ki
textField’in en ve boy uzunluğunu ayarlamak için Dimension nesnesinden
yararlanılır. Bu nesne 11. Satırda tanımlanmıştır.
Vector nesnesine gördüğünüz gibi veri ekledik. Daha
önceki yazılarımda bu classdan bahsetmiştim. Dinamik bir dizi gibi
düşünebiliriz. add() metodu ile bu dinamik diziye eleman ekleyebiliriz. Bu elemanların
String nesnesi olması şarttır. Programın görüntüsü aşağıda ki gibidir.
Kaydol:
Kayıtlar (Atom)


