XHTML + jspx + tomcat6 के साथ मैंने कैसे "लड़ाई" की कहानी

शुभ दिन।

इस लेख में मैं अपने पहले स्टार्टअप के विकास के बारे में बात करना चाहूंगा, साथ ही यह भी कि कैसे मैंने अपने आत्मविश्वास की कमी के कारण खाली समय में 3 घंटे बिताए।

प्रस्तावना


ईमानदार होने के लिए, मेरे हाथ लंबे समय से कुछ लिखने के लिए मेरे चेहरे को खरोंच रहे हैं, और जैसा कि आप जानते हैं, मेरा मतलब यह नहीं है कि विश्वविद्यालय की प्रयोगशालाएं किसी के लिए बेकार हैं, लेकिन आईटी पेशेवरों और सामान्य उपयोगकर्ताओं दोनों के लिए क्या उपयोगी होगा। और अब, कुछ समय पहले, हम: मैं (एनकोडर) और मेरे दो साथियों (टाइपसेटर और सिसडमिन) ने अपने पहले स्टार्टअप पर काम शुरू करने का फैसला किया।

विकास शुरू


चूंकि कोई डिजाइनर नहीं था, इसलिए मैंने एक खाका खींचने की जिम्मेदारी ली। मैं यह नहीं कहूंगा कि यह मेरे लिए सरल था - लेकिन यह पूरी तरह से अलग कहानी है। परिणामस्वरूप, दो दर्जन लेखों को पढ़ने के बाद, पुस्तकों के माध्यम से पत्ता - मैंने अपने काम का सामना किया।

अगला लेआउट है। हमारा टाइपसेट मानकों के बारे में बहुत सख्त अवधारणाओं का एक आदमी है: अगर कुछ अनुपालन नहीं करता है, तो उसे कूड़ेदान में भेज दिया जाता है। "केवल एक्सएचटीएमएल", उन्होंने मुझसे कहा, और मैं विरोध नहीं कर रहा था, शायद पक्ष में भी, हालांकि उस समय मुझे बिल्कुल पता नहीं था कि मैं आगे बढ़ा था। जब लेआउट पर काम चल रहा था, मैंने कोर लिया।

पहला "पत्थर"


मुझे लगता है कि यह ध्यान दिया जाना चाहिए कि इससे पहले मैंने html के तहत लिखा था और टेम्पलेट फ़ाइलों को * .jsp के रूप में बनाया था, लेकिन मुझे इस बात का एक अच्छा विचार था कि xhtml क्या है और वे कैसे भिन्न हैं। नतीजतन, मैंने सोचा: "अगर xhtml - तो यह * .jspx पेज बनाने के लिए अधिक सही है" - और इसलिए मैंने किया। बस उस समय, लेआउट तैयार था: मुझे संसाधनों के साथ एक html-file मिली।

मैं शुरू से एक उच्च गति सेट करने की उम्मीद कर रहा था, इसलिए मैंने जल्दी से मार्कअप को एक जेपीएसएक्स फ़ाइल में कॉपी किया, इसे कुछ जगहों पर सही किया, संसाधनों की नकल की और सभी सुंदरता को देखने की उम्मीद में टॉमकैट लॉन्च किया, लेकिन टॉमकैट ने एक ऐसी त्रुटि के साथ मुझे शपथ दिलाई जिसे मैंने अपने जीवन में कभी नहीं देखा था। मैंने Google से पूछा - "Google ने मुझे जवाब नहीं दिया, उसके सिर को हिलाते हुए।" हालांकि नहीं - उसने निश्चित रूप से उत्तर दिया - केवल इसने मेरी मदद नहीं की। मैंने फिर भी आँखे मूंद ली, कुछ बदल दिया, इसे हटा दिया - यह मदद नहीं की, बिल्ली ने ज़बरदस्ती मुझे बिजली की पटरियों पर बमबारी की। फिर मैंने छोड़ दिया, नहीं, वास्तव में नहीं, मुझे सिर्फ यह एहसास हुआ कि यह संभवतः jspx पर साहित्य को पढ़ने के लायक है।

परिणामस्वरूप, मुझे निम्नलिखित त्रुटियां मिलीं:

1. DOCTYPE
दस्तावेज़ की शुरुआत में मेरे लिए सामान्य लाइन के बजाय
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

एक विशेष टैग का उपयोग करने की आवश्यकता है।
 <jsp:output doctype-root-element="html" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" omit-xml-declaration="true"/> 


