PL/SQL üzerinden Web Sayfası üretmek

Slides:



Advertisements
Benzer bir sunumlar
HTML.
Advertisements

HTML
WEB TASARIM Temel Kavramlar.
Özel Site.NET İnternet Nedir? Soner Sevindik.
COME 339 JAVA-SQL BAĞLANTISI
4 SQL- Yapısal Sorgulama Dili
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
MySQL Veritabanı Sunucusu ve MySQL Veritabanı Kullanımı
PHP-MySQL ile Profesyonel Web Programlama
WEB Tasarımı & .NET Bolum 1
UTL_MAIL basit ve etkili çözüm
Web Service Uygulaması
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
SQL’e Giriş.
BTEP 203 – İnternet ProgramcIlIğI - I
Javascript Oğuz İNAL.
SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
T-SQL-2.Konu Akış Kontrolleri.
Veri Tabanı Yönetim Sistemleri
BÖLÜM 6 SQL SERVER KOMUTLARI.
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
Temel HTML Eğitimi Erman Yükseltürk.
IT 504 İnternet ve Web Programlama Tanıtım Yrd. Doç. Yuriy Mishchenko.
HTML (HYPER TEXT MARKUP LANGUAGE) TEMEL ETİKETLERİ
VIEW (BAKIŞ) OLUŞTURMA
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
WEB TASARIMININ TEMELLERİ
SQL Dili ve MySQL Komutları
İnternet Teknolojisi Temel Kavramlar
WEB TASARIMINDA TEMEL KAVRAMLAR
BTEP 203 – İnternet ProgramcIlIğI - I
HTML HYPER TEXT MARKUP LANGUAGE Burcu Yılmaz – İ brahim Mert Bilişim Teknolojileri Ö ğ retmeni.
VeriTabanı Uygulama.
Sibel SOMYÜREK SQL Görev. SQL – 14a Egitselyazilim veri tabanındaki içerik tablosuna yeni bir kayıt ekleyin,
Veri Tabanı Yönetim Sistemleri I
Mobil Web XHTML-MP .NET ve Mobil Web Uygulamalar
FONKSİYONLAR İbrahim Onur Sığırcı.
RAISE RECORD/CURSOR TRIGGER
İNTERNET TARAYICI (WEB BROWSER) PROGRAMLARI
İnternet Teknolojisi Temel Kavramlar
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş
HTML HYPER TEXT MARKUP LANGUAGE Ayşe AK İ DA Ğ I Bilişim Teknolojileri Ö ğ retmeni.
SQL’ e Giriş Uzm. Murat YAZICI.
Bilgisayar Mühendisliği Bölümü
Bölüm 4: İleri SQL.
BIM 101 Bilgi İşleme Giriş © 2006 Prentice-Hall, Inc.
KIRKLARELİ ÜNİVERSİTESİ
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı Arş. Gör. Pınar CİHAN.
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı Arş. Gör. Pınar CİHAN.
S ORGU / DML / DDL KOMUTLARı İbrahim Onur Sığırcı.
HTML HTML Nedir? HTML Ne İşe Yarar?. HTML (HyperText Markup Language / Hareketli-Metin İşaretleme Dili) basitçe, tarayıcılarla görebileceğimiz, internet.
Web Tasarımı 2.Hafta. HTML Nedir  Hyper Text Markup Language (Hiper Metin İşaretleme Dili) web sayfalarını oluşturmak için kullanılan standart metin.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Dünyanın bilgisine açılan pencere...
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı
BTEP 203 – İnternet ProgramcIlIğI - I
VIEW lerle çalışmak 11.BÖLÜM.
14.DERS Örnekler, Sorular BUKET DOĞAN.
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Dünyanın bilgisine açılan pencere...
FONKSİYONLAR İbrahim Onur Sığırcı.
Sorgu / dml / ddl komutları
RAISE RECORD/CURSOR TRIGGER
Asp.Net Veritabanı İşlemleri
Sunum transkripti:

PL/SQL üzerinden Web Sayfası üretmek Temel HTML özellikleri Oracle PL/SQL ile web sayfası ve formları üretmek Ümit Varol / Diveya Bilgi Sistemleri Xx/11/2010 - İstanbul

