दिलचस्प पोस्ट
एक अजाक्स कॉल के साथ फ़ंक्शन से वापसी मूल्य कैसे एक 3D जाल वस्तु की मात्रा की गणना करने के लिए सतह की त्रिकोण बना दिया है urlencode बनाम rawurlencode? PHP में वास्तव में PATH_INFO क्या है? आंशिक दृश्य प्रस्तुत करना ASP.NET MVC में jQuery का उपयोग करना Java.util.Calendar को समझना WEEK_OF_YEAR ईएफ सहित अन्य संस्थाएं (जेनेरिक भंडार पैटर्न) निर्धारित मानदंड कैसे करें फोर्ट्रान 90 प्रकार का पैरामीटर एसक्यूएएस कतार में कई उपभोक्ताओं का उपयोग करना Scoping नियमों का संक्षिप्त विवरण? बेस 64 छवियाँ एम्बेड करना एचटीएमएल / एक्सएचटीएमएल में टिक चिह्न एक्वाप्स में जवाडॉक पैकेजों को पहचानने में विफल रहा है पांडा डेटाफ़्रेम: एक कॉलम में तारों से अवांछित भागों को हटा दें

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

मेरी स्थिर फाइल (सीएसएस, जे एस) को काम करने के लिए मुझे /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">