दिलचस्प पोस्ट
एक बहु-थ्रेडेड प्रोग्राम में std :: स्ट्रिंग जावास्क्रिप्ट छिपाना / शो तत्व ASP.NET MVC और मिश्रित मोड प्रमाणीकरण Google इतनी जल्दी कैसे हो सकता है? MySQL पर निष्पादित अंतिम क्वेरी कैसे दिखाएं? jquery यूआई संवाद: शीर्षक पट्टी के बिना कैसे आरंभ करें? कैसे ईक्ल्यूलेटर स्क्रीनशॉट ग्रहण का उपयोग करने के लिए? त्रुटि: स्थिति {statusCode = DEVELOPER_ERROR, रिज़ॉल्यूशन = शून्य} इस विशिष्ट साइट पर "mainEntityOfPage" कैसे कार्यान्वित करें? एक NSMutableDictionary सॉर्ट करें कंसोल अनुप्रयोग के लिए "बाहर निकलें" ऑब्जेक्ट ओरिएंटेड बेस्ट प्रैक्टिस – इनहेरिटन्स वी कंपोज़शन v इंटरफेस XCode में EXC_BAD_ACCESS को तोड़ दिया? आर और र्वेका का उपयोग करते हुए टर्मडायंट मैट्रिक्स में एकल शब्द के बजाय बड़ेम JERSEY का प्रयोग करके इनपुट और आउटपुट बाइनरी स्ट्रीम?

संदर्भ रूट नाम को बिना बिना सापेक्ष पथ का उपयोग कैसे करें?

मेरी स्थिर फाइल (सीएसएस, जे एस) को काम करने के लिए मुझे /AppName/templates/style/main.css जैसे पूर्ण पथ लिखना /AppName/templates/style/main.css । क्या कोई समाधान है, कि मैं style/main.css जैसी रिश्तेदार पथ लिख सकता हूं?

वेब के समाधान से एकत्रित समाधान "संदर्भ रूट नाम को बिना बिना सापेक्ष पथ का उपयोग कैसे करें?"

यदि आपकी वास्तविक चिंता Webapp संदर्भ ("AppName" भाग) की गतिशीलता है, तो बस इसे HttpServletRequest#getContextPath() द्वारा गतिशील रूप से पुनर्प्राप्त करें।

 <head> <link rel="stylesheet" href="${pageContext.request.contextPath}/templates/style/main.css" /> <script src="${pageContext.request.contextPath}/templates/js/main.js"></script> <script>var base = "${pageContext.request.contextPath}";</script> </head> <body> <a href="${pageContext.request.contextPath}/pages/foo.jsp">link</a> </body> 

यदि आप सभी रिश्तेदार लिंक के लिए एक बेस पथ सेट करना चाहते हैं तो आपको प्रत्येक रिश्तेदार लिंक में ${pageContext.request.contextPath} दोहराने की आवश्यकता नहीं है, <base> टैग का उपयोग करें यहां जेएसटीएल फ़ंक्शंस की मदद से एक उदाहरण है ।

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> ... <head> <c:set var="url">${pageContext.request.requestURL}</c:set> <base href="${fn:substring(url, 0, fn:length(url) - fn:length(pageContext.request.requestURI))}${pageContext.request.contextPath}/" /> <link rel="stylesheet" href="templates/style/main.css" /> <script src="templates/js/main.js"></script> <script>var base = document.getElementsByTagName("base")[0].href;</script> </head> <body> <a href="pages/foo.jsp">link</a> </body> 

इस तरह हर रिश्तेदार लिंक (यानी / या एक योजना से शुरू नहीं होने पर) <base> सापेक्ष हो जाएगा

यह जिस तरह से विशेष रूप से किसी भी तरह से टॉमकेट से संबंधित नहीं है यह बस HTTP / HTML मूल बातें से संबंधित है आपके पास हर अन्य वेबसर्वर में एक ही समस्या होगी।

यह भी देखें:

  • सीएसएस, छवियों और लिंक जैसे रिश्तेदार संसाधन ब्राउजर उपयोग नहीं कर सकते हैं
  • क्या यह <base> html टैग का उपयोग करने की सिफारिश की है?

बस <c:url> -tag को किसी अनुप्रयोग संदर्भ से संबंधित पथ का उपयोग करें।

जब value पैरामीटर / साथ शुरू होता है, तो टैग उसे एक आवेदन सापेक्ष यूआरएल के रूप में value लेगा, और यूआरएल में आवेदन-नाम जोड़ देगा। उदाहरण:

jsp:

 <c:url value="/templates/style/main.css" var="mainCssUrl" />` <link rel="stylesheet" href="${mainCssUrl}" /> ... <c:url value="/home" var="homeUrl" />` <a href="${homeUrl}">home link</a> 

एक डोमेन सापेक्ष यूआरएल के साथ यह एचटीएमएल बन जाएगा:

 <link rel="stylesheet" href="/AppName/templates/style/main.css" /> ... <a href="/AppName/home">home link</a> 

आप कुछ निर्देशिका से टॉमकेट प्रारंभ करते हैं – जो टककैट के लिए $ cwd है आप इस $ cwd के सापेक्ष किसी भी पथ को निर्दिष्ट कर सकते हैं।

मान लीजिए आपके पास है

 home - tomcat |_bin - cssStore |_file.css 

और मान लें कि आप "बिन / स्टार्टअप.श" कमांड का उपयोग करते हुए ~ / tomcat से टॉमकेट शुरू करते हैं

टॉमकैट के लिए ~ / tomcat होम डायरेक्टरी ($ cwd) बनती है

अब आप अपने servlet में क्लास फ़ाइलों से "../cssStore/file.css" एक्सेस कर सकते हैं

उम्मीद है कि मदद करता है, – एमएस

इसके बजाय पूरे लिंक का उपयोग कर हम नीचे के रूप में कर सकते हैं (समाधान चिंता जेएसपी फ़ाइलें)

जेएसटीएल के साथ हम इसे पसंद कर सकते हैं: सीएसएस जैसे संसाधनों को लिंक करने के लिए, जेएस:

  <link rel="stylesheet" href="${pageContext.request.contextPath}/style/sample.css" /> <script src="${pageContext.request.contextPath}/js/sample.js"></script> 

बस एक लिंक बनाने के लिए:

  <a id=".." class=".." href="${pageContext.request.contextPath}/jsp/sample.jsp">....</a> 

टैग से परिचित होने के लायक यह है

  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

नीचे की तरह इसे करने के लिए भी jsp विधि है, लेकिन ऊपर की तरह बेहतर तरीका:

  <link rel="stylesheet" href="<%=request.getContextPath()%>/style/sample.css" /> <script type="text/javascript" src="<%=request.getContextPath()%>/js/sample.js"></script> 

बस एक लिंक बनाने के लिए:

  <a id=".." class=".." href="<%=request.getContextPath()%>/jsp/sample.jsp">....</a> 

यह सरल किया जा सकता है:

 <base href="${pageContext.request.contextPath}/"/> 

सभी यूआरएल को अनावश्यक domain:port बिना बनाया जाएगा domain:port लेकिन आवेदन संदर्भ के साथ

यह @ राल्फ सुझाव का व्युत्पन्न है जो मैं उपयोग कर रहा हूं। अपने जेएसपी के शीर्ष पर c:url जोड़ें।

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:url value="/" var="root" /> 

फिर बस अपने पृष्ठ में रूट चर का संदर्भ दें:

 <link rel="stylesheet" href="${root}templates/style/main.css">