2. फरार हुए चरस
पृष्ठ पर टेक्स्टारिया टैग हैं, जिसके अंदर html कोड है, और किसी तरह मैं पूरी तरह से भूल गया कि < और > वर्णों को क्रमशः <और> में परिवर्तित करने की आवश्यकता है, ठीक है, बाकी सब स्वाभाविक है।

3. सीडीएटीए
इसका उपयोग तब किया जाता है जब किसी xml दस्तावेज़ के अंदर वर्ण डेटा का चयन करना आवश्यक होता है, उदाहरण के लिए, ऐसी शैलियाँ जिन्हें अलग फ़ाइल में नहीं रखा गया है:
 <style type=”text/css”> <![CDATA[ input {...} /*   */ ]]> </style> 


4. मार्कअप
कुछ स्थानों पर, मैं अंत में एकल टैग लगाना भूल गया
उदाहरण के लिए
 <img src="1.gif" width="10" height="10"> 

के बजाय
 <img src="1.gif" width="10" height="10"/> 


5. निर्देश
के बदले
 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 

उपयोग करने की आवश्यकता है
 <jsp:directive.page contentType="text/html; charset=UTF-8"/> 


इन सभी त्रुटियों ने दस्तावेज़ की संरचना को तोड़ दिया, पार्सर इसे संसाधित नहीं कर सका और एक स्पष्ट विवेक के साथ, एक अपवाद फेंक दिया।

इन सभी त्रुटियों को ठीक करने और टॉमकैट चलाने के बाद, मैंने अंततः देखा कि ब्राउज़र (FF 3.6। *) पृष्ठ को कैसे प्रदर्शित करता है।

हालाँकि, मुझे जल्दी खुशी हुई।

अचरज


अंतिम अंतराल के बाद, विकास जीवंत हो गया, हम लगभग फिनिश लाइन तक पहुंच गए हैं। परीक्षण के लिए, मैंने सभी मुख्य ब्राउज़रों को स्थापित किया: एफएफ, ओपेरा, सफारी, क्रोम, आईई। हालांकि रोक, IE के पहले से ही पहले से ही स्थापित किया गया है। और वैसे, उसने आखिरी समय में सभी रसभरी को बर्बाद कर दिया।

संदर्भ के लिए (गीतात्मक विषयांतर): मेरे पास एक प्यारी बूढ़ी महिला xp sp3 है - इसमें IE6 है, लेकिन मुझे पता है कि यह प्राचीन है, लेकिन इसे 7 वें या 8 वें संस्करण में अपग्रेड करने की ऐसी प्रत्यक्ष आवश्यकता नहीं थी।

IE, सिद्धांत रूप में, मैं इसका उपयोग कभी नहीं करता हूं - केवल क्रॉस-ब्राउज़र संगतता का परीक्षण करने के लिए। मेरे लिए अज्ञात कारणों से, जब मैंने एक बार फिर से यह जांचने का निर्णय लिया कि आईई में आवेदन कैसे काम करता है, तो मैंने देखा कि "आईई पेज प्रदर्शित नहीं कर सकता"। मुझे थोड़ा आश्चर्य हुआ कि वह "http: ⁄localhost।" पृष्ठ कैसे प्रदर्शित नहीं कर सका। तम्बुओं के साथ कूदना - मुझे कुछ हासिल नहीं हुआ। गधा ख़ुशी से मुझे संदेश दिखाने के लिए जारी रखा "IE पृष्ठ प्रदर्शित नहीं कर सकता है।" खैर, वह अफ्रीका में एक गधा और गधा है।

मैं IE पर थूकता हूं, खासकर जब मुझे लेआउट मिला - मेरे दोस्त ने कसम खाई थी कि IE6-9 में सब कुछ पूरी तरह से प्रदर्शित होता है। और यही मेरी गलती थी।

कई दिन बीत गए, विकास अभी भी सुचारू रूप से चला, बिना किसी रोक-टोक के। मैं बस सोच रहा था - क्यों IE काम नहीं करता है, मेरे पास प्रत्यक्ष इंटरनेट कनेक्शन है, प्रॉक्सी के बिना, कोई सेटिंग्स नहीं हैं। मैं Google पर चढ़ गया - यह पता चला कि मैं ऐसी समस्या वाला एकमात्र व्यक्ति नहीं था। कुछ सुझावों ने मदद नहीं की, लेकिन मैंने निम्नलिखित देखा - "सभी सेटिंग्स रीसेट करें"। मैंने बस इतना ही किया। और, लो और निहारना, यह अद्भुत ब्राउज़र पृष्ठों को लोड और प्रदर्शित करना शुरू कर दिया।

