22 Ağustos 2012 Çarşamba

ZK FRAMEWORK ILE SUNUCUYA  DOSYA YÜKLEME (FILE UPLOAD TO SERVER WITH ZK FRAMEWORK)

Merhaba arkadaşlar.
Ftp kullanmadan sunucuya dosya yükleme yapacağız.
Kullanılan web framework   =Zk Framework
Kullanılan Programlama dili = Java
2 tane kod parçası işimisi görecektir.
Zk
<?xml version="1.0" encoding="UTF-8"?>
<zk xmlns="http://www.zkoss.org/2005/zul" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">
       <window id="dosyayukleme" use="DosyaYukleme"
             border="none" height="100%" width="100%"  >
                                                  
             <hbox>
                    <button id="upload" label="Dosya Ekle" onClick="dosyayukleme.upload()"
                           upload="true"
                           style="background-color:#f3f3f3">
                    </button>
                   
              </hbox>     
       </window>
</zk>
Java
public class DosyaYukleme extends Window {
       private int sayac=0; //Bu değişkeni oluşturmamızın nedeni bir dosyayı 2 yuklenmesini engellemektir.
      
       public void upload() throws Exception {
            
             Button upload = (Button) getFellowIfAny("upload");
            
             upload.addEventListener("onUpload", new EventListener() {
                   
                    public void onEvent(Event event) throws Exception {
                           w.setSayac(w.getSayac()+1);
                           ServletContext context = (ServletContext) Executions
                                        .getCurrent().getDesktop().getWebApp()
                                        .getNativeContext();
                           String prefix = context.getRealPath("/");
                           String path = prefix + "\\documents\\";
                          
                           Media media = ((UploadEvent) event).getMedia();
                           try {
                                  Files.copy(new File(path +media.getName()),media.getStreamData());
                           } catch (Exception e) {
                                  try {
                                        Files.copy(new File(path + media.getName()),null, media.getStringData());
                                  } catch (Exception e2) {
                                        if(w.getSayac()<2){
                                               File f=new File(path+media.getName());
                                               f.delete();
                                               Messagebox.show("Yükleme Başarısız");
                                               w.setSayac(2);
                                        }
                                       
                                  }
                                 
                           }
                          
                          
                    }
             });
            
             w.setSayac(0);
       }
       public int getSayac() {
             return sayac;
       }
       public void setSayac(int sayac) {
             this.sayac = sayac;
       }
}

2 Haziran 2012 Cumartesi

Tomcat sunucularda context root ayarı

