{"id":35348,"date":"2025-11-28T16:41:04","date_gmt":"2025-11-28T13:41:04","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35348"},"modified":"2025-11-28T16:41:04","modified_gmt":"2025-11-28T13:41:04","slug":"jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/","title":{"rendered":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi"},"content":{"rendered":"<p><body><\/p>\n<h2>JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi<\/h2>\n<p>JSP (JavaServer Pages), Java platformunda dinamik web i\u00e7eri\u011fi olu\u015fturmak i\u00e7in kullan\u0131lan bir teknolojidir. Temel olarak, HTML veya XML gibi statik i\u00e7erikleri Java koduyla birle\u015ftirerek, sunucu taraf\u0131nda i\u015flenen ve istemciye g\u00f6nderilen dinamik web sayfalar\u0131 \u00fcretmenizi sa\u011flar. Bu makale, JSP&#8217;nin temellerini, s\u00f6z dizimini, \u00f6nemli \u00f6zelliklerini ve modern web geli\u015ftirme ba\u011flam\u0131ndaki yerini yeni ba\u015flayanlar i\u00e7in anla\u015f\u0131l\u0131r bir dille a\u00e7\u0131klamay\u0131 hedeflemektedir.<\/p>\n<h3>Giri\u015f: JSP D\u00fcnyas\u0131na Ad\u0131m At\u0131n<\/h3>\n<p>Web siteleri, iki ana t\u00fcrde i\u00e7erik sunar: statik ve dinamik. Statik i\u00e7erik, her kullan\u0131c\u0131ya ayn\u0131 \u015fekilde g\u00f6r\u00fcnen, \u00f6nceden tan\u0131mlanm\u0131\u015f sayfalard\u0131r (\u00f6rne\u011fin, bir \u015firketin &#8220;Hakk\u0131m\u0131zda&#8221; sayfas\u0131). Dinamik i\u00e7erik ise kullan\u0131c\u0131ya veya zamana g\u00f6re de\u011fi\u015fen bilgiler sunar (\u00f6rne\u011fin, ki\u015fiselle\u015ftirilmi\u015f bir profil sayfas\u0131, bir arama motoru sonu\u00e7lar\u0131 sayfas\u0131 veya g\u00fcncel hava durumu bilgileri). \u0130\u015fte JSP, bu dinamik i\u00e7eri\u011fi olu\u015fturman\u0131n g\u00fc\u00e7l\u00fc ve esnek bir yolunu sunar.<\/p>\n<p>JSP sayfalar\u0131, asl\u0131nda \u00f6zel etiketler ve Java kod par\u00e7ac\u0131klar\u0131 (scriptlet&#8217;lar) i\u00e7eren metin tabanl\u0131 belgelerdir. Bir JSP sayfas\u0131 sunucuya ula\u015ft\u0131\u011f\u0131nda, \u00f6zel bir i\u015flemden ge\u00e7irilerek bir Java Servlet&#8217;ine d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr, derlenir ve \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu Servlet, iste\u011fi i\u015fler, veritaban\u0131ndan bilgi al\u0131r, hesaplamalar yapar ve sonu\u00e7lar\u0131 HTML format\u0131nda geri d\u00f6nd\u00fcr\u00fcr. Bu sayede, taray\u0131c\u0131ya sadece nihai HTML i\u00e7eri\u011fi ula\u015f\u0131r ve kullan\u0131c\u0131 dinamik bir deneyim ya\u015far.<\/p>\n<p>JSP&#8217;nin temel amac\u0131, sunum katman\u0131n\u0131 (HTML\/CSS) i\u015f mant\u0131\u011f\u0131ndan (Java kodu) ay\u0131rmaya yard\u0131mc\u0131 olmakt\u0131r. Geleneksel olarak, dinamik web sayfalar\u0131 olu\u015fturmak i\u00e7in do\u011frudan Java Servlet&#8217;leri kullan\u0131labilirdi. Ancak Servlet&#8217;ler i\u00e7inde HTML kodu yazmak olduk\u00e7a zahmetli ve okunaks\u0131z olabiliyordu. JSP, HTML kodunun i\u00e7ine Java kodunu g\u00f6mmeyi kolayla\u015ft\u0131rarak bu s\u00fcreci basitle\u015ftirir ve web tasar\u0131mc\u0131lar\u0131n\u0131n ve geli\u015ftiricilerin i\u015fbirli\u011fini art\u0131r\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler ve Geli\u015ftirme Ortam\u0131 Kurulumu<\/h3>\n<p>JSP \u00f6\u011frenmeye ba\u015flamadan \u00f6nce baz\u0131 temel bilgilere ve ara\u00e7lara ihtiyac\u0131n\u0131z olacak.<\/p>\n<h4>Temel Bilgiler<\/h4>\n<p>*   <strong>Java Programlama Dili Temelleri:<\/strong> De\u011fi\u015fkenler, veri tipleri, d\u00f6ng\u00fcler, ko\u015fullu ifadeler, s\u0131n\u0131flar ve nesneler gibi temel Java kavramlar\u0131na a\u015fina olman\u0131z gerekmektedir. JSP, temelde Java kodu kulland\u0131\u011f\u0131 i\u00e7in bu bilgi olmazsa olmazd\u0131r.<br \/>\n*   <strong>HTML ve CSS Temelleri:<\/strong> Web sayfalar\u0131n\u0131n yap\u0131s\u0131n\u0131 ve stilini anlamak i\u00e7in HTML ve CSS bilgisi \u00f6nemlidir. JSP, HTML \u00e7\u0131kt\u0131s\u0131 \u00fcretti\u011fi i\u00e7in bu dilleri bilmek, olu\u015fturdu\u011funuz sayfalar\u0131n d\u00fczenini ve g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc kontrol etmenizi sa\u011flar.<br \/>\n*   <strong>Web Kavramlar\u0131:<\/strong> HTTP istek\/yan\u0131t d\u00f6ng\u00fcs\u00fc, sunucu ve istemci aras\u0131ndaki ileti\u015fim gibi temel web kavramlar\u0131na a\u015final\u0131k faydal\u0131 olacakt\u0131r.<\/p>\n<h4>Gerekli Ara\u00e7lar<\/h4>\n<p>*   <strong>JDK (Java Development Kit):<\/strong> Java uygulamalar\u0131n\u0131 derlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereklidir.<br \/>\n*   <strong>IDE (Entegre Geli\u015ftirme Ortam\u0131):<\/strong> Kod yazmay\u0131, derlemeyi ve hata ay\u0131klamay\u0131 kolayla\u015ft\u0131ran bir yaz\u0131l\u0131md\u0131r. En pop\u00fcler se\u00e7enekler aras\u0131nda Eclipse (\u00f6zellikle EE s\u00fcr\u00fcm\u00fc veya WTP eklentisi ile) ve IntelliJ IDEA bulunmaktad\u0131r. Bu makalede Eclipse \u00fczerinden \u00f6rnekler verilecektir.<br \/>\n*   <strong>Servlet Konteyneri (Web Sunucusu):<\/strong> JSP sayfalar\u0131n\u0131 ve Servlet&#8217;leri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereklidir. Apache Tomcat, en yayg\u0131n ve yeni ba\u015flayanlar i\u00e7in ideal bir se\u00e7imdir.<\/p>\n<h4>Ortam Kurulumu Ad\u0131mlar\u0131 (Eclipse \u00d6rne\u011fi ile)<\/h4>\n<p>1.  <strong>JDK Kurulumu:<\/strong> Oracle web sitesinden veya OpenJDK da\u011f\u0131t\u0131mlar\u0131ndan (\u00f6rne\u011fin Adoptium) i\u015fletim sisteminize uygun JDK s\u00fcr\u00fcm\u00fcn\u00fc indirip kurun. Kurulumdan sonra <code>JAVA_HOME<\/code> ortam de\u011fi\u015fkenini ayarlad\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n2.  <strong>Eclipse Kurulumu:<\/strong> Eclipse IDE for Enterprise Java and Web Developers s\u00fcr\u00fcm\u00fcn\u00fc Eclipse resmi web sitesinden indirin ve kurun. Bu s\u00fcr\u00fcm, web projesi geli\u015ftirmek i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 (WTP &#8211; Web Tools Platform) i\u00e7erir.<br \/>\n3.  <strong>Apache Tomcat Kurulumu:<\/strong> Apache Tomcat&#8217;in resmi web sitesinden (tomcat.apache.org) en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc (\u00f6rne\u011fin Tomcat 9 veya 10) indirin. \u0130ndirdi\u011finiz <code>zip<\/code> dosyas\u0131n\u0131 sisteminizde kolayca eri\u015febilece\u011finiz bir yere (\u00f6rne\u011fin <code>C:\\apache-tomcat-9.0.x<\/code> veya <code>\/opt\/tomcat<\/code>) a\u00e7\u0131n.<br \/>\n4.  <strong>Tomcat&#8217;i Eclipse&#8217;e Entegre Etme:<\/strong><br \/>\n    *   Eclipse&#8217;i a\u00e7\u0131n.<br \/>\n    *   <code>Window<\/code> -> <code>Show View<\/code> -> <code>Servers<\/code> men\u00fcs\u00fcne gidin.<br \/>\n    *   Servers g\u00f6r\u00fcn\u00fcm\u00fcnde sa\u011f t\u0131klay\u0131n, <code>New<\/code> -> <code>Server<\/code> se\u00e7ene\u011fini se\u00e7in.<br \/>\n    *   <code>Apache<\/code> alt\u0131nda, indirdi\u011finiz Tomcat s\u00fcr\u00fcm\u00fcn\u00fc se\u00e7in (\u00f6rne\u011fin <code>Tomcat v9.0 Server<\/code>).<br \/>\n    *   <code>Next<\/code> d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n    *   <code>Tomcat installation directory<\/code> alan\u0131nda, Tomcat&#8217;i a\u00e7t\u0131\u011f\u0131n\u0131z klas\u00f6r\u00fcn yolunu g\u00f6sterin.<br \/>\n    *   <code>Finish<\/code> d\u00fc\u011fmesine t\u0131klay\u0131n. Art\u0131k Eclipse, Tomcat sunucunuzu tan\u0131yor.<br \/>\n5.  <strong>Yeni Bir Dinamik Web Projesi Olu\u015fturma:<\/strong><br \/>\n    *   <code>File<\/code> -> <code>New<\/code> -> <code>Dynamic Web Project<\/code> se\u00e7ene\u011fini se\u00e7in.<br \/>\n    *   Projenize bir isim verin (\u00f6rne\u011fin <code>IlkJSPProjem<\/code>).<br \/>\n    *   <code>Target Runtime<\/code> olarak az \u00f6nce yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131z Tomcat sunucunuzu se\u00e7in.<br \/>\n    *   <code>Dynamic web module version<\/code> olarak genellikle en y\u00fcksek s\u00fcr\u00fcm\u00fc (\u00f6rne\u011fin 4.0 veya 5.0) se\u00e7ebilirsiniz.<br \/>\n    *   <code>Context root<\/code> varsay\u0131lan olarak projenizin ad\u0131d\u0131r (<code>\/IlkJSPProjem<\/code>).<br \/>\n    *   <code>Generate web.xml deployment descriptor<\/code> se\u00e7ene\u011fini i\u015faretli b\u0131rak\u0131n.<br \/>\n    *   <code>Finish<\/code> d\u00fc\u011fmesine t\u0131klay\u0131n.<\/p>\n<h3>\u0130lk JSP Sayfan\u0131z\u0131 Olu\u015fturma ve \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Projenizi olu\u015fturduktan sonra, <code>WebContent<\/code> (veya <code>src\/main\/webapp<\/code> Maven projesi ise) klas\u00f6r\u00fc alt\u0131nda JSP sayfalar\u0131n\u0131z\u0131 olu\u015fturacaks\u0131n\u0131z.<\/p>\n<p>1.  <strong><code>index.jsp<\/code> Olu\u015fturma:<\/strong><br \/>\n    *   <code>WebContent<\/code> klas\u00f6r\u00fcne sa\u011f t\u0131klay\u0131n, <code>New<\/code> -> <code>JSP File<\/code> se\u00e7ene\u011fini se\u00e7in.<br \/>\n    *   Dosya ad\u0131n\u0131 <code>index.jsp<\/code> olarak belirleyin ve <code>Finish<\/code> d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n2.  <strong>Basit Bir &#8220;Merhaba D\u00fcnya&#8221; JSP Kodu:<\/strong><br \/>\n    <code>index.jsp<\/code> dosyan\u0131z\u0131n i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-jsp\"><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n    <!DOCTYPE html>\n    <html>\n    <head>\n    <meta charset=\"UTF-8\">\n    <title>\u0130lk JSP Sayfam<\/title>\n    <\/head>\n    <body>\n        \n        <p>Bu benim ilk JSP sayfam.<\/p>\n        <%\n            \/\/ Bu bir JSP scriptlet'\u0131d\u0131r. Java kodu i\u00e7erir.\n            String mesaj = \"JSP ile dinamik i\u00e7erik!\";\n            out.println(\"<p>\" + mesaj + \"<\/p>\");\n        %>\n        <p>\u015eu anki zaman: <%= new java.util.Date() %><\/p>\n    <\/body>\n    <\/html><\/code><\/pre>\n<p>3.  <strong>Projenizi Tomcat \u00dczerinde \u00c7al\u0131\u015ft\u0131rma:<\/strong><br \/>\n    *   Servers g\u00f6r\u00fcn\u00fcm\u00fcnde, yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131z Tomcat sunucunuza sa\u011f t\u0131klay\u0131n ve <code>Add and Remove...<\/code> se\u00e7ene\u011fini se\u00e7in.<br \/>\n    *   Sol taraftaki <code>Available<\/code> listesinden projenizi (<code>IlkJSPProjem<\/code>) se\u00e7ip <code>Add ><\/code> d\u00fc\u011fmesine t\u0131klayarak sa\u011f taraftaki <code>Configured<\/code> listesine ta\u015f\u0131y\u0131n.<br \/>\n    *   <code>Finish<\/code> d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n    *   Servers g\u00f6r\u00fcn\u00fcm\u00fcnde Tomcat sunucunuza sa\u011f t\u0131klay\u0131n ve <code>Start<\/code> se\u00e7ene\u011fini se\u00e7in.<br \/>\n    *   Taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:8080\/IlkJSPProjem\/index.jsp<\/code> adresine gidin.<br \/>\n    *   &#8220;Merhaba D\u00fcnya!&#8221; mesaj\u0131n\u0131, &#8220;JSP ile dinamik i\u00e7erik!&#8221; mesaj\u0131n\u0131 ve g\u00fcncel zaman\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>JSP Temel S\u00f6z Dizimi ve Yap\u0131 Ta\u015flar\u0131<\/h3>\n<p>JSP, HTML i\u00e7ine Java kodu g\u00f6mmek i\u00e7in \u00e7e\u015fitli \u00f6zel etiketler ve yap\u0131 ta\u015flar\u0131 kullan\u0131r.<\/p>\n<h4>JSP Sayfa Direktifi (<code>page<\/code> Directive)<\/h4>\n<p>JSP sayfas\u0131n\u0131n en \u00fcst\u00fcnde yer alan bu direktif, sayfan\u0131n genel \u00f6zelliklerini tan\u0131mlar.<\/p>\n<pre><code class=\"language-jsp\"><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%><\/code><\/pre>\n<p>*   <code>language<\/code>: Kullan\u0131lan betik dilini belirtir (varsay\u0131lan olarak <code>java<\/code>).<br \/>\n*   <code>contentType<\/code>: Sayfan\u0131n i\u00e7erik t\u00fcr\u00fcn\u00fc ve karakter kodlamas\u0131n\u0131 belirtir (taray\u0131c\u0131ya ne t\u00fcr bir i\u00e7erik g\u00f6nderildi\u011fini s\u00f6yler).<br \/>\n*   <code>pageEncoding<\/code>: JSP dosyas\u0131n\u0131n karakter kodlamas\u0131n\u0131 belirtir.<br \/>\n*   <code>import<\/code>: Java s\u0131n\u0131flar\u0131n\u0131 i\u00e7e aktarmak i\u00e7in kullan\u0131l\u0131r, t\u0131pk\u0131 Java&#8217;daki <code>import<\/code> ifadesi gibi. \u00d6rne\u011fin: <code><%@ page import=\"java.util.Date, java.util.ArrayList\" %><\/code>.<br \/>\n*   <code>errorPage<\/code>: Bu sayfada bir hata olu\u015ftu\u011funda y\u00f6nlendirilecek hata sayfas\u0131n\u0131n URL&#8217;sini belirtir.<br \/>\n*   <code>isErrorPage<\/code>: Bu sayfan\u0131n bir hata sayfas\u0131 olup olmad\u0131\u011f\u0131n\u0131 belirtir (<code>true<\/code> ise <code>exception<\/code> gizli nesnesi kullan\u0131labilir).<\/p>\n<h4>JSP Scriptlet&#8217;lar (<code><% ... %><\/code>)<\/h4>\n<p>Scriptlet&#8217;lar, JSP sayfas\u0131nda do\u011frudan Java kodu \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r. Bu kod, Servlet&#8217;in <code>_jspService()<\/code> metodu i\u00e7inde yer al\u0131r.<\/p>\n<pre><code class=\"language-jsp\"><%\n    \/\/ Bu bir Java yorumudur\n    int sayi1 = 10;\n    int sayi2 = 20;\n    int toplam = sayi1 + sayi2;\n    out.println(\"<p>Say\u0131lar\u0131n toplam\u0131: \" + toplam + \"<\/p>\");\n\n    for (int i = 0; i < 3; i++) {\n        out.println(\"<p>D\u00f6ng\u00fc Ad\u0131m\u0131: \" + (i + 1) + \"<\/p>\");\n    }\n%><\/code><\/pre>\n<p><strong>UYARI:<\/strong> Scriptlet&#8217;lar, \u00f6zellikle karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131 i\u00e7erdi\u011finde, JSP sayfalar\u0131n\u0131n okunabilirli\u011fini ve bak\u0131m\u0131n\u0131 zorla\u015ft\u0131r\u0131r. Modern JSP geli\u015ftirmede JSTL ve EL gibi daha iyi alternatifler bulundu\u011fundan, scriptlet kullan\u0131m\u0131ndan ka\u00e7\u0131n\u0131lmas\u0131 \u015fiddetle tavsiye edilir. MVC (Model-View-Controller) prensibi gere\u011fi, i\u015f mant\u0131\u011f\u0131 JSP (View) katman\u0131nda de\u011fil, Servlet (Controller) veya Java s\u0131n\u0131flar\u0131nda (Model) olmal\u0131d\u0131r.<\/p>\n<h4>JSP \u0130fadeleri (<code><%= ... %><\/code>)<\/h4>\n<p>\u0130fadeler, bir Java de\u011fi\u015fkeninin veya ifadenin de\u011ferini do\u011frudan HTML \u00e7\u0131kt\u0131s\u0131na yazd\u0131rmak i\u00e7in kullan\u0131l\u0131r. <code>out.print()<\/code> veya <code>out.println()<\/code> kullanmaya gerek kalmaz.<\/p>\n<pre><code class=\"language-jsp\"><%\n    String kullaniciAdi = \"Ali Can\";\n%>\n<p>Ho\u015f geldiniz, <%= kullaniciAdi %>!<\/p>\n<p>Bug\u00fcn\u00fcn tarihi: <%= new java.util.Date() %><\/p>\n<p>2 + 3 = <%= 2 + 3 %><\/p><\/code><\/pre>\n<h4>JSP Bildirimleri (<code><%! ... %><\/code>)<\/h4>\n<p>Bildirimler, JSP sayfas\u0131n\u0131n d\u00f6n\u00fc\u015ft\u00fcr\u00fcld\u00fc\u011f\u00fc Servlet s\u0131n\u0131f\u0131n\u0131n i\u00e7inde, s\u0131n\u0131f seviyesinde de\u011fi\u015fkenler ve metodlar tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r. Bu, t\u00fcm istekler aras\u0131nda payla\u015f\u0131lan (veya yeniden kullan\u0131lan) kaynaklar olu\u015fturmak i\u00e7in kullan\u0131labilir, ancak dikkatli olunmal\u0131d\u0131r \u00e7\u00fcnk\u00fc i\u015f par\u00e7ac\u0131\u011f\u0131 g\u00fcvenli\u011fi sorunlar\u0131na yol a\u00e7abilir.<\/p>\n<pre><code class=\"language-jsp\"><%!\n    \/\/ Bu bir s\u0131n\u0131f de\u011fi\u015fkeni\n    private int sayac = 0;\n\n    \/\/ Bu bir s\u0131n\u0131f metodu\n    public String getSelamlama(String isim) {\n        return \"Merhaba, \" + isim + \"!\";\n    }\n%>\n<p>Sayfa ziyaret say\u0131s\u0131: <%= ++sayac %><\/p>\n<p><%= getSelamlama(\"Ay\u015fe\") %><\/p><\/code><\/pre>\n<h4>JSP Yorumlar\u0131 (<code><%-- ... --%><\/code>)<\/h4>\n<p>JSP yorumlar\u0131, sunucu taraf\u0131ndan i\u015flenmez ve istemciye g\u00f6nderilen HTML \u00e7\u0131kt\u0131s\u0131nda g\u00f6r\u00fcnmez. Bu, kodunuzu belgelendirmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-jsp\"><%-- Bu bir JSP yorumudur. Taray\u0131c\u0131da g\u00f6r\u00fcnmeyecektir. --%>\n<p>Bu metin g\u00f6r\u00fcnecektir.<\/p><\/code><\/pre>\n<h3>JSP&#8217;nin \u00d6nemli Gizli Nesneleri (Implicit Objects)<\/h3>\n<p>JSP, geli\u015ftiricilere haz\u0131r olarak sunulan ve her JSP sayfas\u0131nda otomatik olarak eri\u015filebilen dokuz adet &#8220;gizli nesne&#8221; sa\u011flar. Bu nesneler, web uygulamalar\u0131nda s\u0131k\u00e7a kullan\u0131lan i\u015flevlere kolay eri\u015fim sa\u011flar. En \u00f6nemlileri \u015funlard\u0131r:<\/p>\n<h4><code>request<\/code> Nesnesi<\/h4>\n<p><code>request<\/code> nesnesi, istemciden gelen HTTP iste\u011fi hakk\u0131nda bilgilere eri\u015fim sa\u011flar. Kullan\u0131c\u0131n\u0131n g\u00f6nderdi\u011fi form verileri, URL parametreleri, HTTP ba\u015fl\u0131klar\u0131 gibi bilgilere bu nesne arac\u0131l\u0131\u011f\u0131yla ula\u015f\u0131l\u0131r.<\/p>\n<p>*   <code>request.getParameter(\"parametreAdi\")<\/code>: Formdan veya URL&#8217;den gelen bir parametrenin de\u011ferini al\u0131r.<br \/>\n*   <code>request.setAttribute(\"anahtar\", deger)<\/code>: \u0130ste\u011fe bir nesne ekler.<br \/>\n*   <code>request.getAttribute(\"anahtar\")<\/code>: \u0130ste\u011fe eklenmi\u015f bir nesneyi al\u0131r.<\/p>\n<pre><code class=\"language-jsp\"><%-- form.html (veya index.jsp'de bir form) --%>\n<form action=\"sonuc.jsp\" method=\"post\">\n    Ad\u0131n\u0131z: <input type=\"text\" name=\"ad\"><br>\n    Ya\u015f\u0131n\u0131z: <input type=\"text\" name=\"yas\"><br>\n    <input type=\"submit\" value=\"G\u00f6nder\">\n<\/form>\n\n<%-- sonuc.jsp --%>\n<%\n    String ad = request.getParameter(\"ad\");\n    String yasStr = request.getParameter(\"yas\");\n    int yas = 0;\n    if (yasStr != null &#038;&#038; !yasStr.isEmpty()) {\n        yas = Integer.parseInt(yasStr);\n    }\n%>\n<p>Merhaba, <%= ad %>!<\/p>\n<p>Ya\u015f\u0131n\u0131z: <%= yas %><\/p><\/code><\/pre>\n<h4><code>response<\/code> Nesnesi<\/h4>\n<p><code>response<\/code> nesnesi, sunucunun istemciye geri g\u00f6nderece\u011fi HTTP yan\u0131t\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <code>response.sendRedirect(\"yeniSayfa.jsp\")<\/code>: \u0130stemciyi ba\u015fka bir URL&#8217;ye y\u00f6nlendirir.<\/p>\n<pre><code class=\"language-jsp\"><%\n    \/\/ Kullan\u0131c\u0131 do\u011frulanmad\u0131ysa giri\u015f sayfas\u0131na y\u00f6nlendir\n    boolean dogrulandi = false; \/\/ Ger\u00e7ekte bir kontrol mekanizmas\u0131 olur\n    if (!dogrulandi) {\n        response.sendRedirect(\"giris.jsp\");\n    }\n%><\/code><\/pre>\n<h4><code>session<\/code> Nesnesi<\/h4>\n<p><code>session<\/code> nesnesi, bir kullan\u0131c\u0131n\u0131n birden fazla istek boyunca s\u00fcren oturum bilgilerini saklamak i\u00e7in kullan\u0131l\u0131r. Oturumlar, kullan\u0131c\u0131 giri\u015fi, al\u0131\u015fveri\u015f sepeti gibi durumlar\u0131 takip etmek i\u00e7in \u00f6nemlidir.<\/p>\n<p>*   <code>session.setAttribute(\"anahtar\", deger)<\/code>: Oturuma bir nesne ekler.<br \/>\n*   <code>session.getAttribute(\"anahtar\")<\/code>: Oturumdan bir nesneyi al\u0131r.<br \/>\n*   <code>session.invalidate()<\/code>: Oturumu sonland\u0131r\u0131r.<\/p>\n<pre><code class=\"language-jsp\"><%\n    String kullaniciAdi = (String) session.getAttribute(\"kullaniciAdi\");\n    if (kullaniciAdi == null) {\n        session.setAttribute(\"kullaniciAdi\", \"Misafir\");\n        kullaniciAdi = \"Misafir\";\n    }\n%>\n<p>Oturumdaki kullan\u0131c\u0131: <%= kullaniciAdi %><\/p><\/code><\/pre>\n<h4><code>application<\/code> Nesnesi<\/h4>\n<p><code>application<\/code> nesnesi, t\u00fcm web uygulamas\u0131 i\u00e7in ge\u00e7erli olan ve t\u00fcm kullan\u0131c\u0131lar taraf\u0131ndan payla\u015f\u0131lan bilgileri saklamak i\u00e7in kullan\u0131l\u0131r. Uygulama ba\u015flat\u0131ld\u0131\u011f\u0131nda olu\u015fturulur ve uygulama durdu\u011funda yok edilir.<\/p>\n<p>*   <code>application.setAttribute(\"anahtar\", deger)<\/code><br \/>\n*   <code>application.getAttribute(\"anahtar\")<\/code><\/p>\n<h4><code>out<\/code> Nesnesi<\/h4>\n<p><code>out<\/code> nesnesi, JSP sayfas\u0131n\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 do\u011frudan istemciye yazmak i\u00e7in kullan\u0131l\u0131r. <code>out.print()<\/code> ve <code>out.println()<\/code> metodlar\u0131 vard\u0131r. JSP ifadeleri (<code><%= ... %><\/code>) asl\u0131nda <code>out.print()<\/code> metodunu kullanarak \u00e7al\u0131\u015f\u0131r.<\/p>\n<pre><code class=\"language-jsp\"><%\n    out.println(\"\");\n%><\/code><\/pre>\n<p>Di\u011fer gizli nesneler: <code>pageContext<\/code> (sayfa ba\u011flam\u0131 bilgisi), <code>config<\/code> (Servlet yap\u0131land\u0131rma bilgisi), <code>page<\/code> (ge\u00e7erli JSP Servlet \u00f6rne\u011fi), <code>exception<\/code> (hata sayfalar\u0131nda hata nesnesi).<\/p>\n<h3>JSP Direktifleri (Directives)<\/h3>\n<p>Direktifler, JSP motoruna sayfan\u0131n nas\u0131l i\u015flenece\u011fi hakk\u0131nda bilgi veren \u00f6zel talimatlard\u0131r. Daha \u00f6nce <code>page<\/code> direktifini g\u00f6rm\u00fc\u015ft\u00fck. Di\u011fer \u00f6nemli direktifler \u015funlard\u0131r:<\/p>\n<h4><code>include<\/code> Direktifi (<code><%@ include file=\"...\" %><\/code>)<\/h4>\n<p><code>include<\/code> direktifi, ba\u015fka bir dosyan\u0131n i\u00e7eri\u011fini (JSP, HTML, metin) statik olarak, yani JSP sayfas\u0131 derlenmeden \u00f6nce, ge\u00e7erli sayfaya dahil etmek i\u00e7in kullan\u0131l\u0131r. Bu, ortak ba\u015fl\u0131klar, alt bilgiler veya navigasyon men\u00fcleri gibi tekrar eden sayfa b\u00f6l\u00fcmlerini y\u00f6netmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-jsp\"><%-- header.jspf (\u00f6rne\u011fin) --%>\n<header>\n    \n    <nav>\n        <a href=\"\/\">Ana Sayfa<\/a> | <a href=\"\/hakkimizda\">Hakk\u0131m\u0131zda<\/a>\n    <\/nav>\n<\/header>\n\n<%-- index.jsp --%>\n<%@ include file=\"header.jspf\" %>\n<main>\n    <p>Ana sayfa i\u00e7eri\u011fi burada.<\/p>\n<\/main>\n<%@ include file=\"footer.jspf\" %><\/code><\/pre>\n<h4><code>taglib<\/code> Direktifi (<code><%@ taglib uri=\"...\" prefix=\"...\" %><\/code>)<\/h4>\n<p><code>taglib<\/code> direktifi, JSP sayfalar\u0131nda \u00f6zel etiket k\u00fct\u00fcphanelerini (JSTL gibi) veya kendi \u00f6zel etiketlerinizi kullanmak i\u00e7in gereklidir. Bu direktif, etiket k\u00fct\u00fcphanesinin konumunu (URI) ve bu k\u00fct\u00fcphanedeki etiketleri kullanmak i\u00e7in bir \u00f6n ek (prefix) tan\u0131mlar.<\/p>\n<pre><code class=\"language-jsp\"><%@ taglib uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" prefix=\"c\" %>\n<%-- Art\u0131k <c:out>, <c:if> gibi JSTL etiketlerini kullanabiliriz --%><\/code><\/pre>\n<h3>JSP Standart Eylemleri (Standard Actions)<\/h3>\n<p>JSP standart eylemleri, XML s\u00f6z dizimine sahip etiketlerdir ve JSP motoruna belirli g\u00f6revleri yerine getirmesini s\u00f6yler. <code><jsp:actionName ... \/><\/code> \u015feklinde kullan\u0131l\u0131rlar.<\/p>\n<h4><code><jsp:include page=\"...\" \/><\/code><\/h4>\n<p>Bu eylem, ba\u015fka bir JSP sayfas\u0131n\u0131n veya kayna\u011f\u0131n\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 \u00e7al\u0131\u015fma zaman\u0131nda (run-time) ge\u00e7erli sayfaya dahil eder. <code><%@ include %><\/code> direktifinden farkl\u0131 olarak, dahil edilen sayfa ba\u011f\u0131ms\u0131z olarak derlenir ve \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu, dinamik i\u00e7erik eklemek i\u00e7in daha esnektir.<\/p>\n<pre><code class=\"language-jsp\"><%-- index.jsp --%>\n<p>Bu ana sayfa i\u00e7eri\u011fi.<\/p>\n<jsp:include page=\"dinamikKisim.jsp\" \/>\n<p>Ana sayfan\u0131n kalan k\u0131sm\u0131.<\/p>\n\n<%-- dinamikKisim.jsp --%>\n<p>Bu k\u0131s\u0131m dinamik olarak eklendi. \u015eu anki saat: <%= new java.util.Date() %><\/p><\/code><\/pre>\n<h4><code><jsp:forward page=\"...\" \/><\/code><\/h4>\n<p>Bu eylem, istemcinin iste\u011fini sunucu taraf\u0131nda ba\u015fka bir JSP sayfas\u0131na veya Servlet&#8217;e y\u00f6nlendirir. Taray\u0131c\u0131ya yeni bir URL g\u00f6nderilmez; y\u00f6nlendirme sunucu i\u00e7inde ger\u00e7ekle\u015fir.<\/p>\n<pre><code class=\"language-jsp\"><%-- giris.jsp --%>\n<%\n    boolean dogrulandi = true; \/\/ Do\u011frulama ba\u015far\u0131l\u0131ysa\n    if (dogrulandi) {\n        \/\/ Do\u011frulama ba\u015far\u0131l\u0131, ana sayfaya y\u00f6nlendir\n        jsp:forward page=\"anasayfa.jsp\" \/>\n    } else {\n        \/\/ Do\u011frulama ba\u015far\u0131s\u0131z, hata mesaj\u0131 g\u00f6ster\n%>\n        <p>Kullan\u0131c\u0131 ad\u0131 veya \u015fifre yanl\u0131\u015f.<\/p>\n<%\n    }\n%><\/code><\/pre>\n<h4><code><jsp:param name=\"...\" value=\"...\" \/><\/code><\/h4>\n<p>Bu eylem, <code><jsp:include><\/code> veya <code><jsp:forward><\/code> eylemleriyle birlikte kullan\u0131larak, y\u00f6nlendirilen veya dahil edilen sayfaya ek parametreler g\u00f6ndermek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-jsp\"><jsp:include page=\"selamlama.jsp\">\n    <jsp:param name=\"isim\" value=\"Deniz\" \/>\n    <jsp:param name=\"mesaj\" value=\"Merhaba!\" \/>\n<\/jsp:include>\n\n<%-- selamlama.jsp --%>\n<p><%= request.getParameter(\"mesaj\") %>, <%= request.getParameter(\"isim\") %>!<\/p><\/code><\/pre>\n<h4><code><jsp:useBean><\/code>, <code><jsp:setProperty><\/code>, <code><jsp:getProperty><\/code><\/h4>\n<p>Bu eylemler, JavaBeans ile \u00e7al\u0131\u015fmay\u0131 kolayla\u015ft\u0131r\u0131r. JavaBeans, basit Java s\u0131n\u0131flar\u0131d\u0131r ve JSP&#8217;de veri ta\u015f\u0131mak veya i\u015f mant\u0131\u011f\u0131n\u0131 kaps\u00fcllemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <code><jsp:useBean id=\"beanAdi\" class=\"paket.SinifAdi\" scope=\"kapsam\"\/><\/code>: Belirtilen s\u0131n\u0131ftan bir JavaBean \u00f6rne\u011fi olu\u015fturur veya mevcut bir \u00f6rne\u011fi bulur. <code>scope<\/code> \u00f6zniteli\u011fi, bean&#8217;in hangi kapsamda (page, request, session, application) saklanaca\u011f\u0131n\u0131 belirler.<br \/>\n*   <code><jsp:setProperty name=\"beanAdi\" property=\"ozellikAdi\" value=\"deger\"\/><\/code>: Bir JavaBean&#8217;in \u00f6zelli\u011fini ayarlar.<br \/>\n*   <code><jsp:getProperty name=\"beanAdi\" property=\"ozellikAdi\"\/><\/code>: Bir JavaBean&#8217;in \u00f6zelli\u011finin de\u011ferini al\u0131r.<\/p>\n<pre><code class=\"language-java\">\/\/ src\/main\/java\/com\/example\/model\/Kullanici.java\npackage com.example.model;\n\npublic class Kullanici {\n    private String ad;\n    private int yas;\n\n    public String getAd() { return ad; }\n    public void setAd(String ad) { this.ad = ad; }\n    public int getYas() { return yas; }\n    public void setYas(int yas) { this.yas = yas; }\n}<\/code><\/pre>\n<pre><code class=\"language-jsp\"><%-- index.jsp --%>\n<jsp:useBean id=\"kullanici\" class=\"com.example.model.Kullanici\" scope=\"request\" \/>\n<jsp:setProperty name=\"kullanici\" property=\"ad\" value=\"Zeynep\" \/>\n<jsp:setProperty name=\"kullanici\" property=\"yas\" value=\"25\" \/>\n\n<p>Kullan\u0131c\u0131 Ad\u0131: <jsp:getProperty name=\"kullanici\" property=\"ad\" \/><\/p>\n<p>Kullan\u0131c\u0131 Ya\u015f\u0131: <jsp:getProperty name=\"kullanici\" property=\"yas\" \/><\/p><\/code><\/pre>\n<h3>Pratik Bir JSP \u00d6rne\u011fi: Kullan\u0131c\u0131 Giri\u015fi ve Sonu\u00e7 Sayfas\u0131<\/h3>\n<p>\u015eimdi \u00f6\u011frendiklerimizi kullanarak basit bir kullan\u0131c\u0131 giri\u015f formu ve sonu\u00e7 sayfas\u0131n\u0131 olu\u015ftural\u0131m.<\/p>\n<h4><code>index.jsp<\/code> (Giri\u015f Formu)<\/h4>\n<pre><code class=\"language-jsp\"><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>Kullan\u0131c\u0131 Giri\u015fi<\/title>\n<style>\n    body { font-family: Arial, sans-serif; margin: 20px; }\n    form { border: 1px solid #ccc; padding: 20px; width: 300px; }\n    div { margin-bottom: 10px; }\n    label { display: inline-block; width: 80px; }\n    input[type=\"text\"], input[type=\"password\"] { width: 200px; padding: 5px; }\n    input[type=\"submit\"] { padding: 8px 15px; background-color: #007bff; color: white; border: none; cursor: pointer; }\n    .error { color: red; }\n<\/style>\n<\/head>\n<body>\n    <h2>Kullan\u0131c\u0131 Giri\u015f Formu<\/h2>\n    <form action=\"islem.jsp\" method=\"post\">\n        <div>\n            <label for=\"username\">Kullan\u0131c\u0131 Ad\u0131:<\/label>\n            <input type=\"text\" id=\"username\" name=\"username\" required>\n        <\/div>\n        <div>\n            <label for=\"password\">\u015eifre:<\/label>\n            <input type=\"password\" id=\"password\" name=\"password\" required>\n        <\/div>\n        <div>\n            <input type=\"submit\" value=\"Giri\u015f Yap\">\n        <\/div>\n    <\/form>\n<\/body>\n<\/html><\/code><\/pre>\n<h4><code>islem.jsp<\/code> (\u0130\u015flem ve Sonu\u00e7 Sayfas\u0131)<\/h4>\n<pre><code class=\"language-jsp\"><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>Giri\u015f Sonucu<\/title>\n<style>\n    body { font-family: Arial, sans-serif; margin: 20px; }\n    .success { color: green; font-weight: bold; }\n    .error { color: red; font-weight: bold; }\n<\/style>\n<\/head>\n<body>\n    <h2>Giri\u015f Sonucu<\/h2>\n    <%\n        String username = request.getParameter(\"username\");\n        String password = request.getParameter(\"password\");\n\n        \/\/ Basit bir do\u011frulama (ger\u00e7ek uygulamada veritaban\u0131 kontrol\u00fc yap\u0131l\u0131r)\n        if (\"admin\".equals(username) &#038;&#038; \"12345\".equals(password)) {\n            \/\/ Oturuma kullan\u0131c\u0131 ad\u0131n\u0131 kaydet\n            session.setAttribute(\"loggedInUser\", username);\n    %>\n            <p class=\"success\">Ho\u015f geldiniz, <%= username %>!<\/p>\n            <p>Giri\u015f ba\u015far\u0131l\u0131. <a href=\"anasayfa.jsp\">Ana Sayfaya Git<\/a><\/p>\n    <%\n        } else {\n    %>\n            <p class=\"error\">Kullan\u0131c\u0131 ad\u0131 veya \u015fifre yanl\u0131\u015f.<\/p>\n            <p><a href=\"index.jsp\">Tekrar Dene<\/a><\/p>\n    <%\n        }\n    %>\n<\/body>\n<\/html><\/code><\/pre>\n<h4><code>anasayfa.jsp<\/code> (Giri\u015f Yapm\u0131\u015f Kullan\u0131c\u0131 \u0130\u00e7in Sayfa)<\/h4>\n<pre><code class=\"language-jsp\"><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>Ana Sayfa<\/title>\n<style>\n    body { font-family: Arial, sans-serif; margin: 20px; }\n    .info { color: blue; }\n<\/style>\n<\/head>\n<body>\n    <h2>Ana Sayfa<\/h2>\n    <%\n        String loggedInUser = (String) session.getAttribute(\"loggedInUser\");\n        if (loggedInUser != null) {\n    %>\n            <p class=\"info\">Merhaba, <%= loggedInUser %>! Bu, giri\u015f yapt\u0131ktan sonraki ana sayfan\u0131z.<\/p>\n            <p><a href=\"cikis.jsp\">\u00c7\u0131k\u0131\u015f Yap<\/a><\/p>\n    <%\n        } else {\n    %>\n            <p class=\"error\">Giri\u015f yapmad\u0131n\u0131z. <a href=\"index.jsp\">Giri\u015f Yapmak \u0130\u00e7in T\u0131klay\u0131n<\/a><\/p>\n    <%\n        }\n    %>\n<\/body>\n<\/html><\/code><\/pre>\n<h4><code>cikis.jsp<\/code> (\u00c7\u0131k\u0131\u015f Sayfas\u0131)<\/h4>\n<pre><code class=\"language-jsp\"><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>\u00c7\u0131k\u0131\u015f Yap\u0131ld\u0131<\/title>\n<style>\n    body { font-family: Arial, sans-serif; margin: 20px; }\n    .message { color: gray; }\n<\/style>\n<\/head>\n<body>\n    <h2>\u00c7\u0131k\u0131\u015f Yap\u0131ld\u0131<\/h2>\n    <%\n        session.invalidate(); \/\/ Oturumu sonland\u0131r\n    %>\n    <p class=\"message\">Ba\u015far\u0131yla \u00e7\u0131k\u0131\u015f yapt\u0131n\u0131z.<\/p>\n    <p><a href=\"index.jsp\">Giri\u015f Sayfas\u0131na D\u00f6n<\/a><\/p>\n<\/body>\n<\/html><\/code><\/pre>\n<p>Bu \u00f6rnek, <code>request<\/code> nesnesini kullanarak form verilerini almay\u0131, <code>session<\/code> nesnesini kullanarak kullan\u0131c\u0131 oturumunu y\u00f6netmeyi ve basit ko\u015fullu mant\u0131kla dinamik i\u00e7erik sunmay\u0131 g\u00f6stermektedir.<\/p>\n<h3>Modern JSP Geli\u015ftirme: JSTL ve EL ile Scriptlet&#8217;lardan Kurtulmak<\/h3>\n<p>Yukar\u0131daki \u00f6rnekte scriptlet&#8217;lar\u0131 yo\u011fun bir \u015fekilde kulland\u0131k. Ancak modern JSP geli\u015ftirmede bu, k\u00f6t\u00fc bir uygulama olarak kabul edilir.<\/p>\n<h4>Neden Scriptlet Kullanmaktan Ka\u00e7\u0131nmal\u0131y\u0131z?<\/h4>\n<p>*   <strong>Kod Okunabilirli\u011fi ve Bak\u0131m\u0131:<\/strong> HTML ve Java kodunun i\u00e7 i\u00e7e ge\u00e7mesi, sayfan\u0131n okunmas\u0131n\u0131 ve bak\u0131m\u0131n\u0131 zorla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Ayr\u0131m Prensibi (Separation of Concerns):<\/strong> JSP&#8217;nin amac\u0131 sunum katman\u0131 olmakt\u0131r. \u0130\u015f mant\u0131\u011f\u0131, veritaban\u0131 eri\u015fimi gibi g\u00f6revler Servlet&#8217;ler veya JavaBeans gibi ayr\u0131 Java s\u0131n\u0131flar\u0131nda olmal\u0131d\u0131r. Scriptlet&#8217;lar bu ayr\u0131m\u0131 bozar.<br \/>\n*   <strong>Hata Ay\u0131klama Zorlu\u011fu:<\/strong> HTML i\u00e7inde Java kodu aras\u0131nda hata ay\u0131klamak daha karma\u015f\u0131kt\u0131r.<br \/>\n*   <strong>Tasar\u0131mc\u0131 Dostu De\u011fil:<\/strong> Web tasar\u0131mc\u0131lar\u0131 genellikle Java koduna a\u015fina de\u011fildir ve scriptlet&#8217;larla dolu sayfalar\u0131 d\u00fczenlemekte zorlan\u0131rlar.<\/p>\n<h4>JSTL (JSP Standard Tag Library)<\/h4>\n<p>JSTL, scriptlet&#8217;lar\u0131n yerine ge\u00e7mek \u00fczere tasarlanm\u0131\u015f, standart bir etiket k\u00fct\u00fcphanesidir. D\u00f6ng\u00fcler, ko\u015fullu ifadeler, veri formatlama gibi yayg\u0131n g\u00f6revleri yerine getiren etiketler sunar.<\/p>\n<p><strong>Kurulumu:<\/strong><br \/>\nJSTL kullanmak i\u00e7in, projenizin <code>WEB-INF\/lib<\/code> klas\u00f6r\u00fcne <code>jstl-1.2.jar<\/code> (veya daha yeni s\u00fcr\u00fcm\u00fc) dosyas\u0131n\u0131 eklemeniz gerekir. Bu JAR dosyas\u0131n\u0131 Apache Tomcat&#8217;in veya di\u011fer web sunucular\u0131n\u0131n <code>lib<\/code> klas\u00f6r\u00fcnden bulabilir veya Maven\/Gradle ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olarak ekleyebilirsiniz.<\/p>\n<p><strong>Temel Etiketler:<\/strong><\/p>\n<p>*   <strong>Core Etiketleri (<code>c<\/code> prefix&#8217;i ile):<\/strong> <code><c:out><\/code>, <code><c:if><\/code>, <code><c:forEach><\/code>, <code><c:set><\/code>, <code><c:redirect><\/code>.<br \/>\n*   <strong>Format Etiketleri (<code>fmt<\/code> prefix&#8217;i ile):<\/strong> Tarih, say\u0131 ve para birimi formatlama.<br \/>\n*   <strong>SQL Etiketleri (<code>sql<\/code> prefix&#8217;i ile):<\/strong> Veritaban\u0131 i\u015flemleri (genellikle MVC&#8217;de Controller katman\u0131nda yap\u0131l\u0131r, JSP&#8217;de \u00f6nerilmez).<br \/>\n*   <strong>XML Etiketleri (<code>x<\/code> prefix&#8217;i ile):<\/strong> XML verileriyle \u00e7al\u0131\u015fma.<br \/>\n*   <strong>Functions Etiketleri (<code>fn<\/code> prefix&#8217;i ile):<\/strong> String i\u015flemleri gibi yard\u0131mc\u0131 fonksiyonlar.<\/p>\n<h4>EL (Expression Language)<\/h4>\n<p>EL, JSP sayfalar\u0131nda Java koduna ihtiya\u00e7 duymadan verilere eri\u015fmek i\u00e7in kullan\u0131lan basit bir dildir. Genellikle JSTL etiketleriyle birlikte kullan\u0131l\u0131r ve JavaBeans \u00f6zelliklerine, koleksiyon elemanlar\u0131na, parametrelere ve gizli nesnelere kolayca eri\u015fim sa\u011flar.<\/p>\n<p><strong>\u00d6rnekler:<\/strong><br \/>\n*   <code>${kullanici.ad}<\/code>: <code>kullanici<\/code> adl\u0131 bir JavaBean&#8217;in <code>ad<\/code> \u00f6zelli\u011fine eri\u015fir.<br \/>\n*   <code>${param.username}<\/code>: <code>username<\/code> adl\u0131 bir HTTP iste\u011fi parametresine eri\u015fir.<br \/>\n*   <code>${sessionScope.loggedInUser}<\/code>: Oturumdaki <code>loggedInUser<\/code> adl\u0131 de\u011fi\u015fkene eri\u015fir.<br \/>\n*   <code>${requestScope.mesaj}<\/code>: \u0130stekteki <code>mesaj<\/code> adl\u0131 de\u011fi\u015fkene eri\u015fir.<\/p>\n<p><strong><code>islem.jsp<\/code>&#8216;yi JSTL ve EL ile Yeniden Yazma:<\/strong><\/p>\n<pre><code class=\"language-jsp\"><%@ page language=\"java\" contentType=\"text\/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" prefix=\"c\" %>\n<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>Giri\u015f Sonucu<\/title>\n<style>\n    body { font-family: Arial, sans-serif; margin: 20px; }\n    .success { color: green; font-weight: bold; }\n    .error { color: red; font-weight: bold; }\n<\/style>\n<\/head>\n<body>\n    <h2>Giri\u015f Sonucu<\/h2>\n    <c:set var=\"username\" value=\"${param.username}\" \/>\n    <c:set var=\"password\" value=\"${param.password}\" \/>\n\n    <c:if test=\"${username eq 'admin' and password eq '12345'}\">\n        <c:set var=\"loggedInUser\" value=\"${username}\" scope=\"session\" \/>\n        <p class=\"success\">Ho\u015f geldiniz, <c:out value=\"${loggedInUser}\" \/>!<\/p>\n        <p>Giri\u015f ba\u015far\u0131l\u0131. <a href=\"anasayfa.jsp\">Ana Sayfaya Git<\/a><\/p>\n    <\/c:if>\n    <c:if test=\"${!(username eq 'admin' and password eq '12345')}\">\n        <p class=\"error\">Kullan\u0131c\u0131 ad\u0131 veya \u015fifre yanl\u0131\u015f.<\/p>\n        <p><a href=\"index.jsp\">Tekrar Dene<\/a><\/p>\n    <\/c:if>\n<\/body>\n<\/html><\/code><\/pre>\n<p>Bu versiyon, scriptlet&#8217;lardan \u00e7ok daha temiz ve okunabilirdir.<\/p>\n<h3>JSP ve MVC Mimarisi<\/h3>\n<p>JSP, genellikle MVC (Model-View-Controller) mimarisiyle birlikte kullan\u0131l\u0131r. Bu mimari, bir uygulaman\u0131n farkl\u0131 katmanlar\u0131n\u0131 ay\u0131rarak geli\u015ftirme, bak\u0131m ve \u00f6l\u00e7eklenebilirli\u011fi kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>*   <strong>Model:<\/strong> Uygulaman\u0131n veri ve i\u015f mant\u0131\u011f\u0131n\u0131 temsil eder (\u00f6rne\u011fin, JavaBeans, DAO s\u0131n\u0131flar\u0131).<br \/>\n*   <strong>View:<\/strong> Kullan\u0131c\u0131ya sunulan aray\u00fcz\u00fc temsil eder (JSP sayfalar\u0131). JSP&#8217;ler, Model&#8217;den gelen verileri al\u0131p kullan\u0131c\u0131ya g\u00f6sterir.<br \/>\n*   <strong>Controller:<\/strong> Kullan\u0131c\u0131dan gelen istekleri al\u0131r, Model ile etkile\u015fime girer ve uygun View&#8217;\u0131 se\u00e7erek yan\u0131t\u0131 haz\u0131rlar (Servlet&#8217;ler).<\/p>\n<p>Bu yap\u0131da, Servlet&#8217;ler (Controller) kullan\u0131c\u0131dan gelen istekleri i\u015fler, gerekli i\u015f mant\u0131\u011f\u0131n\u0131 (Model) \u00e7a\u011f\u0131r\u0131r, verileri haz\u0131rlar ve bu verileri JSP sayfalar\u0131na (View) iletir. JSP sayfalar\u0131 sadece bu verileri al\u0131p HTML olarak sunar, i\u00e7inde i\u015f mant\u0131\u011f\u0131 bar\u0131nd\u0131rmaz. Bu, &#8220;Thin View&#8221; veya &#8220;Smart Controller, Dumb View&#8221; prensibi olarak bilinir.<\/p>\n<h3>\u0130leri D\u00fczey Konulara K\u0131sa Bir Bak\u0131\u015f<\/h3>\n<p>JSP&#8217;nin temelini \u00f6\u011frendikten sonra, uygulaman\u0131z\u0131 daha da geli\u015ftirmek i\u00e7in baz\u0131 ileri d\u00fczey konular\u0131 ke\u015ffedebilirsiniz:<\/p>\n<h4>\u00d6zel Etiket K\u00fct\u00fcphaneleri (Custom Tag Libraries)<\/h4>\n<p>JSTL gibi, kendi \u00f6zel etiket k\u00fct\u00fcphanelerinizi olu\u015fturabilirsiniz. Bu, uygulaman\u0131za \u00f6zel tekrar kullan\u0131labilir bile\u015fenler veya i\u015flevler tan\u0131mlaman\u0131za olanak tan\u0131r.<\/p>\n<h4>JSP Fragmentleri ve \u015eablonlar<\/h4>\n<p><code>include<\/code> direktifi ve eylemi, sayfa b\u00f6l\u00fcmlerini tekrar kullanmak i\u00e7in harika olsa da, daha geli\u015fmi\u015f \u015fablonlama i\u00e7in Apache Tiles gibi framework&#8217;ler veya JSP&#8217;nin kendisinde daha yap\u0131land\u0131r\u0131lm\u0131\u015f yakla\u015f\u0131mlar (\u00f6rne\u011fin, bir temel \u015fablon ve i\u00e7eri\u011fi dolduran fragmentler) kullan\u0131labilir.<\/p>\n<h4>Hata Y\u00f6netimi<\/h4>\n<p>JSP, hatalar\u0131 y\u00f6netmek i\u00e7in <code>errorPage<\/code> ve <code>isErrorPage<\/code> direktiflerini sunar. Ayr\u0131ca <code>web.xml<\/code> dosyas\u0131nda <code><error-page><\/code> yap\u0131land\u0131rmas\u0131 ile belirli HTTP durum kodlar\u0131 veya istisna t\u00fcrleri i\u00e7in \u00f6zel hata sayfalar\u0131 tan\u0131mlayabilirsiniz.<\/p>\n<h4>G\u00fcvenlik<\/h4>\n<p>JSP uygulamalar\u0131 geli\u015ftirirken g\u00fcvenlik kritik \u00f6neme sahiptir.<br \/>\n*   <strong>XSS (Cross-Site Scripting):<\/strong> Kullan\u0131c\u0131dan al\u0131nan verileri do\u011frudan sayfaya yazd\u0131rmadan \u00f6nce her zaman temizleyin veya ka\u00e7\u0131\u015f karakterlerine d\u00f6n\u00fc\u015ft\u00fcr\u00fcn (<code><c:out value=\"...\" escapeXml=\"true\"\/><\/code> JSTL&#8217;de varsay\u0131lan olarak bunu yapar).<br \/>\n*   <strong>SQL Enjeksiyonu:<\/strong> Veritaban\u0131 sorgular\u0131nda parametreli sorgular kullan\u0131n, asla kullan\u0131c\u0131 girdilerini do\u011frudan sorguya eklemeyin.<br \/>\n*   <strong>Oturum G\u00fcvenli\u011fi:<\/strong> Oturum kimliklerinin \u00e7al\u0131nmas\u0131n\u0131 \u00f6nlemek i\u00e7in HTTPS kullan\u0131n ve oturum kimliklerini URL&#8217;de g\u00f6stermekten ka\u00e7\u0131n\u0131n.<\/p>\n<h3>En \u0130yi Uygulamalar ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>*   <strong>Scriptlet&#8217;lardan Uzak Durun:<\/strong> M\u00fcmk\u00fcn oldu\u011funca JSTL ve EL kullan\u0131n. JSP&#8217;ler sadece sunum katman\u0131 olmal\u0131d\u0131r.<br \/>\n*   <strong>Kodu Temiz Tutun:<\/strong> HTML, CSS ve JavaScript&#8217;i ayr\u0131 dosyalarda tutun ve JSP&#8217;de sadece bunlar\u0131 dahil edin veya \u00e7a\u011f\u0131r\u0131n.<br \/>\n*   <strong>MVC Mimarisine Uyun:<\/strong> \u0130\u015f mant\u0131\u011f\u0131n\u0131 Servlet&#8217;lere veya di\u011fer Java s\u0131n\u0131flar\u0131na ta\u015f\u0131y\u0131n. JSP&#8217;ler sadece verileri g\u00f6steren &#8220;aptal&#8221; g\u00f6r\u00fcn\u00fcmler olmal\u0131d\u0131r.<br \/>\n*   <strong>Kapsaml\u0131 Hata Y\u00f6netimi Uygulay\u0131n:<\/strong> Kullan\u0131c\u0131ya dost\u00e7a hata mesajlar\u0131 g\u00f6sterin ve sunucu taraf\u0131nda hatalar\u0131 d\u00fczg\u00fcn bir \u015fekilde g\u00fcnl\u00fc\u011fe kaydedin.<br \/>\n*   <strong>G\u00fcvenlik Konusunda Dikkatli Olun:<\/strong> XSS, CSRF, SQL enjeksiyonu gibi yayg\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 \u00f6nlemler al\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JSP, Java platformunda dinamik web i\u00e7eri\u011fi olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir teknolojidir. HTML ile Java kodunu birle\u015ftirme yetene\u011fi sayesinde, geli\u015ftiricilerin etkile\u015fimli ve ki\u015fiselle\u015ftirilmi\u015f web deneyimleri sunmas\u0131n\u0131 sa\u011flar. Ba\u015flang\u0131\u00e7ta scriptlet&#8217;larla kod yazmak cazip gelse de, modern web geli\u015ftirme yakla\u015f\u0131mlar\u0131 (\u00f6zellikle JSTL ve EL ile birlikte) JSP&#8217;yi daha temiz, bak\u0131m\u0131 kolay ve MVC prensiplerine uygun bir sunum katman\u0131 arac\u0131 haline getirmi\u015ftir.<\/p>\n<p>Bu makale, JSP&#8217;nin temel kavramlar\u0131n\u0131, s\u00f6z dizimini ve pratik bir \u00f6rnekle nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 kapsayan kapsaml\u0131 bir ba\u015flang\u0131\u00e7 rehberi sunmu\u015ftur. JSP \u00f6\u011frenmek, Java tabanl\u0131 web uygulamalar\u0131 d\u00fcnyas\u0131na ad\u0131m atmak i\u00e7in harika bir yoldur ve Spring MVC, JSF gibi daha geli\u015fmi\u015f framework&#8217;lerin temelini anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r. \u00d6\u011frenmeye devam edin, pratik yap\u0131n ve web geli\u015ftirme yolculu\u011funuzda ba\u015far\u0131lar dileriz!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi\nJSP (JavaServer Pages), Java platformunda dinamik web i\u00e7eri\u011fi olu","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[874],"tags":[],"class_list":{"0":"post-35348","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-server","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi\" \/>\n<meta property=\"og:description\" content=\"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi JSP (JavaServer Pages), Java platformunda dinamik web i\u00e7eri\u011fi olu\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-28T13:41:04+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi\",\"datePublished\":\"2025-11-28T13:41:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/\"},\"wordCount\":3142,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Server\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/\",\"name\":\"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-28T13:41:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/","og_locale":"tr_TR","og_type":"article","og_title":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi","og_description":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi JSP (JavaServer Pages), Java platformunda dinamik web i\u00e7eri\u011fi olu","og_url":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-28T13:41:04+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"7 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi","datePublished":"2025-11-28T13:41:04+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/"},"wordCount":3142,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Server"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/","url":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/","name":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-28T13:41:04+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/jsp-javaserver-pages-nedir-yeni-baslayanlar-icin-kapsamli-bir-jsp-egitimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JSP (JavaServer Pages) Nedir? Yeni Ba\u015flayanlar \u0130\u00e7in Kapsaml\u0131 Bir JSP E\u011fitimi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35348"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35348\/revisions"}],"predecessor-version":[{"id":35349,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35348\/revisions\/35349"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}