2010-04-07 19 views
37

पर है, मैंने सोचा कि ServletContext एक विधि प्रदान कर सकता है। ServletContext की getAttribute() विधि किसी भी मदद प्रदान करती है यानी वहाँ एक विशेषता नाम है (शायद "होस्ट", "पोर्ट") जो मददगार होगा।मैं होस्ट नाम (पोर्ट के साथ) कैसे प्राप्त कर सकता हूं कि एक सर्वलेट

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

उत्तर

51
ServletRequest.getServerName(...) 
ServletRequest.getServerPort(...) 
+0

यह अब और काम नहीं करता है। मैं अब भी यह पता लगा रहा हूं कि इसे कैसे करें। –

14

ServletRequest उद्देश्य यह है कि आपके doGet को पारित किया गया है, या doPost विधि getServerName और getServerPort तरीकों कि यह जानकारी प्रदान की है।

request.getHeader("host").contains("xxx")

शायद यह समाधान है:

जैसे

public void doGet(ServletRequest request, ServletResponse response) { 
    System.out.println("Host = " + request.getServerName()); 
    System.out.println("Port = " + request.getServerPort()); 
} 
+1

यूआरएल प्राप्त करने के लिए: 'request.getServerName() +": "+ request.getServerPort();' –

3

मैं अपने पुराने प्रोजेक्ट में स्ट्रिंग पाया है?

2

जैसा ऊपर बताया गया है, मेजबान और बंदरगाह अनुरोध के माध्यम से पुनर्प्राप्त किया जा सकता है। दूसरी ओर, ServletContext जानकारी प्रदान करने के लिए असंभव है क्योंकि जावा एप्लिकेशन आपके होस्ट वातावरण से अनजान हैं। यानी, संदर्भ पथ "foo" के साथ एक एप्लिकेशन (जिसे ServletContext # getContextPath() द्वारा पुनर्प्राप्त किया जा सकता है) http पोर्ट 8080 और https पोर्ट 8043 दोनों से अनुरोध प्राप्त कर सकता है। संदर्भ: https://web.archive.org/web/20120401225136/http://www.java.net:80/node/701934

+0

FYI, लिंक अब काम नहीं करता है – Stormcloud

2

@ प्रत्येक के पास एक अच्छा जवाब है । लेकिन योजना, सर्वर का नाम और बंदरगाह लेना, फिर उन्हें विलय करना। एक आसान तरीका है:

आप HttpServletRequest.getRequestURL और HttpServletRequest.getRequestURI का उपयोग कर सकते हैं।

StringBuffer url = request.getRequestURL(); 
String uri = request.getRequestURI(); 
String host = url.substring(0, url.indexOf(uri)); //result 
संबंधित मुद्दे

 संबंधित मुद्दे