Merhaba arkadaşlar. Apache Tomcat yuklendikten sonra bilgisayarınızın bir dizinine kaydediyorsunuz.
Tomcat portu 8080 dir.Dilerseniz degistirebilirsiniz.
Tomcat çalıştırdıktan sonra "http://localhost:8080" adresinden tomcat portalı acılacaktır.
Şimdi bir örnek üzerinde işlemi gerçekleştirelim.Uygulamamızın adı DENEME olsun.Ve bu web uygulamasınız çıktısını(war dosyası)
Tomcat dizini altında webapps klasörü altına kopyalıyorsunuz.Uygulamaya erişmek için bu sefer yazacaığımız adres
"http://localhost:8080/DENEME" olacaktır. Bizim burda istediğimiz durum "http://localhost:8080" adresinden kendi uygulamamızın çalışmasını sağlamak.
Yani uygulama adresi sonundaki 'DENEME'
yazısını kaldırmaktır.
Aşağıdaki gibi gerçekleştiriyoruz.
Tomcat dizini altında conf/server.xml dosyasını not defteriyle açın. < Host > taglarini buluyorsunuz.
Genelde dosyanın aşağıda kısımlarında oluyor.
" < Host > " taglarinin arasına aşağıdaki komutu yazmanız yeterli olacaktır.
< Context docBase="DENEME" path="" / >
Böylece uygulamanıza sadece ip ve port yazarak acabilirsiniz. (http://localhost:8080)

13 Mayıs 2012 Pazar

Sql çoklu güncelleme -Sql multiple updates

Merhaba arkadaşlar.Sql çoklu güncelleme nasıl yapılır adım adım gerçekleştirelim.

Tablo_1 -----------------
kolon1kolon2kolon3
test11xxxx
test22yyyy
test33zzzz

Tablo_2 -----------------
kolon1kolon2
2null
3null



Tablo_1'de kolon2 ile Tablo_2'de kolon1 in eşleştiğini varsayalım.Benzer şekilde Tablo_1 de kolon3'ün Tablo_2'de kolon2 ile eşleştiğini varsayıyoruz. Bu durumda yapacağımız ilk şey güncellenecek kolon ile güncelleyecek olan kolonu select sql ile yanyana getirmek. Yani Tablo_1 den kolon3'u Tablo_2 den kolon2'yi yanyana getirelim. Ve aşağıdaki gibi sql yazalım.

"Select Tablo_1.kolon3,Tablo_2.kolon2 from Tablo_2,Tablo_1 where Tablo_2.kolon1=Tablo_1.kolon2"

Şimdi yukarıdaki sql sorgusunu update sql için iç sql yapacağız ve güncellemeyi gerçekleştireceğiz.

update
(
  Select Tablo_1.kolon3,Tablo_2.kolon2 from Tablo_2,Tablo_1   where Tablo_2.kolon1=Tablo_1.kolon2
)  tab set tab.kolon2=tab.kolon3

Sonuçta çoklu güncellemeyi birden fazla tablo kullanarak gerçekleştirmiş olduk.


2.yol
-------------------------------------
update Tablo_2 set Tablo_2.kolon2=(Select distinct Tablo_1.kolon3 from Tablo_1 where Tablo_1.kolon2=Tablo_2.kolon1) where Tablo_2.kolon1 in (Select Tablo_1.kolon2 from Tablo_1 where Tablo_1.kolon2=Tablo_2.kolon1)

24 Mart 2012 Cumartesi

Java Web Filter Ekleme

Günümüzde çoğu web uygulamaları giriş gerektiren uygulamalardır.
Böyle uygulamalarda ziyaretçiler sayfaya giriş yaptıktan sonra bazı özel sayfalara erişebiliyorlar.Örneğin kullanıcı profil sayfası.Kullanıcı sisteme giriş yaptıktan sonra profil sayfasına erişebilir ve erişmesi için bir linki oluşur.
Örnek verelim: "http://wwww.deneme.com/profil.htm"


Bu örnek linke kullanıcı uygulamaya giriş yapmışsa kendi profilini görüntüleyebilir aksi halde "Sayfa bulunamadı" ,"Erişim Engellendi" vb gibi sayfa uyarıları alır.

Peki bu kısıtlama web uygulamalarında nasıl sağlanır.Bunun cevabını aşağıda adım adım gerçekleştirelim.

Java geliştirme ortamının MyEclipse olarak ele aldım.(Eclipse'den hiç bir farkı yok)

Yeni bir Java web projesi açalım.Proje ismi Deneme olsun.Java Web uygulamalarında genellikle Web uygulama sunucusu olarak Apache Tomcat kullanılır ve portu 8080 olarak başlangıçta ayarlanmıştır.(İsteğe bağlı olarak portu değiştirilebilir.)

Proje detayına çok inmeyeceğim çünkü bu kısımda sadece Web url filtrelemeyi anlatacağım.

O zaman uygulamaya erişmek için "http://localhost:8080/Deneme" bu adresi girmemiz gerekir.

Tüm Java Web uygulamalarında standart olarak aşağıdaki klasörler bulunur.
src (Java kodu),WebRoot(Web dosyaları)

WebRoot altında da WEB-INF klasörüde her zaman bulunmaktadır.
Aynı zamanda da bu klasör altında da web.xml de her zaman bulunmaktadır.
Yani geliştirme ortamında web.xml görüntülemek için Deneme/WebContent/WEB-INF/web.xml bu dizine gidebilirsiniz.

Java Web uygulamalarında web.xml vazgeçilmezdir.Uygulama yöntemleri,kuralları,konfigürasyonlar vb burda işlenir.
Web filtreleme için de burayı kullanacağız.

Örnek web.xml içeriği
---------------------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------------------




Şimdi bizim yapacağımız web.xml içeriğine filtreleme sağlamak için gerekli tanımı koyacağız.Son hali de aşağıdaki gibi olacak.

web.xml
---------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------


Yukarıdaki "" bölümünü kısaca anlatalım.

"filter-name" ===============> Filtreleme ismi.

"filter-class" ===========> Filtrelemeyi sağlayan java kodudur.Ve kod aşağıdaki gibidir.Yukarıda yazılan "filter.GirisFiltreleme" java class dizinidir.
---------------------------------------------------------------------------------------------------
package filter;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.StringTokenizer;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

public class GirisFiltreleme implements Filter {

static Logger logger = Logger.getLogger(GirisFiltreleme.class.getName());

private Collection noFilterURIs = null;

private Collection initialURIs = null;

private String loginOccurredAttributeName = null;

private String loginPage = null;

protected FilterConfig filterConfig = null;


public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.loginOccurredAttributeName = filterConfig.getInitParameter("loginOccurredAttributeName");
this.loginPage = filterConfig.getInitParameter("loginPage");

StringTokenizer tokenizer = new StringTokenizer(filterConfig.getInitParameter("noFilterURIs"),filterConfig.getInitParameter("noFilterURISeperator"));
noFilterURIs = new ArrayList();
while (tokenizer.hasMoreTokens()) {
noFilterURIs.add(tokenizer.nextToken());
}
tokenizer = new StringTokenizer(filterConfig.getInitParameter("initialURIs"), filterConfig.getInitParameter("noFilterURISeperator"));
initialURIs = new ArrayList();
while (tokenizer.hasMoreTokens()) {
initialURIs.add(tokenizer.nextToken());
}
}


public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

HttpSession session = ((HttpServletRequest) request).getSession();

String loginOccurredAttribute = (String) session.getAttribute(loginOccurredAttributeName);

String requestURI = ((HttpServletRequest) request).getRequestURI();


if (logger.isDebugEnabled()) {
logger.debug("Path: " + requestURI);
}
// check the URL to see if request must be filtered
if (noFilterURIs.contains(requestURI)) {
if (logger.isDebugEnabled()) {
logger.debug("No filter required..");
}
// no filter required, go on
chain.doFilter(request, response);
}
// check if user has already signed in
else if (loginOccurredAttribute == null) {
if (logger.isDebugEnabled()) {
logger.debug("Filter applied.. No session exists, send to login page..");
}
// no! send the user to the login page
RequestDispatcher rd = filterConfig.getServletContext().getRequestDispatcher(loginPage);
rd.forward(request, response);
}
else {
if (logger.isDebugEnabled()) {
logger.debug("Filter applied.. Session exists, go on..");
}
chain.doFilter(request, response);
}
}

public void destroy() {
this.filterConfig = null;
}

}
---------------------------------------------------------------------------------------------------