Web Sayfası Nedir? Web sayfası, bir bilgisayar ağı üzerinde belirli bir metin ve görseller içeren bir dokümanın paylaşılmasını sağlayan, özel bir formatı olan bir doküman biçimidir. Web sayfaları HTML dili ile oluşturulur. HTTP – Hyper Text Markup Language, Zengin Metin Biçimlendirme Dili HTML bir programlama dili değildir, bir biçimlendirme dilidir. İçeriği oluşturan metin içine yerleştirilen biçimlendirme etiketleri (tag) ile dokümana çeşitli biçim özellikleri kazandırılmasını sağlar. HTML ile biçimlendirilmiş dokümanları, istene biçimde görüntülebilmesi için bir görüntüleme uygulaması (tarayıcı-browser) gereklidir. Bu uygulama tag’ları yorumlayarak dokümanın planlanan biçimde görüntülenmesini sağlar. Browser uygulamaları artık her türlü cihaz üzerinde standart olarak sağlanmaktadır. En popüler olanları Internet Explorer, Firefox, Chrome, Safari olan bu uygulamaların birçok farklı marka ve sürümü vardır. İstanbul'11 14 Mayıs 2011

İçerik Web Sayfası nedir, nasıl çalışır? Örnek Web Sayfası. Örnek Web Formu ve SQL tablosu. PL/SQL Tablo ve Fonksiyon işlemlerine bakış. Örnek Senaryo. Bir yorumlayıcı sayfa oluşturmak (örnek JSP kod). Senaryo’ya devam. Kodlara Genel Bakış. Notlar. İstanbul'11 14 Mayıs 2011

Web Sayfası Nasıl Çalışır? HTTP – Hyper Text Transfer Protocol – Zengin Metin Aktarım Kuralları URL – Uniform Resource Locator – Tektipleştirilmiş Kaynak Bulucu Tipik bir URL örneği : http://www.world.com ftp://www.store.com HTML - Hyper Text Markup Language, Zengin Metin Biçimlendirme Dili Bu metinde <strong>bu bölüm</strong> koyu tonda görüntülenecektir. Public Internet HTTP URL X Address Web Sayfası İsteği HTML X Web Page Internet Service Provider Tarayıcı İstanbul'11 14 Mayıs 2011

Örnek Web Sayfası İstanbul'11 <html> <body> <form method=“get”> <table border=“0”> <tr> <td> İsim : </td> <input type=“text” name=“field1” id=“field1” size=“20”> </tr> Telefon : <input type=“text” name=“field2” id=“field2” size=“10”> <td colspan=“2”> <input type=“submit” value=“kaydet”> </table> </form> </body> </html> İsim : Tel : kaydet İstanbul'11 14 Mayıs 2011

Örnek Web Sayfası İstanbul'11 İsim : Tel : <form method=“get”> kaydet <table border=“0”> <tr> <td> <td> İsim : <input type=“text” name=“field1” id=“field1” size=“20”> </td> </td> </tr> <tr> <td> <td> Tel : <input type=“text” name=“field2” id=“field2” size=“10”> </td> </td> </tr> <tr> <td> <input type=“submit” value=“kaydet”> </td> </tr> </table> </form> İstanbul'11 14 Mayıs 2011

Örnek Web Formu ve SQL Tablosu XX_WEB_FORM_TEST_TBL İsim : F_NAME VARCHAR2(50 BYTE) F_PHONE VARCHAR2(50 BYTE) S_INSERT_DATE DATE (sysdate) Tel : kaydet <html> <body> <form method=“get”> <table border=“0”> <tr> <td> İsim : </td> <input type=“text” name=“field1” id=“field1” size=“20”> </tr> Telefon : <input type=“text” name=“field2” id=“field2” size=“10”> <td colspan=“2”> <input type=“submit” value=“kaydet”> </table> </form> </body> </html> CREATE TABLE XX_WEB_FORM_TEST_TBL ( F_NAME VARCHAR2(50 BYTE), F_PHONE VARCHAR2(50 BYTE), S_INSERT_DATE DATE DEFAULT sysdate ) İstanbul'11 14 Mayıs 2011

