जब हम एक जावा प्रोग्राम पर विचार करते हैं, तो इसे वस्तुओं के एक संग्रह के रूप में परिभाषित किया जा सकता है जो एक-दूसरे के तरीकों को कॉल करके बातचीत करते हैं। अब संक्षेप में समझते हैं जावा भाषा वाक्यविन्यासक्लास, ऑब्जेक्ट, मेथड्स और इंस्टेंस वेरिएबल्स का क्या मतलब है?
एक वस्तु- वस्तुओं की अवस्था और व्यवहार होता है। उदाहरण के लिए: एक कुत्ते की एक अवस्था हो सकती है - रंग, नाम, साथ ही व्यवहार - सिर हिलाना, दौड़ना, भौंकना, खाना। एक वस्तु एक वर्ग का एक उदाहरण है।
कक्षा- इसे एक पैटर्न के रूप में परिभाषित किया जा सकता है जो किसी वस्तु के व्यवहार का वर्णन करता है।
तरीका- मूलतः व्यवहार है. एक क्लास में कई विधियाँ हो सकती हैं। यह उन तरीकों में है जिसमें तार्किक रूप से रिकॉर्ड किए गए डेटा में हेरफेर किया जाता है और सभी क्रियाएं की जाती हैं।
आवृत्ति के चर- प्रत्येक ऑब्जेक्ट में इंस्टेंस वेरिएबल्स का अपना अनूठा सेट होता है। किसी ऑब्जेक्ट की स्थिति इन इंस्टेंस वेरिएबल्स को निर्दिष्ट मानों द्वारा बनाई जाती है।
पहला कार्यक्रम और भाषा के वाक्य-विन्यास से परिचित होना
आइए एक सरल कोड देखें जो "हैलो वर्ल्ड!" शब्द और जावा सिंटैक्स प्रदर्शित करेगा।
सार्वजनिक वर्ग MyFirstJavaप्रोग्राम (सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स) ( /* यह मेरा पहला जावा प्रोग्राम है। निष्पादन के परिणामस्वरूप, "हैलो वर्ल्ड!" स्क्रीन पर प्रदर्शित होगा */ System.out.println("हैलो वर्ल्ड !"); // स्क्रीन पर एक संदेश प्रदर्शित करें ) )
- नोटपैड खोलें और ऊपर दिया गया कोड जोड़ें।
- फ़ाइल को "MyFirstJavaProgram.java" के रूप में सहेजें। नीचे हम जावा सिंटैक्स को देखेंगे और पता लगाएंगे कि इस नाम के तहत क्यों।
- कमांड प्रॉम्प्ट विंडो खोलें और उस निर्देशिका पर जाएँ जहाँ फ़ाइल सहेजी गई थी। आइए मान लें कि यह "C:\" है।
- "Javac MyFirstJavaProgram.java" टाइप करें और कोड संकलित करने के लिए एंटर दबाएँ। यदि कोड में कोई त्रुटि नहीं है, कमांड लाइनतुम्हें ले जाएगा अगली पंक्ति: (धारणा: पथ चर सेट है)।
- अब प्रोग्राम को चलाने के लिए "java MyFirstJavaProgram" दर्ज करें।
- अब आपको विंडो पर "हैलो वर्ल्ड!" छपा हुआ दिखाई देगा।
बेसिक जावा सिंटैक्स
वाक्यविन्यास में निम्नलिखित बिंदुओं को जानना और याद रखना बहुत महत्वपूर्ण है:
- केस सेंसिटिविटी - जावा केस सेंसिटिव है, यानी पहचानकर्ता हैलो और हैलो के अलग-अलग अर्थ हैं।
- कक्षाओं के नाम - सभी के लिए पहला अक्षर अवश्य होना चाहिए अपरकेस.
- यदि क्लास नाम बनाने के लिए एकाधिक शब्दों का उपयोग किया जाता है, तो प्रत्येक आंतरिक शब्द का पहला अक्षर अपरकेस में होना चाहिए, उदाहरण के लिए, "MyJavaClass"।
- विधि के नाम - जावा सिंटैक्स में, सभी विधि के नाम छोटे अक्षर से शुरू होने चाहिए।
- यदि विधि का नाम बनाने के लिए कई शब्दों का उपयोग किया जाता है, तो प्रत्येक आंतरिक शब्द का पहला अक्षर अपरकेस में होना चाहिए, उदाहरण के लिए, "सार्वजनिक शून्य myMethodName()"।
- प्रोग्राम फ़ाइल का नाम - प्रोग्राम फ़ाइल का नाम होना चाहिए बिल्कुल मेल खाओकक्षा के नाम के साथ.
- किसी फ़ाइल को सहेजते समय, आपको इसे क्लास नाम (केस संवेदनशील होना याद रखें) का उपयोग करके सहेजना होगा और नाम के अंत में ".java" जोड़ना होगा (यदि नाम मेल नहीं खाते हैं, तो आपका प्रोग्राम संकलित नहीं होगा), उदाहरण के लिए , "MyJavaProgram" क्लास का नाम है, तो फ़ाइल को "MyJavaProgram.java" के रूप में सहेजा जाना चाहिए।
- सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स) - प्रोग्राम प्रोसेसिंग मेन () विधि से शुरू होती है, जो हर प्रोग्राम का एक आवश्यक हिस्सा है।
जावा में पहचानकर्ता
पहचानकर्ता- वर्गों, चरों और विधियों के लिए प्रयुक्त नाम। सभी जावा घटकों को नाम की आवश्यकता होती है।
जावा सिंटैक्स में कई नियम हैं जिन्हें आपको पहचानकर्ता के बारे में याद रखना होगा। वे इस प्रकार हैं:
- प्रत्येक पहचानकर्ता को "Z" से पहले "A" या "z", "$" या "_" से पहले "a" से शुरू होना चाहिए।
- पहले वर्ण के बाद वर्णों का कोई भी संयोजन हो सकता है।
- कीवर्ड का उपयोग पहचानकर्ता के रूप में नहीं किया जा सकता.
- सबसे महत्वपूर्ण बात यह है कि जावा में पहचानकर्ता केस संवेदी होता है।
- सही वर्तनी का उदाहरण: आयु, $वेतन, _मूल्य, __1_मूल्य।
- गलत वर्तनी का उदाहरण: 123abc, -वेतन।
स्थानांतरण
जावा 5.0 में गणनाएँ शुरू की गईं। वे एक चर को कई पूर्वनिर्धारित मानों में से केवल एक का चयन करने के लिए बाध्य करते हैं। इस गणना योग्य सूची में मानों को कहा जाता है तबादलों.
जावा में गणना का उपयोग करके, आप अपने कोड में त्रुटियों की संख्या को कम कर सकते हैं।
उदाहरण के लिए, यदि हम किसी स्टोर में ताज़ा जूस के अनुरोधों को देख रहे थे, तो हम जूस पैक के आकार को छोटे, मध्यम और बड़े तक सीमित कर सकते थे। यह जावा में एक गणना के उपयोग के माध्यम से यह सुनिश्चित करना संभव बनाता है कि कोई भी छोटे, मध्यम या बड़े के अलावा किसी अन्य पैकेज आकार का ऑर्डर न दे।
जावा में एनम कोड उदाहरण
क्लास फ्रेशजूस (एनम फ्रेशजूस साइज (छोटा, मध्यम, बड़ा) फ्रेशजूस साइज साइज; ) पब्लिक क्लास फ्रेशजूसटेस्ट (पब्लिक स्टेटिक वॉयड मेन(स्ट्रिंग आर्ग्स)( फ्रेशजूस जूस = नया फ्रेशजूस(); जूस.साइज = फ्रेशजूस.फ्रेशजूस साइज.मीडियम; सिस्टम.आउट .println("आकार:" + juice.size);उपरोक्त उदाहरण से परिणामी परिणाम:
मध्यम आकार
टिप्पणी:जावा में, गणनाओं को स्वतंत्र रूप से या एक वर्ग के भीतर घोषित किया जा सकता है। गणना के अंदर विधियों, चर, निर्माणकर्ताओं को भी परिभाषित किया जा सकता है।
परिवर्तनशील प्रकार
- स्थानीय चर.
- वर्ग चर (स्थैतिक)।
- उदाहरण चर (गतिशील)।
संशोधक
अन्य भाषाओं की तरह, जावा में आप संशोधक का उपयोग करके कक्षाओं, विधियों आदि को संशोधित कर सकते हैं। जावा में संशोधक को दो श्रेणियों में विभाजित किया गया है:
- पहुंच के साथ: डिफ़ॉल्ट, सार्वजनिक, संरक्षित, निजी।
- बिना पहुंच के: अंतिम, सार, स्ट्रिक्टएफपी।
हम अगले भाग में वर्ग संशोधक, विधि संशोधक और अन्य पर करीब से नज़र डालेंगे।
सरणी
जावा में, ऐरे एक ऑब्जेक्ट है जो एक ही प्रकार के कई वेरिएबल्स को संग्रहीत करता है। हालाँकि, सरणी स्वयं एक ऑब्जेक्ट है। हम बाद के अध्यायों में देखेंगे कि किसी सरणी को कैसे बनाया और भरा जाए।
जेएसपी पेजों में एक हाइब्रिड सिंटैक्स होता है: HTML विनिर्देश के अनुरूप मानक सिंटैक्स और जावा सर्वर पेज विनिर्देश द्वारा परिभाषित जेएसपी सिंटैक्स का संयोजन। जेएसपी सिंटैक्स मानक वाले जेएसपी पेज लिखने के नियमों को परिभाषित करता है एचटीएमएल टैगऔर जेएसपी टैग। JSP पेजों में, HTML टैग के अलावा, निम्नलिखित श्रेणियों के JSP टैग होते हैं:
जेएसपी निर्देश
निर्देशोंजेएसपी को भेजे गए विशिष्ट अनुरोधों के संबंध में वैश्विक जानकारी प्रदान करें और अनुवाद चरण में आवश्यक जानकारी प्रदान करें।निर्देशोंहमेशा अन्य सभी टैग से पहले JSP पेज की शुरुआत में रखा जाता है, ताकि पार्सर(विश्लेषक) पाठ को पार्स करते समय, जेएसपी ने शुरुआत में ही वैश्विक निर्देशों पर प्रकाश डाला। इस प्रकार, JSP इंजन (JSP रनटाइम) कोड का विश्लेषण करता है और JSP से एक सर्वलेट बनाता है। निर्देशोंजेएसपी कंटेनर में संदेशों का प्रतिनिधित्व करें। वाक्य - विन्यास निर्देशोंजेएसपी इस तरह दिखता है:
<%@ директива имяАтрибута="значение" %>जॉब सिंटैक्स निर्देशोंएक्सएमएल में:
- पृष्ठ
- टैगलिब (टैग लाइब्रेरी)
- शामिल करना
पृष्ठ निर्देश
आदेश पृष्ठजेएसपी पृष्ठ गुणों को परिभाषित करता है जो अनुवादक को प्रभावित करते हैं। किसी निर्देश में विशेषताओं का क्रम पृष्ठकोई फर्क नहीं पड़ता। वाक्यविन्यास के उल्लंघन या अपरिचित विशेषताओं की उपस्थिति के परिणामस्वरूप अनुवाद त्रुटि होती है। एक निर्देश का उदाहरण पृष्ठनिम्नलिखित कोड सेवा प्रदान कर सकता है:<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>यह निर्देश इसकी घोषणा करता है यह पृष्ठजेएसपी बफरिंग का उपयोग नहीं करता है, कई उपयोगकर्ताओं के लिए एक ही समय में दिए गए जेएसपी पेज तक पहुंचना संभव है, और इसे एक त्रुटि पेज कहा जाता है त्रुटि.जेएसपी.आदेश पृष्ठपेज की जानकारी हो सकती है:<%@ page info = "JSP Sample 1" %>संभावित निर्देश विशेषताओं की सूची पृष्ठतालिका में प्रस्तुत किया गया है।
उत्तरदायी ठहराने के लिए नाम | अर्थ | विवरण |
---|---|---|
भाषा | रेखा | जेएसपी फ़ाइल की स्क्रिप्टलेट्स, अभिव्यक्तियों, या अनुवादित कोड के मुख्य भाग सहित किसी भी सम्मिलित फ़ाइल में प्रयुक्त भाषा निर्दिष्ट करता है। डिफ़ॉल्ट मान "जावा" है |
का विस्तार | रेखा | जेनरेट किए गए सर्वलेट के लिए सुपरक्लास निर्दिष्ट करता है। इस विशेषता का उपयोग बहुत सावधानी से किया जाना चाहिए, क्योंकि यह संभव है कि सर्वर पहले से ही कुछ सुपरक्लास का उपयोग कर रहा हो |
आयात | रेखा | उदाहरण के लिए, आयात किए जाने वाले पैकेजों की परिभाषा: <%@ पेज आयात='java.util.* %> |
सत्र | सही या गलत | अर्थ सत्य(डिफ़ॉल्ट) इंगित करता है कि एक पूर्वनिर्धारित चर सत्र(प्रकार HttpSession) यदि कोई मौजूदा सत्र है तो उसे उससे जुड़ा होना चाहिए, अन्यथा एक नया सत्र बनाया जाएगा और उससे जुड़ा होगा। अर्थ असत्यनिर्धारित करता है कि सत्रों का उपयोग नहीं किया जाएगा, और वेरिएबल तक पहुंचने का प्रयास करता है सत्र JSP पेज को सर्वलेट में अनुवाद करते समय त्रुटि उत्पन्न होगी |
बफर | KB में कोई नहीं या बफ़र आकार। | JspWriter के लिए बफ़र आकार सेट करता है। डिफ़ॉल्ट मान सर्वर सेटिंग्स पर निर्भर करता है और 8 KB से अधिक नहीं होना चाहिए। यदि मान है कोई नहींआउटपुट सीधे ऑब्जेक्ट पर होता है |
ऑटोफ्लश | सही या गलत | यह निर्धारित करता है कि क्या बफ़र पूर्ण होने पर स्वचालित रूप से जारी किया जाना चाहिए या कोई त्रुटि उत्पन्न होती है। डिफ़ॉल्ट मान सत्य |
थ्रेडसेफ है | सही या गलत | अर्थ सत्य(डिफ़ॉल्ट) सर्वलेट निष्पादन के सामान्य मोड को निर्दिष्ट करता है, जहां एक ही सर्वलेट इंस्टेंस का उपयोग करके कई अनुरोधों को एक साथ संसाधित किया जाता है, इस धारणा के आधार पर कि लेखक ने उस इंस्टेंस के चर तक पहुंच को सिंक्रनाइज़ किया है। गलत संकेतों का एक मान जो सर्वलेट को विरासत में मिलना चाहिए सिंगल थ्रेड मॉडल(एकल-थ्रेडेड मॉडल), जिसमें अनुक्रमिक या एक साथ अनुरोधों को अलग-अलग सर्वलेट उदाहरणों द्वारा संसाधित किया जाता है |
जानकारी | रेखा | जेएसपी पेज जानकारी की एक स्ट्रिंग को परिभाषित करता है जिसे विधि का उपयोग करके एक्सेस किया जाएगा सर्वलेट.getServletInfo() |
त्रुटि पृष्ठ | रेखा | विशेषता मान उस URL पृष्ठ का प्रतिनिधित्व करता है जिसे प्रदर्शित किया जाना चाहिए संभावित त्रुटियाँअपवाद उत्पन्न कर रहा है |
isErrorPage | सही या गलत | संकेत देता है कि क्या इस पृष्ठ का उपयोग अन्य JSP पृष्ठों की त्रुटियों को संभालने के लिए किया जा सकता है। डिफ़ॉल्ट मान है असत्य |
सामग्री प्रकार | रेखा | JSP पृष्ठ और प्रतिक्रिया के लिए एन्कोडिंग, साथ ही JSP प्रतिक्रिया के MIME प्रकार को परिभाषित करता है। डिफ़ॉल्ट सामग्री प्रकार मान है टेक्स्ट/एचटीएमएल, एन्कोडिंग - आईएसओ-8859-1.उदाहरण के लिए: contentType='text/html;charset=ISO-8859-1' |
पेज एन्कोडिंग | रेखा | JSP पेज के कैरेक्टर एन्कोडिंग को परिभाषित करता है। डिफ़ॉल्ट है charsetगुण से सामग्री प्रकार, यदि इसे वहां परिभाषित किया गया है। यदि मान charsetविशेषता में सामग्री प्रकारअपरिभाषित, मूल्य पेज एन्कोडिंगके बराबर सेट किया गया है आईएसओ-8859-1 |
टैगलिब निर्देश
आदेश टैगलिबघोषणा करता है कि एक दिया गया JSP पेज एक टैग लाइब्रेरी का उपयोग करता है, इसे यूआरआई के साथ विशिष्ट रूप से पहचानता है, और एक टैग उपसर्ग निर्दिष्ट करता है जो लाइब्रेरी में कार्यों की अनुमति देता है। यदि कंटेनर को टैग लाइब्रेरी नहीं मिल पाती है, तो एक घातक अनुवाद त्रुटि उत्पन्न होती है। आदेश टैगलिबनिम्नलिखित वाक्यविन्यास है:<%@ taglib uri="शामिल करने के लिए टैग लाइब्रेरी का यूआरआई"उपसर्ग =" उपसर्ग नाम" %> उपसर्ग " उपसर्ग नाम" का उपयोग लाइब्रेरी तक पहुँचने के लिए किया जाता है। टैग लाइब्रेरी का उपयोग करने का एक उदाहरण मेरे टैग: <%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . .निर्देश शामिल करें
आदेश शामिल करनाआपको जेएसपी पेज को सर्वलेट में अनुवाद करते समय टेक्स्ट या कोड डालने की अनुमति देता है। निर्देशात्मक वाक्यविन्यास शामिल करनानिम्नलिखित रूप है:<%@ include file="शामिल करने के लिए पृष्ठ का सापेक्ष यूआरआई" %> निर्देश शामिल करनाएक विशेषता है - फ़ाइल. इसमें JSP फ़ाइल में निर्दिष्ट संसाधन का पाठ शामिल है। इस निर्देश का उपयोग प्रत्येक JSP पेज पर एक मानक कॉपीराइट हेडर लगाने के लिए किया जा सकता है:<%@ include file="copyright.html" %>JSP कंटेनर सम्मिलित फ़ाइल तक पहुँचता है। यदि सम्मिलित फ़ाइल बदल गई है, तो कंटेनर JSP पृष्ठ को पुन: संकलित कर सकता है। आदेश शामिल करनाकिसी संसाधन, जैसे कि JSP पृष्ठ, को एक स्थिर वस्तु के रूप में मानता है। दिए गए यूआरआई की व्याख्या आमतौर पर जेएसपी पेज के सापेक्ष की जाती है जिस पर लिंक स्थित है, लेकिन, किसी भी अन्य सापेक्ष यूआरआई की तरह, आप सिस्टम को "जोड़कर वेब सर्वर की होम डायरेक्टरी के सापेक्ष रुचि के संसाधन का स्थान बता सकते हैं" /" यूआरआई की शुरुआत तक। शामिल फ़ाइल की सामग्री को सादे JSP टेक्स्ट के रूप में संसाधित किया जाता है और इसलिए इसमें स्थिर HTML, स्क्रिप्ट तत्व, निर्देश और क्रियाएं जैसे तत्व शामिल हो सकते हैं। कई साइटें प्रत्येक पृष्ठ पर एक छोटे नेविगेशन बार का उपयोग करती हैं। HTML फ़्रेमों के उपयोग की समस्याओं के कारण, इस कार्य को अक्सर शीर्ष पर या पृष्ठ के बाएँ आधे भाग में एक छोटी तालिका रखकर हल किया जाता है, जिसका HTML कोड साइट के प्रत्येक पृष्ठ के लिए कई बार दोहराया जाता है। आदेश शामिल करना- यह सर्वाधिक है प्राकृतिक तरीकाइस समस्या का समाधान, डेवलपर को प्रत्येक व्यक्तिगत फ़ाइल में HTML की प्रतिलिपि बनाने के दुःस्वप्न से बचाना। निर्देश के बाद से शामिल करनापृष्ठ अनुवाद के दौरान फ़ाइलों को जोड़ता है, फिर नेविगेशन बार में परिवर्तन करने के बाद, इसका उपयोग करने वाले सभी JSP पृष्ठों का पुनः अनुवाद आवश्यक होता है। यदि कनेक्टेड फ़ाइलें अक्सर बदलती रहती हैं, तो आप कार्रवाई का उपयोग कर सकते हैं जेएसपी: शामिल करें, जिसमें JSP पेज तक पहुंचने पर फ़ाइल शामिल होती है।जेएसपी घोषणाएँ
घोषणाओंइसका उद्देश्य स्क्रिप्टिंग भाषा में वेरिएबल्स और विधियों को परिभाषित करना है, जिन्हें बाद में जेएसपी पेज में उपयोग किया जाता है। वाक्य - विन्यास घोषणाओंनिम्नलिखित रूप है:<%! код Java %> विज्ञापनडिक्लेरेशन ब्लॉक में स्थित हैं और जेएसपी पेज के एक्सप्रेशन ब्लॉक में कॉल किए जाते हैं। विज्ञापन ब्लॉक में कोड आमतौर पर लिखा होता है जावा भाषा, हालाँकि एप्लिकेशन सर्वर अन्य स्क्रिप्ट के सिंटैक्स का उपयोग कर सकते हैं। विज्ञापन JavaBeans घटकों के गुणों से प्राप्त गतिशील डेटा के साथ काम करते समय कभी-कभी अतिरिक्त कार्यक्षमता जोड़ने के लिए उपयोग किया जाता है। उदाहरण विज्ञापनोंतालिका में प्रस्तुत किये गये हैं। घोषणाइसमें कई पंक्तियाँ हो सकती हैं, जैसे किसी फ़ंक्शन के मान की गणना के लिए नीचे दिए गए कोड में तथ्य (int n), जो 1 के बराबर होना चाहिए जब n 2 से कम हो और n! n के सकारात्मक मान के लिए;<%! public static int fact (int n) { if (n विज्ञापनमानक आउटपुट के लिए कोई आउटपुट उत्पन्न न करें बाहर. चर और विधियाँ घोषित की गईं विज्ञापनों, प्रारंभ किए गए हैं और स्क्रिप्टलेट्स और अन्य लोगों के लिए उपलब्ध कराए गए हैं विज्ञापनोंजिस समय JSP पृष्ठ आरंभ किया गया है।जेएसपी स्क्रिप्टलेट्स
स्क्रिप्टलेट्सनिर्देश में परिभाषित स्क्रिप्ट भाषा में लिखे गए कोड के विभिन्न टुकड़े शामिल करें भाषा. कोड अंशों को भाषा की वाक्य रचना के अनुरूप होना चाहिए स्क्रिप्टलेट्स, यानी, एक नियम के रूप में, जावा भाषा का वाक्यविन्यास। स्क्रिप्टलेट्सनिम्नलिखित वाक्यविन्यास है:<% текст скриптлета %>समतुल्य वाक्यविन्यास स्क्रिप्टलेटएक्सएमएल के लिए है:यदि पाठ में स्क्रिप्टलेटवर्णों के अनुक्रम का उपयोग %> बिल्कुल वर्णों के संयोजन के रूप में करना आवश्यक है, न कि टैग के रूप में - एक अंतिम संकेत स्क्रिप्टलेट, अनुक्रम %> के बजाय आपको वर्णों के निम्नलिखित संयोजन %\> का उपयोग करना चाहिए।जेएसपी विनिर्देश एक सरल और प्रदान करता है स्पष्ट उदाहरण स्क्रिप्टलेट, जो जेएसपी पेज सामग्री को पूरे दिन गतिशील रूप से बदलने की अनुमति देता है।<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%>शुभ प्रभात<% } else { %>शुभ दोपहर<% } %>यह ध्यान दिया जाना चाहिए कि कोड अंदर है स्क्रिप्लेटलिखित रूप में डाला गया है, और सभी स्थिर HTML पाठ (टेम्पलेट पाठ) पहले या बाद में स्क्रिप्लेटऑपरेटर का उपयोग करके परिवर्तित किया गया छपाई. इसका मतलब यह है कि स्क्रिप्टलेट में आवश्यक रूप से पूर्ण जावा ब्लॉक शामिल होने की आवश्यकता नहीं है, और खुले छोड़े गए ब्लॉक स्थिर HTML टेक्स्ट पर प्रभाव डाल सकते हैं स्क्रिप्लेट. लिपियाँअभिव्यक्ति के रूप में समान स्वचालित रूप से परिभाषित चर तक पहुंच है। इसलिए, उदाहरण के लिए, यदि किसी पृष्ठ पर कोई जानकारी प्रदर्शित करने की आवश्यकता है, तो आपको वेरिएबल का उपयोग करने की आवश्यकता है बाहर. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>
जेएसपी अभिव्यक्तियाँ
अभिव्यक्ति JSP पृष्ठ में घोषणा में निर्दिष्ट स्क्रिप्ट भाषा में लिखी गई एक निष्पादन योग्य अभिव्यक्ति है भाषा(आमतौर पर जावा)। परिणाम अभिव्यक्तिजेएसपी का एक आवश्यक प्रकार है डोरी, मानक आउटपुट पर जाता है बाहरवर्तमान वस्तु का उपयोग करना जेएसपीराइटर. यदि परिणाम अभिव्यक्तिटाइप करने के लिए नहीं डाला जा सकता डोरी, यदि अनुवाद चरण के दौरान समस्या की पहचान की गई थी, तो या तो अनुवाद त्रुटि उत्पन्न होती है, या एक अपवाद उठाया जाता है क्लासकास्ट अपवाद, यदि अनुरोध निष्पादन प्रक्रिया के दौरान विसंगति की पहचान की गई थी। अभिव्यक्तिनिम्नलिखित सिंटैक्स है: <%= अभिव्यक्ति टेक्स्ट %> के लिए वैकल्पिक सिंटैक्स अभिव्यक्ति XML का उपयोग करते समय JSP:- अनुरोध, HttpServletRequest;
- प्रतिक्रिया, HttpServletResponse;
- सत्र, HttpSession - अनुरोध से संबद्ध, यदि कोई हो;
- बाहर, प्रिंटराइटर - क्लाइंट को डेटा भेजने के लिए JspWriter प्रकार का एक बफ़र्ड संस्करण।
यह आवश्यक रूप से उस वर्ग के नाम से मेल खाना चाहिए जिसकी मुख्य() विधि जावा मशीन शुरू होने पर कॉल की जाती है।
int ए; ... वेरिएबल ए पर कार्रवाई ...; यदि एक) ( ... )
यह जावा सिंटैक्स के संदर्भ में सही नहीं है और संकलित नहीं होगा।
- जब कंस्ट्रक्टर के रूप में उपयोग किया जाता है - सुपर हमेशा प्रथम होना चाहिएउपवर्ग कंस्ट्रक्टर में ऑपरेटर।
इसके अलावा, यह समर्थन करता है सीमित प्रकार, पैरामीटर वर्गों के लिए एक सुपरक्लास निर्दिष्ट करके। उदाहरण के लिए, "सामान्य वर्ग" वर्ग CLASS_NAME की घोषणा
कई प्रोग्रामिंग भाषाओं के मूलभूत तत्वों में से एक है सशर्त, . ये डिज़ाइन आपको कुछ शर्तों के आधार पर प्रोग्राम के कार्य को किसी एक पथ पर निर्देशित करने की अनुमति देते हैं।
जावा में निम्नलिखित सशर्त निर्माणों का उपयोग किया जाता है: यदि..अन्यथा और स्विच..केस
यदि/अन्यथा निर्माण करें
एक if/else कथन किसी स्थिति की सत्यता का परीक्षण करता है और, परीक्षण के परिणामों के आधार पर, कुछ कोड निष्पादित करता है:
पूर्णांक 1 = 6; पूर्णांक संख्या2 = 4; if(num1>num2)( System.out.println('पहली संख्या दूसरी से बड़ी है'); )
बाद कीवर्डयदि शर्त निर्धारित है. और यदि यह शर्त पूरी हो जाती है, तो जो कोड आगे if ब्लॉक में रखा जाता है घुंघराले ब्रेसिज़. शर्तें दो संख्याओं की तुलना करने की क्रिया हैं।
चूँकि, इस मामले में, पहली संख्या दूसरी से बड़ी है, अभिव्यक्ति num1 > num2 सत्य है और सत्य लौटाता है। नतीजतन, नियंत्रण घुंघराले ब्रेसिज़ के बाद कोड के ब्लॉक में चला जाता है और वहां मौजूद निर्देशों को निष्पादित करना शुरू कर देता है, विशेष रूप से विधि System.out.println('पहला नंबर दूसरे से बड़ा है'); . यदि पहली संख्या दूसरी से कम या उसके बराबर थी, तो if ब्लॉक में कथन निष्पादित नहीं किए जाएंगे।
लेकिन क्या होगा यदि हम चाहते हैं कि कोई शर्त पूरी न होने पर भी कुछ कार्रवाई की जाए? इस मामले में हम एक और ब्लॉक जोड़ सकते हैं:
पूर्णांक 1 = 6; पूर्णांक संख्या2 = 4; if(num1>num2)( System.out.println('पहली संख्या दूसरी से बड़ी है'); ) else( System.out.println('पहली संख्या दूसरी से कम है');
पूर्णांक 1 = 6; पूर्णांक संख्या2 = 8; if(num1>num2)( System.out.println("पहला नंबर दूसरे से बड़ा है"); ) अन्यथा if(num1 हम तार्किक ऑपरेटरों का उपयोग करके एक साथ कई स्थितियाँ भी जोड़ सकते हैं: पूर्णांक 1 = 8; पूर्णांक संख्या2 = 6; if(num1 > num2 && num1>7)( System.out.println('पहली संख्या दूसरी से बड़ी और 7 से बड़ी है'); ) यहां if ब्लॉक निष्पादित किया जाएगा यदि num1 > num2 सत्य है और साथ ही num1>7 सत्य है। डिज़ाइन स्विच केसयदि/अन्यथा निर्माण के समान है, क्योंकि यह आपको एक साथ कई स्थितियों को संसाधित करने की अनुमति देता है: पूर्ण संख्या = 8; स्विच (संख्या) (केस 1: System.out.println ("संख्या 1 है"); ब्रेक; केस 8: System.out.println ("संख्या 8 है"); num++; ब्रेक; केस 9: सिस्टम। out. println('संख्या 9 है'); स्विच कीवर्ड के बाद, तुलना की जाने वाली अभिव्यक्ति कोष्ठक में आती है। इस अभिव्यक्ति के मान की तुलना केस ऑपरेटर के बाद रखे गए मानों से क्रमिक रूप से की जाती है। और यदि कोई मिलान पाया जाता है, तो एक विशिष्ट केस ब्लॉक निष्पादित किया जाएगा। अन्य ब्लॉकों को निष्पादित करने से बचने के लिए केस ब्लॉक के अंत में एक ब्रेक स्टेटमेंट रखा जाता है। उदाहरण के लिए, यदि हमने निम्नलिखित मामले में ब्रेक स्टेटमेंट हटा दिया है: केस 8: System.out.println('संख्या 8 है'); संख्या++; केस 9: System.out.println('संख्या 9 है'); तोड़ना; फिर चूंकि हमारा वेरिएबल नंबर 8 के बराबर है, तो ब्लॉक केस 8 निष्पादित किया जाएगा, लेकिन चूंकि इस ब्लॉक में वेरिएबल नंबर एक से बढ़ गया है, कोई ब्रेक स्टेटमेंट नहीं है, तो ब्लॉक केस 9 निष्पादित होना शुरू हो जाएगा। यदि हम उस स्थिति को भी संभालना चाहते हैं जहां कोई मिलान नहीं मिलता है, तो हम एक डिफ़ॉल्ट ब्लॉक जोड़ सकते हैं, जैसा कि ऊपर दिए गए उदाहरण में है। हालाँकि डिफ़ॉल्ट ब्लॉक वैकल्पिक है. जेडीके 7 से शुरू करके, आदिम प्रकारों के अलावा, आप स्विच..केस एक्सप्रेशन में स्ट्रिंग्स का भी उपयोग कर सकते हैं: पैकेज फर्स्टएप; आयात java.util.स्कैनर; पब्लिक क्लास फ़र्स्टऐप (सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स) (स्कैनर इन = नया स्कैनर (सिस्टम.इन); System.out.println ("Y या N दर्ज करें:"); स्ट्रिंग इनपुट = in.nextLine(); स्विच( इनपुट)( केस "Y": System.out.println ("आपने अक्षर Y दबाया"); ब्रेक; केस "N": System.out.println ("आपने अक्षर N दबाया"); ब्रेक; डिफ़ॉल्ट: सिस्टम .out .println('आपने एक अज्ञात पत्र दबाया'); टर्नरी ऑपरेटर में निम्नलिखित सिंटैक्स है: [पहला ऑपरेंड - स्थिति]? [दूसरा ऑपरेंड] : [तीसरा ऑपरेंड]। इस प्रकार, इस ऑपरेशन में तीन ऑपरेंड शामिल हैं। स्थिति के आधार पर, टर्नरी ऑपरेटर दूसरा या तीसरा ऑपरेंड लौटाता है: यदि स्थिति सत्य है, तो दूसरा ऑपरेंड लौटाया जाता है; यदि शर्त झूठी है, तो तीसरा। उदाहरण के लिए: पूर्णांक x=3; int y=2; पूर्णांक z = x यहां टर्नरी ऑपरेशन का परिणाम वेरिएबल z है। सबसे पहले शर्त x की जाँच की जाती है स्टानिस्लाव गोर्नकोव किसी भी विदेशी भाषा को बोलने और पढ़ने के लिए आपको उस भाषा की वर्णमाला और व्याकरण सीखना होगा। प्रोग्रामिंग भाषाओं का अध्ययन करते समय भी ऐसी ही स्थिति देखी जाती है, एकमात्र अंतर यह है कि मुझे ऐसा लगता है कि यह प्रक्रिया कुछ हद तक आसान है। लेकिन इससे पहले कि आप प्रोग्राम का सोर्स कोड लिखना शुरू करें, आपको सबसे पहले आपको सौंपी गई समस्या को आपके लिए सुविधाजनक किसी भी रूप में हल करना होगा। आइए एक निश्चित वर्ग बनाएं जो जिम्मेदार है, उदाहरण के लिए, एक टेलीफोन के लिए, जिसमें केवल दो विधियां होंगी: इसी फोन को चालू और बंद करना। चूँकि हम वर्तमान में जावा भाषा का सिंटैक्स नहीं जानते हैं, इसलिए हम फ़ोन क्लास को एक अमूर्त भाषा में लिखेंगे। क्लास फ़ोन (विधि सक्षम करें() (//फ़ोन चालू करने के लिए ऑपरेशन) विधि अक्षम करें (//फ़ोन बंद करने के लिए ऑपरेशन)) फ़ोन क्लास कुछ इस तरह दिख सकती है. ध्यान दें कि घुंघराले ब्रेसिज़ क्रमशः किसी वर्ग, विधि या डेटा के किसी अनुक्रम के मुख्य भाग की शुरुआत और अंत को दर्शाते हैं। अर्थात्, कोष्ठक किसी विधि या वर्ग में सदस्यता दर्शाते हैं। प्रत्येक आरंभिक कोष्ठक के लिए एक समापन कोष्ठक अवश्य होना चाहिए। भ्रम से बचने के लिए, उन्हें आमतौर पर कोड में समान स्तर पर रखा जाता है। अब उसी क्लास को केवल जावा में लिखते हैं। क्लास टेलीफ़ोन ( शून्य ऑन() ( // मेथड बॉडी ऑन() ) वॉयड ऑफ() ( // मेथड बॉडी ऑफ() ) ) जावा भाषा में कीवर्ड क्लास एक क्लास घोषित करता है, जिसके बाद क्लास का नाम आता है। हमारे मामले में, यह टेलीफ़ोन है। रिकॉर्डिंग रजिस्टर के बारे में बस कुछ शब्द। लगभग सभी प्रोग्रामिंग भाषाओं में, नामों को उस रजिस्टर में सहेजना महत्वपूर्ण है जिसमें वे लिखे गए थे। यदि आपने टेलीफ़ोन लिखा है, तो टेलीफ़ोन या टेलीफ़ोन जैसी वर्तनी संकलन के दौरान एक त्रुटि उत्पन्न करेगी। जैसा कि हमने शुरू में लिखा था, हमें इसी तरह लिखना जारी रखना चाहिए। आरक्षित या कीवर्ड अपने विशिष्ट मामले में लिखे जाते हैं, और आप उन्हें विधियों, वर्गों, वस्तुओं आदि का नाम देकर उपयोग नहीं कर सकते हैं। शब्दों के बीच रिक्त स्थान कोई मायने नहीं रखता क्योंकि कंपाइलर बस उन्हें अनदेखा कर देता है, लेकिन वे कोड पठनीयता के लिए महत्वपूर्ण हैं। टेलीफ़ोन क्लास के मुख्य भाग में दो विधियाँ हैं: चालू() - फ़ोन चालू करता है और बंद() विधि - फ़ोन बंद करता है। दोनों विधियों के अपने-अपने निकाय हैं और, सिद्धांत रूप में, उनमें कुछ स्रोत कोड होना चाहिए जो दोनों विधियों की आवश्यक क्रियाओं का वर्णन करता है। हमारे लिए अब यह मायने नहीं रखता कि इन तरीकों को कैसे लागू किया जाता है, मुख्य बात जावा भाषा का सिंटैक्स है। दोनों विधियों में on() कोष्ठक हैं जिनके भीतर पैरामीटर लिखे जा सकते हैं, जैसे on(int time) या on(int time, int time1)। मापदंडों की मदद से तरीकों और बाहरी दुनिया के बीच एक तरह का संबंध बनता है। कहा जाता है कि on(int time) विधि एक समय पैरामीटर लेती है। यह किस लिए है? उदाहरण के लिए, आप चाहते हैं कि आपका फ़ोन एक निश्चित समय पर चालू हो। फिर समय पैरामीटर में पूर्णांक मान विधि के मुख्य भाग में भेज दिया जाएगा और, प्राप्त डेटा के आधार पर, फ़ोन चालू हो जाएगा। यदि कोष्ठक खाली हैं, तो विधि किसी भी पैरामीटर को स्वीकार नहीं करती है। टिप्पणियाँ टेलीफ़ोन वर्ग में, दोनों विधियों के मुख्य भाग में दो स्लैश के बाद एक प्रविष्टि होती है: //। यह प्रविष्टि उन टिप्पणियों को दर्शाती है जिन्हें कंपाइलर द्वारा अनदेखा कर दिया जाएगा, लेकिन कोड पठनीयता के लिए आवश्यक हैं। कार्यक्रम लिखते समय आप जितनी अधिक जानकारी पर टिप्पणी करेंगे, उतनी ही अधिक संभावना होगी कि आप एक वर्ष में यह याद रखेंगे कि आप इस समय किस पर काम कर रहे थे। जावा में टिप्पणियाँ तीन प्रकार की हो सकती हैं: //, /*…*/ और /**…*/। // ऑपरेटर का उपयोग करके लिखी गई टिप्पणियाँ एक पंक्ति में दिखाई देनी चाहिए: // एक लकीर!!! गलती! आप इसे दूसरी पंक्ति में नहीं लपेट सकते! // पहली पंक्ति // दूसरी पंक्ति // ... // अंतिम पंक्ति /*…*/ ऑपरेटरों का उपयोग करने वाली टिप्पणियाँ कई पंक्तियों तक फैली हो सकती हैं। अपनी टिप्पणी की शुरुआत में, /* डालें, और अंत में, जब आप कोड पर टिप्पणी करना समाप्त कर लें, तो ऑपरेटर */ डालें। अंतिम प्रकार की टिप्पणी /**…*/ का उपयोग कोड का दस्तावेजीकरण करते समय किया जाता है और इसे किसी भी संख्या में लाइनों पर भी स्थित किया जा सकता है। जावा डेटा प्रकार मनमाना मान सेट करने के लिए, जावा में डेटा प्रकार हैं। टेलीफ़ोन क्लास में हमने दो विधियाँ बनाई हैं। दोनों विधियों में कोई पैरामीटर नहीं था, लेकिन जब समय पैरामीटर के साथ ऑन (इंट टाइम) विधि का उदाहरण दिया गया, तो उन्होंने विधि में एक मान पारित करने के बारे में बात की। यह मान उस समय को इंगित करता है जिस पर फ़ोन चालू होना चाहिए। इंट स्पेसिफायर समय मान के प्रकार को निर्धारित करता है। Java 2 ME में छह डेटा प्रकार हैं। बाइट - -128 से 128 तक छोटा पूर्णांक मान; कुछ आवश्यक मान घोषित करने के लिए, निम्नलिखित प्रविष्टि का उपयोग करें: इंट टाइम; लंबा बिगटाइम; चार शब्द; प्रविष्टियों के बाद अर्धविराम ऑपरेटर की आवश्यकता होती है और इसे पंक्ति के अंत में रखा जाता है। आप अल्पविराम से अलग करके एक ही प्रकार की कई घोषणाओं को जोड़ सकते हैं: माउंट समय, समय1, समय2; आइए अब इसमें कुछ मान जोड़कर अपनी टेलीफ़ोन कक्षा को बेहतर बनाएं। हमें अब on() और off() तरीकों की आवश्यकता नहीं है, आइए नए तरीके जोड़ें जो वास्तव में कुछ समस्याओं का समाधान कर सकें। क्लास टेलीफ़ोन ( //एस - डिस्प्ले एरिया //डब्ल्यू - डिस्प्ले चौड़ाई //एच - डिस्प्ले ऊंचाई int w, h, S; // वह विधि जो डिस्प्ले एरिया शून्य क्षेत्र की गणना करती है () (एस = डब्ल्यू*एच; )) तो, हमारे पास तीन वेरिएबल एस, डब्ल्यू और एच हैं, जो पिक्सेल में डिस्प्ले के क्षेत्र, चौड़ाई और ऊंचाई के लिए क्रमशः जिम्मेदार हैं। एरिया() विधि फोन की स्क्रीन के क्षेत्र की गणना पिक्सल में करती है। यह ऑपरेशन बेकार है, लेकिन बहुत ही उदाहरणात्मक और समझने में आसान है। एरिया() विधि का मुख्य भाग स्वयं मिल गया है और इसका रूप S = w*h है। इस पद्धति में, हम बस चौड़ाई को ऊंचाई से गुणा करते हैं और असाइन करते हैं या, जैसा कि वे कहते हैं, परिणाम को वेरिएबल एस में संग्रहीत करते हैं। इस वेरिएबल में इस फोन के डिस्प्ले क्षेत्र के मान शामिल होंगे . अब हम जावा भाषा ऑपरेटरों के करीब आ गए हैं, जिनकी मदद से आप सभी प्रकार के ऑपरेशन कर सकते हैं और जिसके बारे में हम लेखों की इस श्रृंखला के अगले भाग में बात करेंगे।स्विच निर्माण
टर्नरी ऑपरेशन
लघु - -32768 से 32767 तक की सीमा में लघु पूर्णांक मान;
int - इसमें -2147483648 से 2147483647 तक कोई भी पूर्णांक मान शामिल है;
लंबा - बहुत बड़ा पूर्णांक मान, -922337203685475808 से 9223372036854775807 तक;
char एक यूनिकोड वर्ण स्थिरांक है। इस प्रारूप की सीमा 0 से 65536 तक है, जो 256 वर्णों के बराबर है। इस प्रकार का कोई भी अक्षर सिंगल कोट्स में लिखा जाना चाहिए, उदाहरण के लिए: 'जी';
बूलियन एक तार्किक प्रकार है जिसमें केवल दो मान होते हैं: गलत और सत्य। इस प्रकार का उपयोग अक्सर लूप में किया जाता है, जिस पर बाद में चर्चा की जाएगी। मतलब बहुत सरल है - यदि आपकी जेब में पैसा है, तो यह सच माना जाता है, और यदि नहीं, तो यह झूठ है। इस प्रकार, यदि हमारे पास पैसा है, तो हम रोटी या बीयर के लिए दुकान पर जाते हैं (जो उचित है उसे रेखांकित करें), यदि पैसा नहीं है, तो हम घर पर रहते हैं। अर्थात्, यह एक तार्किक मूल्य है जो आपके कार्यक्रम की आगे की कार्रवाइयों के चुनाव में योगदान देता है।