मैंने तुरंत जांच करने का फैसला किया और अपने आवेदन पर स्थानीयहोस्ट पर जाने की कोशिश की। थोड़ा IE को लटकाते हुए सुझाव दिया कि मैं फ़ाइल को सहेजता हूं। मुझे लगा कि यह एक गड़बड़ है, रद्द किया गया क्लिक, एफएफ, ओपेरा, और इतने पर जाने की कोशिश की - अन्य सभी ब्राउज़रों ने पृष्ठ प्रदर्शित किया। मैंने फिर से IE के माध्यम से लॉग इन करने की कोशिश की, और फिर से फ़ाइल को बचाने के लिए एक सुझाव देखा। सहेजा गया, नोटबुक के माध्यम से खोला गया - और पृष्ठ लेआउट देखा। उन्होंने अपने साथियों की जाँच करने के लिए कहा - उनकी स्थिति समान थी।

समस्या का अध्ययन करने के बाद, मुझे निम्नलिखित मिला:
IE6, IE7, IE8 - फ़ाइल को सहेजने की पेशकश की
IE9 - सामान्य रूप से प्रदर्शित पृष्ठ

कुछ संदिग्ध होने के कारण, मैंने अपने IE6 में खोला था कि हमारे लेआउट डिजाइनर ने मुझे एक html फ़ाइल भेजी थी। IE सामान्य रूप से पृष्ठ का प्रतिपादन किया। मैंने jspx टेम्पलेट में इस लेआउट और खदान के बीच के अंतरों की तलाश शुरू की, और पाया, बहुत शुरुआत में, यह एक सामग्री-प्रकार था।
- मेरे मित्र की सामग्री-प्रकार: text/html
- मेरी सामग्री-प्रकार: application/xhtml+xml

"क्या?" मैंने सोचा, लेकिन कोशिश की और सामग्री-प्रकार: पाठ / html डालने का फैसला किया। वास्तव में, इसने भुगतान किया - सभी ब्राउज़रों ने एक ही तरह से काम करना शुरू किया - एक रिक्त पृष्ठ प्रदर्शित करना। यहां तक ​​कि आई.ई. फिर मानक योजना: फ़ायरफ़ॉक्स + फायरबग, पृष्ठ को फिर से लोड किया: कंसोल खाली है, कोई त्रुटि नहीं है, दस्तावेज़ की संरचना पर ध्यान आकर्षित किया गया था: अंदर कुछ भी नहीं था, कुछ भी नहीं। मैंने पृष्ठ के स्रोत कोड के लिए "एफएफ" कहा: अंदर दस्तावेज़ की सभी आवश्यक संरचना थी। मैंने इसे सहेजा और फिर से सर्वर पर टेम्पलेट में अंतर के लिए फिर से देखना शुरू कर दिया।

ध्यान निम्नलिखित लाइन के लिए तैयार किया गया था:
 <script type="text/javascript" src="/js/jquery-1.5.1.min.js"/> 

हालाँकि सर्वर पर टेम्प्लेट में ऐसा दिखता था:
 <script type="text/javascript" src="/js/jquery-1.5.1.min.js"></script> 


और वास्तव में, इस तरह के "रूपांतरण" को सभी टैगों पर लागू किया गया है
और इसके अलावा, जो टैग अंदर था, वह खाली था - वही परेशानी थी।

फैसला खुद हुआ। इन टैगों को लपेटें <! [CDATA []]> के साथ। इस प्रकार, हम सर्वर को वह बदल देंगे जो बिना रूपांतरणों के बिल्कुल उसी रूप में अंदर है, हमें मिलता है:

 <![CDATA[<script type="text/javascript" src="/js/jquery-1.5.1.min.js"></script>]]> 


सहेजा गया, सर्वर को पुनरारंभ किया, लॉग इन करने का प्रयास किया। FF ने पेज को प्रस्तुत किया। अपनी उंगलियों को पार करते हुए, मैंने IE लॉन्च किया। और उसने पृष्ठ भी प्रदर्शित किया जैसा कि उसे देखना चाहिए। उसके बाद, मैंने अन्य सभी प्रमुख ब्राउज़रों में जांच की - सब कुछ उसी तरह काम किया जैसे इसे करना चाहिए।

निष्कर्ष में


मैं अपना सर्वश्रेष्ठ, तेज करना चाहता था, इसलिए समय की बर्बादी के लिए एक खराब तकनीक का पता लगाने के लिए नहीं - अंत में हमेशा की तरह। इस स्थिति में मेरा अहंकार नकारात्मक परिणामों का कारण बना। और यह अच्छा है कि त्रुटियों को विकास के स्तर पर देखा गया।

Source: https://habr.com/ru/post/In128723/


All Articles