"init-param" ==========> Filtrelemede uygulanacak kurallar parametrelerini tanımlar.

loginPage ------------------>Giriş yapılacak sayfayı tanımlar.
noFilterURIs---------------->Giriş gerektirmeyen sayfayı veya sayfaları gösterir.Örneğin iletisim.html
noFilterURISeperator-------->Adres kısmında kullanılacak ayraç sembölü
loginOccurredAttributeName-->Giriş yapan kullanıcılar, giriş kontrolü için otururum nesnesine(SESSION) bir tanım yapılması gerekir.Örneğin=USER_ID

Genel olarak toparlayacak olursak.
Uygulamaya giriş yapan kullanıcılar uygulama dizini altındaki sayfalara erişebilecekler.Örneğin http://localhost:8080/Deneme/Profil.html adresine girdiğinde kendisine ait profil bilgilerini görüntüleyebilecektir.
Ziyaretçiler ise adrese girdiğinde "Erişim engellendi","Sayfa bulunamadı" vb
gibi uyarılar alacaktır.Yukarıda iletisim sayfası için filtreleme engeli koymadık.
Yani http://localhost:8080/Deneme/iletisim.html sayfasına erişebilecekler.

Böylece Java Web uygulamalarında filtrelemeyi sağlamış olduk.


Umarım yararlı bilgi olur.İyi günler dilerim.

7 Mart 2012 Çarşamba

Oracle nasıl kaldırılır veya nasıl silinir.

Merhabalar.
İnsanların en çok sorun yaşadığı problemlerden bir tanesi Oracle yüklediği Bilgisayardan Oracle kaldırmamasıdır.
Aslında alışageldiğimiz mevcut yöntem yüklediğimiz programların Denetim Masasında Programlar Bölümünden Programı kaldırmaktır.Ama Oracle için bu durum söz konusu değildir.Son çıkan sürümlerde uninstaller paketi eklendiğini duydum.Ama biz aşağıdaki yöntemi kullanacağız.(Uninstaller öğrenene kadar).

Aşağıdaki adımları sırayla izleyelim.
1.ADIM
Başlat Tuşundan -Tüm Programlar-Donatıları-Çalıştır kısmını açıyoruz.
Gelen ekrana "services.msc" komutunu yazıp tamam tuşuna tıkladıktan sonra
hizmetler veya Servisler dediğimiz ekran açılacaktır.
Başında Oracle* yazılı tüm servislere aynı adım uygulanacak.
Servis üzerine sağ tıklayıp Durdur diyeceğiz.Bu servislerin isimlerini
bir notepad yazmanızda fayda var.Notepad ismini servisler olarak
kaydedebilirsiniz.Servis isimleri şu şekilde alınır.
Servis üzerine sağ tıklayıp Özelliklerden Hizmet Adı olan yerde yazılıdır.
Bu isimleri her servis servisler text dosyasına yazalım.

