Static and Dynamic Content – एक सामान्य Web Request में जब User अपने Web Browser के माध्यम से किसी Static HTML Document के लिए Request Perform करता है और Web Server को वह Resource प्राप्त हो जाता है, जिसके लिए User ने Request Perform किया है, तो Web Server उस Resource में बिना किसी तरह का Modification किए हुए उस Resource को ज्यों का त्यों User को Return कर देता है।
जबकि यदि User ने जिस HTML Document का Request Perform किया है, उस Static HTML Document में कोई Image, CSS File या JavaScript File भी Included हो, तो Web Browser स्वयं ही इन Resources के लिए भी Automatically Web Server से Request Perform करता है। HTML, Image, CSS, JavaScript File आदि सभी Resources Static Resources के उदाहरण हैं, क्योंकि ये Resources हर उस User के लिए समान ही रहते हैं, जो समान HTML Document के लिए Request करते हैं।
लेकिन जब Request Perform करते समय User कुछ Extra Parameters Pass करता है और प्रत्येक Parameter के आधार पर एक अलग तरह का Content Generate होता है, तब इस प्रकार के Input आधारित Content को Dynamic Content करते हैं और जिस Webpage में इस प्रकार का Content Generate होते हैं, उन्हें Dynamic Webpage कहते हैं।
वर्तमान समय में जितनी भी Websites या Web Applications हम देखते हैं, वे सभी Dynamic Website या Web Application ही हैं। उदाहरण के लिए जब हम Stock Market की किसी Website को देखते हैं, तो उस पर दिखाई देने वाले विभिन्न Shares का भाव हर Second Change होता रहता है। यानी जैसे ही किसी Stock को कोई खरीदता या बेचता है, उसका Price बढ़ता या घटता है। Stock के Price का Up-Down होना पूरी तरह से Dynamically Control होता है। इसलिए इस Stock Related Website को हम एक Dynamic Website कह सकते हैं।
इसी तरह से जब हम किसी University के Results की Website के माध्यम से किसी Specific Roll Number वाले Student का Result देखना चाहते हैं, तब हम जिस Roll Number को Input करते हैं, वह Website हमें उसी Roll Number वाले Student का Mark-Sheet Return करता है। इसलिए Result Show करने वाली ये Website भी पूरी तरह से एक Dynamic Website है क्योंकि जैसे ही Roll Number Change किया जाता है, वह समान Website किसी दूसरे Student का Mark-Sheet Return कर देता है।
यानी Input के आधार पर Generate होने वाला Resultant Webpage Content यानी Mark-Sheet Dynamically Change होता रहता है जबकि Mark-Sheet का Layout पूरी तरह से समान रहता है।
क्योंकि Mark-Sheet को तो JSP, PHP या ASP.NET जैसी किसी Language द्वारा Input किए गए Roll Number के आधार पर Dynamically Generate किया जाता है, जबकि Mark-Sheet का Layout पूरी तरह से Unchanged रहता है क्योंकि उसे HTML+CSS द्वारा Structure and Style किया गया होता है।
Dynamic Web Content हमेंशा किसी Input के आधार पर Web Server को कुछ Extra Processing करते हुए Dynamically Result Generate करने के लिए प्रेरित करते हैं। जबकि क्या Content Dynamically Generate करना है, इस बात की जानकारी Web Server को उस URL द्वारा प्राप्त होती है, जो User के Web Browser से Web Server पर Request के रूप में Receive होता है।
Website को Dynamic बनाने के लिए कई Technologies को Develop व Use किया गया है, जहां सबसे पहले Dynamic Contents Generate करने के लिए Common Gateway Interface (CGI) का प्रयोग किया जाता था, जिसके अन्तर्गत C, C++, Perl व Python जैसी Languages के माध्यम से Dynamic Content Generate किया जाता था। लेकिन CGI की अपनी कुछ परेशानियां थीं, जिसकी वजह से CGI का प्रयोग करते हुए Design किए जाने वाले Web Applications की Performance काफी कम होती थी। साथ ही CGI Based Web Applications Portable भी नहीं होते थे। इसलिए CGI Based Web Applications पूरी तरह से Language व Platform Dependent हो जाते थे।
CGI के अलावा Server APIs के रूप में एक और Technology को Use किया जाता था, जिसे Netscape ने Web Application Interface (WAI) व Microsoft ने ISAPI के रूप में Develop किया था। साथ ही Apache Web Server ने Module Based Programming Interface Develop किया था, जिसके माध्यम से Website व Applications को Dynamic बनाया जाता था। लेकिन इन Server Side APIs की भी अपनी परेशानियां थीं, जिनकी वजह से और नई Web Technologies का विकास किया गया व Client-Side Scripting Solutions Develop किए गए।
Client Side Scripting Solutions के अन्तर्गत JavaScript, ECMAScript, JScript VBScript आदि कई Technologies का विकास किया गया ताकि ज्यादातर Low Security Related Tasks को Web Server पर Perform करने के स्थान पर Client Side में ही पूरा करके Web Applications की Performance को Improve किया जा सके। लेकिन वर्तमान समय तक केवल JavaScript ही एक Standard Client Side Scripting Language के रूप में Use होने वाली मुख्य Scripting Language बची है। जबकि इसके समकक्ष Develop होने वाली लगभग सभी Client Side Scripting Languages लगभग पूरी तरह से विलुप्त हो चुकी हैं।
Client Side Scripting Language के साथ ही Server Side Scripting Languages का भी विकास किया गया था, जो कि Web Applications को Dynamic बनाने का काम करते थे। ASP, PHP, Cold Fusion, Server Side JavaScript आदि ऐसी ही Server Side Scripting Languages थीं, जिन्हें Dynamic Web Content Generate करने के लिए Develop किया गया था। इन Server Side Scripting Languages में PHP ही एक ऐसी Server Side Scripting Language है, जिसे अभी भी बहुतायत से Use किया जाता है। जबकि ASP को Modify करके ASP.NET के रूप में Upgrade कर दिया गया है और Cold Fusion लगभग पूरी तरह से समाप्त हो चुका है।
इन सभी के अलावा Java Servlets भी एक प्रकार का Java Programming Language आधारित ऐसा API है, जो Server Side में Dynamic Content Generate करने के लिए Use होता है। सामान्यत: JSP व Servlets दोनों को Mix करके ही Java आधारित Powerful Web Application Develop किया जाता है। लेकिन JSP ज्यादा आसानी व बेहतर तरीके से HTML Webpages में Embed हो जाते हैं, इसलिए इसे सामान्यत: Web Application के Presentation Layer के रूप में Use किया जाता है।
हालांकि JSP स्वयं एक प्रकार का Servlets ही होता है, लेकिन Servlets क्योंकि Pure Java Programs होते हैं, जो कि Server पर स्थित Java Virtual Machine पर Execute होते हैं, इसलिए यदि हम केवल Servlets के माध्यम से अपने Web Application का Presentation Layer Create करना चाहें, तो हमारा Web Application काफी Complex हो जाता है।
इसलिए जब बहुत ज्यादा Processing करते हुए Dynamic Content Generate करना होता है, तब हम Servlets Use करते हैं, जबकि सामान्य Processing होने पर हम हमारी ज्यादातर जरूरतों को JSP के माध्यम से ही पूरा कर सकते हैं। यहां समझने वाली बात ये है कि जिन कामों को हम Servlets द्वारा करते हैं, उन्हें ही Pure JSP द्वारा भी कर सकते हैं, लेकिन जिन कामों को हम JSP द्वारा करते हैं, उन्हें Pure Servlets द्वारा करना हमेंशा सम्भव नहीं होता।
एक Static Webpage की Working को हम निम्न चित्रानुसार Represent कर सकते हैं-
किसी Web Application का हर Webpage, Hyper Text Markup Language (HTML) के Markups को Use करते हुए Create किया जाता है। इसलिए HTML ही वह Language होती है, जिसे Web Browser एक Webpage के रूप में Convert करते हुए Render करता है।
Static Webpage एक ऐसा HTML Document होता है जो Web Server पर एक File के रूप में Stored होता है और User द्वारा Input किए गए मान के आधार पर Change नहीं होता। सामान्यत: HTML File का Extension .htm या .html होता है। जबकि Web Browser व Web Server के बीच विभिन्न Resources को Transfer करते हुए दोनों को आपस में Communicate करवाने का काम Hypertext Transfer Protocol (HTTP) द्वारा Perform होता है।
जब एक Web Browser किसी Webpage के लिए Web Server पर HTTP Request Perform करता है तो Web Server पर Send होने वाले Request Header में उस Webpage का नाम व URL भी होता है। परिणामस्वरूप जब वह Request Web Server पर पहुंचता है, तो Web Server उस Requested Static Webpage को Web Server पर Search करता है और यदि उस नाम का Resource Web Server पर Exist होता है, तो एक Response Header Create करते हुए उस Resource को Request Perform करने वाले Web Browser को Return कर देता है।
जबकि एक Dynamic Webpage की Working को कुछ निम्न चित्रानुसार Represent किया जा सकता है-
Dynamic Webpage भी एक HTML Document ही होता है, लेकिन ये HTML Document सामान्यत: पूरी तरह से Web Server पर एक Physical File के रूप में HTML Markups द्वारा Created नहीं होता। बल्कि ये Webpage, User के Web Browser में दिखाई देने वाले User Interface के माध्यम से Web Server पर Perform होने वाले HTTP Request में आने वाले User Parameters के आधार पर Dynamically Generate होता है।
जब Web Server, Web Browser User Interface से किसी Dynamic Webpage के लिए आने वाली HTTP Request को प्राप्त करता है, तो वह Web Server उस Request को Appropriate Web Application पर Pass कर देता है, जहां Web Application एक Response के रूप में एक HTML Document Generate करके उसे फिर से Web Server पर Return कर देता है।
फिर Web Server उस Web Application से Generated HTML Response Document को एक HTTP Response में Wrap करता है और Generated HTML Response को फिर से Web Browser को Return कर देता है, जहां Web Application का User Interface Part उस HTML Document को Web Browser में Render कर देता है। जब Web Browser Response के रूप में आने वाले HTML Markup को Render करता है, तो उसे इस बात से कोई मतलब नहीं होता कि वह एक Dynamic Webpage को Render कर रहा है या Static Webpage को।