PL/SQL Tablo ve Fonksiyon İşlemlerine Bakış Bir tabloya veri yazmak için INSERT komutu kullanılır. INSERT INTO XX_WEB_FORM_TEST_TBL (F_NAME, F_PHONE) VALUES (‘Ali’,’123’); Ancak çoğu zaman bu komutu doğrudan kullanmak yerine bir fonksiyon ile çağırmak daha avantajlı olmaktadır. CREATE OR REPLACE FUNCTION XX_WEB_FORM_TEST_ INS_FNC (P_NAME VARCHAR2, P_PHONE VARCHAR2) RETURN VARCHAR2 IS retVal VARCHAR2(200); BEGIN retVal := 'Kayıt Başarılı.'; INSERT INTO XX_WEB_FORM_TEST_TBL (F_NAME, F_PHONE) VALUES (P_NAME, P_PHONE ); RETURN retVal; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 'Veri Yok!'; WHEN OTHERS THEN RETURN 'Hata:'||sqlerrm; END; Bu sayede birçok kontrol, ek işlemler ve hata kontrolü olanakları sağlanabilir. İstanbul'11 14 Mayıs 2011

Örnek Senaryo Tüm planlama ve yazılım kısmı PL/SQL üzerinde olan bir Web Form ortamı oluşturalım. Tüm gerekli tanımlamalarda tablolarımızda olsun. HTML ile bir Web Formu tasarlayalım. Bir SQL tablosu içine Web form sayfalarımızı ve temel tanımlarımızı kaydedelim. Bu formdan dönecek verinin saklanacağı tablomuzu oluşturalım. Formdan dönecek veriyi kaydetmek için de bir fonksiyon yazalım. Bize bir de SQL tablomuzdan Web Form bilgilerimizi okuyacak, web sayfamızı oluşturup, kullanıcıya sunacak ve dönen veriyide ilgili fonksiyona gönderecek “Yorumlayıcı Sayfa” gerekiyor. Bu uygulama birçok ortamda hazırlanabilir. Bizim örneğimiz Oracle dünyasına en yakın ortam olan JSP tabanlı. Bu uygulama bir kez yazılıp çalıştırıldıktan sonra hiçbir değişikliğe uğramadan çalışacaktır. Yeni web sayfaları ile ilgili tüm tanımlamalar kesinlikle PL/SQL tarafında kalmalıdır. İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak HTML ile bir Web Formu tasarlayalım. Sistematik bir yapı için, Formun adını : ff Veri alanlarının adını : f1, f2, f3, ..., fn Submit düğmesinin adını : ss <html> <body> <form method=“post” name=“ff“ id=“ff”> İsim: <input type=“text” name=“f1” id=“f1”><br> Telefon: <input type=“text” name=“f2” id=“f2”><br> <input type=“submit” name=“ss” id=“ss”> </form> </body> </html> İsim : Tel efon: kaydet İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Bir SQL tablosu içine Web form sayfalarımızı ve temel tanımlarımızı kaydedelim. Tablomuzun adı XX_WEB_FORM_SETUP_TBL olsun Web Formumuz için bir CLOB alan Bir ID Geri dönüşte çağrılacak fonksiyonumuzu tanımlamak için bir alan ve Web form Sayfamızı adı için bir alan CREATE TABLE XX_WEB_FORM_SETUP_TBL ( F_CLOB CLOB, F_ID NUMBER, F_FUNCTION VARCHAR2(100 BYTE), F_URL_NAME VARCHAR2(100 BYTE) ); Örnek bir kayıt oluşturalım, INSERT INTO XX_WEB_FORM_SETUP_TBL VALUES (‘<html....’, 1, ‘XX_WEB_FORM_TEST_ INS_FNC’, ‘Telefon_Rehberi’); XX_WEB_FORM_SETUP_TBL F_CLOB CLOB F_ID NUMBER F_FUNCTION VARCHAR2(100 BYTE) F_URL_NAME VARCHAR2(100 BYTE) İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Bu formdan dönecek verinin saklanacağı tablomuzu oluşturalım. Daha önce örnek olarak oluşturduğumuz tabloyu kullanabiliriz. XX_WEB_FORM_TEST_TBL F_NAME VARCHAR2(50 BYTE) F_PHONE VARCHAR2(50 BYTE) S_INSERT_DATE DATE (sysdate) CREATE TABLE XX_WEB_FORM_TEST_TBL ( F_NAME VARCHAR2(50 BYTE), F_PHONE VARCHAR2(50 BYTE), S_INSERT_DATE DATE DEFAULT sysdate ) İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Formdan dönecek veriyi kaydetmek için de bir fonksiyon yazalım. Daha önce örnek olarak oluşturduğumuz fonksiyonu kullanabiliriz. f(x) XX_WEB_FORM_TEST_INS_FNC P_NAME VARCHAR2 P_PHONE VARCHAR2 STATUS VARCHAR2 CREATE OR REPLACE FUNCTION XX_WEB_FORM_TEST_ INS_FNC (P_NAME VARCHAR2, P_PHONE VARCHAR2) RETURN VARCHAR2 IS STATUS VARCHAR2(200); BEGIN STATUS := 'Kayıt Başarılı.'; INSERT INTO XX_WEB_FORM_TEST_TBL (F_NAME, F_PHONE) VALUES (P_NAME, P_PHONE ); RETURN STATUS; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 'Veri Yok!'; WHEN OTHERS THEN RETURN 'Hata:'||sqlerrm; END; İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Bize bir de SQL tablomuzdan Web Form bilgilerimizi okuyacak, web sayfamızı oluşturup, kullanıcıya sunacak ve dönen veriyide ilgili fonksiyona gönderecek “Yorumlayıcı Sayfa” gerekiyor. Bizim örneğimiz Oracle dünyasına en yakın ortam olan JSP tabanlı. Bu uygulama sayfasını çalıştırmak için JSP sayfalarını gösterebilen bir web sunucusuna ihtiyacımız olacaktır. Çok yaygın olarak Apache & Tomcat ikilisi olabilir, Oracle’ın son zamanlarda kullandığı WebLogic olabilir, Ve benzeri bir başka sunucu da olabilir. Sunucunuzun tipine göre web sunucusu kök dizininde bir yeni dizin açalım ve yorumlayıcı JSP sayfamızı buraya koyalım. Apache için : c:/apache/webapps/ROOT/web_form/web_form.jsp İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Apache web sunucusu üzerinde veri tabanı erişimi için JDBC oluşturmak gerekir. JDBC : Java Database Connector Örnek olarak Oracle 10g veritabanına erişim ve Oracle kütüphanelerini kullanmak için, classes12.jar ve ojdbc14.jar dosyalarını \lib dizini altına koymanız gerekir. \conf dizini altınde yer alan context, web ve server dosyalarında güncelleme yapılmalıdır. context.xml dosyasında <context> etiketi içinde <ResourceLink global="jdbc/webForm" name=" jdbc/webForm " type="oracle.jdbc.pool.OracleDataSource"/> web.xml dosyası <web-app> etiketi içinde <resource-ref> <description>Oracle Development Datasource</description> <res-ref-name> jdbc/webForm</res-ref-name> <res-type>oracle.jdbc.pool.OracleDataSource</res-type> <res-auth>Container</res-auth> </resource-ref> server.xml dosyası <GlobalNamingResources> etiketi içinde <Resource name=" jdbc/webForm “ auth="Container“ type="oracle.jdbc.pool.OracleDataSource“ driverClassName="oracle.jdbc.driver.OracleDriver” factory="oracle.jdbc.pool.OracleDataSourceFactory“ url="jdbc:oracle:thin:@10.0.0.1:1521:TEST“ user=“xxxx“ password=“pppp“ maxActive="20“ maxIdle="10“ maxWait="-1" /> İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Örnek yorumlayıcı sayfamız : webForm.jsp (1/4) <%@page language="java" %> <%@page import="oracle.jdbc.pool.OracleDataSource" %> <%@page import="javax.naming.Context" %> <%@page import="javax.naming.InitialContext" %> <%@page import="java.io.Serializable" %> <%@page import="java.io.File" %> <%@page import="java.sql.*" %> <%@page import="java.util.*" %> <%@page import="java.util.regex.*" %> <%@page import="java.io.*" %> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-9" %> <%request.setCharacterEncoding("UTF-8");%> <% Connection conn = null; ResultSet rst = null; Statement stmt = null; PreparedStatement pstmt = null; String queryStr = null; String message = "Not Connected"; String ParameterNames = ""; String f_url_name = ""; String f_submit = "no"; for(Enumeration e = request.getParameterNames(); e.hasMoreElements(); ) { ParameterNames = (String)e.nextElement(); //out.println(ParameterNames + " : " + request.getParameter(ParameterNames) + "<br/>"); if (ParameterNames.equals("fname")) { f_url_name=request.getParameter(ParameterNames); } if (ParameterNames.equals("ss")) { f_submit="yes"; } } Forma doldurularak gönderilen verilerin alındığı ve değişkenlere yerleştirildiği bloktur. Çağrılan Web Form’un adını alacağımız parametre “fname” olsun. (Önceki örnekte “ff” olarak bırakmıştık.) İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Örnek yorumlayıcı sayfamız : webForm.jsp (2/4) Veritabanı bağlantısının sağlandığı bloktur. try { Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); OracleDataSource ds = (OracleDataSource) envContext.lookup("jdbc/webForm"); if (envContext == null) throw new Exception("Error: No Context"); if (ds == null) throw new Exception("Error: No DataSource"); if (ds != null) conn = ds.getConnection(); if (conn != null) { message = "Got Connection " + conn.toString() + ", "; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); } queryStr = " select * from XX_WEB_FORM_SETUP_TBL "; if (f_url_name.length()>0) { queryStr = queryStr + " where F_URL_NAME='" + f_url_name + "' "; } pstmt= conn.prepareStatement(queryStr); rst = pstmt.executeQuery(); String formVal = null; String formID = null; String formFnc = null; String formFncPrm = " "; String formPrm = null; String formName = null; String formStatus = " "; rst.next(); formVal = rst.getString(1); formID = rst.getString(2); formFnc = rst.getString(3); formPrm = rst.getString(4); formName = rst.getString(5); rst.close(); rst = null; Web Formumuz ile ilgili tanımlamaların veritabanından okunduğu bloktur. İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Örnek yorumlayıcı sayfamız : webForm.jsp (3/4) if (f_submit.equals("yes")) { for(Enumeration e = request.getParameterNames(); e.hasMoreElements(); ) { ParameterNames = (String)e.nextElement(); if (ParameterNames.substring(0,1).equals("f") && ParameterNames.length()<5) { formFncPrm = formFncPrm + "?, "; } if (formFncPrm.length()>2) { formFncPrm=formFncPrm.substring(0,formFncPrm.length()-2); } queryStr = "begin ? := "+formFnc+“ ("+formFncPrm+"); end; "; CallableStatement cstmt = conn.prepareCall(queryStr); cstmt.setQueryTimeout(1800); cstmt.registerOutParameter(1, Types.VARCHAR); e.hasMoreElements(); ){ cstmt.setString(Integer.parseInt(ParameterNames.substring(1))+1,request.getParameter(ParameterNames)); cstmt.executeUpdate(); formStatus=cstmt.getString(1); formVal = formVal.replace("<#return#>",formStatus); formVal = formVal+"<script>document.getElementById('fname').value='"+formName+"';</script>"; out.println ( formVal ); stmt.close(); stmt = null; conn.close(); // Return to connection pool conn = null; Formdan gelen verinin veritabanındaki fonksiyona gönderildiği bloktur. Oluşturulan nihai HTML içerik, görüntülenecek Web Formu olarak sayfaya yazılır. Veritabanındaki fonksiyondan geri dönen cevabın web sayfasında belirlenen yerde ve formatta yazdırılabilmesi için özel bir etiket eklenmiştir. <#return#> Bu etiket standart değildir ve sadece bu yorumlayıcı sayfa tarafından yorumlanır. İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak Örnek yorumlayıcı sayfamız : webForm.jsp (4/4) Catch ve Finally bölümleri olası hatalara karşı hata mesajları ve veritabanı bağlantılarını kapatma bloğudur. } catch(Exception e) { out.println("Form Exception : " + e); } finally { if (rst != null) { try { rst.close(); } catch (SQLException e) {;} rst = null; } if (stmt != null) { stmt.close(); stmt = null; if (conn != null) { conn.close(); conn = null; %> İstanbul'11 14 Mayıs 2011

Bir Yorumlayıcı Sayfa Oluşturmak HTML ile bir Web Formu tasarlayalım demiştik, bunu tekrar gözden geçirelim. Önceden olanlar, Formun adını : ff Veri alanlarının adını : f1, f2, f3, ..., fn Submit düğmesinin adını : ss Yeni gelenler, Görüntülenecek Web Formun seçimi için bir alan ekledik : fname Veritabanından dönen cevabı sayfada göstermek için eklediğimiz yeni etiket: <#return#> <html> <body> <span style="color:blue">Telefon Rehberi</span> <br><#return#><br> <form method=“post” name=“ff“ id=“ff”> <input type=“hidden” name=“fname” id=“fname”> İsim: <input type=“text” name=“f1” id=“f1”><br> Telefon: <input type=“text” name=“f2” id=“f2”><br> <input type=“submit” name=“ss” id=“ss” value=“Kaydet”> </form> </body> </html> İstanbul'11 14 Mayıs 2011

XX_WEB_FORM_TEST2_TBL Senaryo’ya Devam! Yeni bir Web Form oluşturalım ! e-Bültene üye olun! XX_WEB_FORM_TEST2_TBL İsim : F_NAME VARCHAR2(50 BYTE) F_EMAIL VARCHAR2(50 BYTE) F_CITY VARCHAR2(50 BYTE) e-Posta : Şehir : Üye Ol <html> <body> <span style="color:red; font-weight:bolder;"> e-Bültene üye olun! </span> <br><#return#><br> <form method=“post” name=“ff“ id=“ff”> <input type=“hidden” name=“fname” id=“fname”> İsim : <input type=“text” name=“f1” id=“f1”><br> e-Posta : <input type=“text” name=“f2” id=“f2”><br> Şehir : <input type=“text” name=“f3” id=“f3”><br> <input type=“submit” name=“ss” id=“ss” value=“Üye Ol”> </form> </body> </html> CREATE TABLE XX_WEB_FORM_TEST2_TBL ( F_NAME VARCHAR2(50 BYTE), F_EMAIL VARCHAR2(50 BYTE), F_CITY VARCHAR2(50 BYTE), S_INSERT_DATE DATE DEFAULT sysdate ) İstanbul'11 14 Mayıs 2011

Senaryo’ya Devam! Yeni tablo için bir de fonksiyon oluşturalım. XX_WEB_FORM_TEST2_TBL f(x) XX_WEB_FORM_TEST_INS_FNC F_NAME VARCHAR2(50 BYTE) F_EMAIL VARCHAR2(50 BYTE) F_CITY VARCHAR2(50 BYTE) P_NAME VARCHAR2 P_EMAIL VARCHAR2 P_CITY VARCHAR2 STATUS VARCHAR2 CREATE TABLE XX_WEB_FORM_TEST2_TBL ( F_NAME VARCHAR2(50 BYTE), F_EMAIL VARCHAR2(50 BYTE), F_CITY VARCHAR2(50 BYTE), S_INSERT_DATE DATE DEFAULT sysdate ) CREATE FUNCTION XX_WEB_FORM_TEST2_ INS_FNC (P_NAME VARCHAR2, P_EMAIL VARCHAR2, P_CITY VARCHAR2) RETURN VARCHAR2 IS STATUS VARCHAR2(200); BEGIN STATUS := 'Kayıt Başarılı.'; INSERT INTO XX_WEB_FORM_TEST2_TBL (F_NAME, F_EMAIL, F_CITY ) VALUES (P_NAME, P_EMAIL, P_CITY); RETURN STATUS; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 'Veri Yok!'; WHEN OTHERS THEN RETURN 'Hata:'||sqlerrm; END; İstanbul'11 14 Mayıs 2011

Senaryo’ya Devam! Oluşturduğumuz bileşenleri XX_WEB_FORM_SETUP_TBL tablomuzda tanımlayalım. e-Bültene üye olun! İsim : e-Posta : Şehir : Üye Ol XX_WEB_FORM_TEST2_TBL f(x) XX_WEB_FORM_TEST_INS_FNC F_NAME VARCHAR2(50 BYTE) F_EMAIL VARCHAR2(50 BYTE) F_CITY VARCHAR2(50 BYTE) P_NAME VARCHAR2 P_EMAIL VARCHAR2 P_CITY VARCHAR2 STATUS VARCHAR2 INSERT INTO XX_WEB_FORM_SETUP_TBL VALUES (‘<html....’, 2, ‘XX_WEB_FORM_TEST2_ INS_FNC’, ‘e_bulten’); Bu alanda Web Formumuzun tğm HTML kodu yer almalı. İstanbul'11 14 Mayıs 2011

Senaryo’ya Devam! Sonucu tarayıcı içinde görelim. web_form.jsp?fname=e_bulten Tarayıcı X Address http://localhost/web_form.jsp?fname=e_bulten e-Bültene üye olun! İsim : e-Posta : Şehir : Üye Ol İstanbul'11 14 Mayıs 2011

Kodlara Genel Bakış  İstanbul'11 <html> <body> <span style="color:red; font-weight:bolder;"> e-Bültene üye olun! </span> <br><#return#><br> <form method=“post” name=“ff“ id=“ff”> <input type=“hidden” name=“fname” id=“fname”> İsim : <input type=“text” name=“f1” id=“f1”><br> e-Posta : <input type=“text” name=“f2” id=“f2”><br> Şehir : <input type=“text” name=“f3” id=“f3”><br> <input type=“submit” name=“ss” id=“ss” value=“Üye Ol”> </form> </body> </html> CREATE TABLE XX_WEB_FORM_TEST2_TBL ( F_NAME VARCHAR2(50 BYTE), F_EMAIL VARCHAR2(50 BYTE), F_CITY VARCHAR2(50 BYTE), S_INSERT_DATE DATE DEFAULT sysdate ) CREATE FUNCTION XX_WEB_FORM_TEST2_ INS_FNC (P_NAME VARCHAR2, P_EMAIL VARCHAR2, P_CITY VARCHAR2) RETURN VARCHAR2 IS STATUS VARCHAR2(200); BEGIN STATUS := 'Kayıt Başarılı.'; INSERT INTO XX_WEB_FORM_TEST2_TBL (F_NAME, F_EMAIL, F_CITY ) VALUES (P_NAME, P_EMAIL, P_CITY); RETURN STATUS; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 'Veri Yok!'; WHEN OTHERS THEN RETURN 'Hata:'||sqlerrm; END; INSERT INTO XX_WEB_FORM_SETUP_TBL VALUES (‘<html....’, 2, ‘XX_WEB_FORM_TEST2_ INS_FNC’, ‘e_bulten’);  web_form.jsp?fname=e_bulten İstanbul'11 14 Mayıs 2011

Notlar HTML ile ilgili W3 sitelerini inceleyebilirsiniz, Apache için, http://www.w3schools.com/html/default.asp http://www.w3.org/TR/html-markup/ Apache için, http://www.apache.org Tomcat için, http://tomcat.apache.org JAVA ile ilgili Oracle/SUN sitesini inceleyebilirsiniz, http://www.oracle.com/technetwork/java/index.html http://java.sun.com/products/jsp/syntax/2.0/syntaxref20.html PL/SQL ile ilgili Oracle sitesini inceleyebilirsiniz, http://download.oracle.com/docs/cd/B10500_01/appdev.920/a96624/toc.htm İstanbul'11 14 Mayıs 2011