2.ADIM
Bu adım çok kolaydır.Oracle yüklü olan dizini tamamen sileceğiz.
(Genellikle varsayılan olarak C dizini altında app olarak kaydedilir.)

3.ADIM
Oracle yüklenirken Registera da yazar.
Register ulaşmak için Yukarıda anlatığımız Çalıştır kısmını açacağız.
"regedit" komutunu yazıp tamam tuşuna basıyoruz.
Açılan pencerede HKEY_LOCAL_MACHINE-->SOFTWARE-->Oracle siliyoruz.
4.ADIM
Şimdi tüm silmeleri hallettik.Ama tek bir şey kaldı.
1.adımda servisleri durdurduk ve servis isimlerini bir text dosyaya yazdık.
Bu servisleri de kaldırmamız gerekiyor.
Başlat tuşuna cmd yazıyoruz.(arama kısmına) cmd.exe bulunacaktır.Bu exe dosyasına
sağ tıklayıp yönetici olarak çalıştırıyoruz.
Gelen komut penceresine her servis için ayrı olarak aşağıdaki
komutu yazıyoruz ve enter (tamam) tuşuna basacağız.

sc delete servisAdı

servisAdı yazılan yere servis ismini yazıyoruz.Hatırlarsanız servis isimlerini
bir text dosyaya yazdık.Ordan kopyalayıp komuta yapıştırabiliriz.



Bu adımlardan sonra Bilgisayarınızdan oracle ile ilgili hiçbir şey kalmayacaktır.
Umarım yararlı bir bilgi olmuştur.

Başarılar dilerim.

7 Ocak 2012 Cumartesi

Java ile Scp bağlantı yoluyla uzak bilgisayardan dosya yüklemek

KÜTÜPHANELER:

chilkat.jar
jsch.jar
jython.jar
log4j-1.2.14.jar
scpimpl.jar


KOD:

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Writer;
import java.util.Properties;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class ScpGetFile {
private String User;
private String Password;
private int Port = 22;
private String Server;
private String RemoteFilepath;
private String SaveFilePathDest;
private File file = null;

public static void main(String[] args) throws Exception {
ScpGetFile scp = new ScpGetFile();
scp.setPassword("password");
scp.setPort(22);
scp.setUser("user");
scp.setServer("server ip");
scp.setRemoteFilepath("path destination");
scp.setSaveFilePathDest("c:/");
scp.SaveFileFromServer();
}

public void SaveFileFromServer() throws Exception {
String[] strdizi = this.getRemoteFilepath().split("/");
if (null == this.getFile())
this.file = new File(this.getSaveFilePathDest()
+ strdizi[strdizi.length - 1]);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("compression.s2c", "zlib,none");
config.put("compression.c2s", "zlib,none");
JSch jsch = new JSch();
String filePath = this.getRemoteFilepath();
Session session = jsch.getSession(this.getUser(), this.getServer());
session.setConfig(config);
session.setPort(this.getPort());
session.setPassword(this.getPassword());
session.connect();
ChannelSftp c = (ChannelSftp) session.openChannel("sftp");
c.connect();
InputStream is = c.get(filePath);
BufferedInputStream bf = new BufferedInputStream(is);
try {
DataInputStream in = new DataInputStream(is);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine = "";
StringBuffer genel = new StringBuffer();

int sayac = 0;
while (true) {
sayac++;
if (null == br.readLine()) {
break;
} else genel.append(br.readLine() + "\n");
}
Writer output = new BufferedWriter(new FileWriter(file));
output.write(genel.toString());
output.close();

} catch (Exception e) {
e.printStackTrace();
} finally {
c.disconnect();
session.disconnect();
}
}

public void setRemoteServerLogin() {

}

public String getUser() {
return User;
}

public void setUser(String user) {
User = user;
}

public String getPassword() {
return Password;
}

public void setPassword(String password) {
Password = password;
}

public int getPort() {
return Port;
}

public void setPort(int port) {
Port = port;
}

public String getServer() {
return Server;
}

public void setServer(String server) {
Server = server;
}

public String getRemoteFilepath() {
return RemoteFilepath;
}

public void setRemoteFilepath(String remoteFilepath) {
RemoteFilepath = remoteFilepath;
}

public String getSaveFilePathDest() {
return SaveFilePathDest;
}

public void setSaveFilePathDest(String saveFilePathDest) {
SaveFilePathDest = saveFilePathDest;
}

public File getFile() {
return file;
}

public void setFile(File file) {
this.file = file;
}

}