Saya punya HttpServletRequest
objek.
Bagaimana cara saya mendapatkan URL lengkap dan tepat yang menyebabkan panggilan ini tiba di servlet saya?
Atau setidaknya seakurat mungkin, karena mungkin ada hal-hal yang dapat dibuat ulang (urutan parameter, mungkin).
Jawaban:
Ini
HttpServletRequest
memiliki metode berikut:getRequestURL()
- mengembalikan bagian dari URL lengkap sebelum karakter pemisah string kueri?
getQueryString()
- mengembalikan bagian dari URL lengkap setelah karakter pemisah string kueri?
Jadi, untuk mendapatkan URL lengkap, lakukan saja:
sumber
Saya menggunakan metode ini:
sumber
url
dideklarasikan, dipakai, dan hanya digunakan di dalam metode, sehingga tidak dapat diakses dari utas selain yang disebut metode.StringBuffer
untuk setiap panggilan dan tidak membaginya dengan utas lainnya. Ini harus diubah menjadiStringBuilder
.getRequestURI
?sumber
StringBuffer
.Dalam proyek Musim Semi yang dapat Anda gunakan
sumber
new ServletServerHttpRequest(request).getURI()
HttpUtil menjadi usang, ini adalah metode yang benar
sumber
Menggabungkan hasil
getRequestURL()
dangetQueryString()
harus memberi Anda hasil yang diinginkan.sumber
Anda bisa menggunakan filter.
jangan lupa memasukkan
<dispatcher>FORWARD</dispatcher>
pemetaan filter di web.xmlsumber
Gunakan metode berikut pada objek HttpServletRequest
java.lang.String getRequestURI () -Kembalikan bagian dari URL permintaan ini dari nama protokol hingga string kueri di baris pertama permintaan HTTP.
java.lang.StringBuffer getRequestURL () -Rekonstruksi URL yang digunakan klien untuk membuat permintaan.
java.lang.String getQueryString () -Kembalikan string kueri yang terkandung dalam URL permintaan setelah path.
sumber
Agak terlambat ke pesta, tapi saya memasukkan ini di perpustakaan MarkUtils-Web saya di WebUtils - Checkstyle-disetujui dan JUnit-diuji:
Mungkin jawaban tercepat dan paling tangguh di sini sejauh ini di belakang Mat Banik - tetapi bahkan jawabannya tidak memperhitungkan kemungkinan konfigurasi port non-standar dengan HTTP / HTTPS.
Lihat juga:
sumber
Anda dapat menulis satu liner sederhana dengan ternary dan jika Anda memanfaatkan pola builder dari StringBuffer dari
.getRequestURL()
:Tapi itu hanya gula sintaksis.
sumber