मैं जावा फ़िल्टर से अनुरोध URL कैसे प्राप्त कर सकता हूं?


81

मैं एक फ़िल्टर लिखने का प्रयास कर रहा हूं जो अनुरोध URL को पुनः प्राप्त कर सकता है, लेकिन मुझे यकीन नहीं है कि ऐसा कैसे करें।

यह है, जो कि अभी तक मेरे पास है:

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class MyFilter implements Filter {
    public void init(FilterConfig config) throws ServletException { }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        chain.doFilter(request, response);

        String url = ((HttpServletRequest) request).getPathTranslated();
        System.out.println("Url: " + url);
    }

    public void destroy() { }
}

जब मैं अपने सर्वर पर एक पेज हिट करता हूं, तो मुझे जो एकमात्र आउटपुट दिखाई देता है, वह "Url: null" है।

फ़िल्टर में किसी दिए गए ServletRequest ऑब्जेक्ट से अनुरोधित URL प्राप्त करने का सही तरीका क्या है?

जवाबों:


184

क्या यह आप देख रहे हैं?

if (request instanceof HttpServletRequest) {
 String url = ((HttpServletRequest)request).getRequestURL().toString();
 String queryString = ((HttpServletRequest)request).getQueryString();
}

पुनर्निर्माण के लिए:

System.out.println(url + "?" + queryString);

जानकारी HttpServletRequest.getRequestURL()और HttpServletRequest.getQueryString()


5
getRequestURL()रिटर्न StringBuffer, नहीं String
बालुसक

1
अशक्त के पैटर्न पर विचार करना बेहतर है queryString
कज़ुहिरो सेरा

3
यदि आप चाहते हैं कि " ब्लेबला: 8080 " हिस्सा आपके लिए दूर हो जाए, तो GetRequestURI () ('I' not 'l') एक स्ट्रिंग शुरू कर देता है "/"
अलेक्जेंडर टेलर

यदि आप केवल उस सर्वलेट का मार्ग चाहते हैं, जिसका आप उपयोग कर सकते हैं request.getServletPath(), तो यह जावा आईडी के फीचर्स पर उपयोगी है ताकि व्यू आईडी (वेबैप रूट से एक्सएचटीएमएल पेज तक का मार्ग, डोमेन, तैनाती उपसर्ग, आदि को छोड़कर) के बराबर प्राप्त किया जा सके
जोस रॉबर्टो आराजो

4

इस पृष्ठ पर एक और उत्तर पर निर्माण ,

public static String getCurrentUrlFromRequest(ServletRequest request)
{
   if (! (request instanceof HttpServletRequest))
       return null;

   return getCurrentUrlFromRequest((HttpServletRequest)request);
}

public static String getCurrentUrlFromRequest(HttpServletRequest request)
{
    StringBuffer requestURL = request.getRequestURL();
    String queryString = request.getQueryString();

    if (queryString == null)
        return requestURL.toString();

    return requestURL.append('?').append(queryString).toString();
}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.