Selam arkadaşlar. Bir web uygulamasında server taraflı bir sorunum var. AS server olarak Jboss 7.1.1 kullanıyorum ve herhangi bir framework kullanmıyorum, klasik Servlet HttpServletRequest ve HttpServletResponse vs. sınıflarını kullanıyorum.

Sorun kısaca şu. Client tarafından gelen request parametreleri & karakteri içerebiliyor ve bu parametreleri server tarafında okuyamıyorum. Örnek olarak aşağıdaki gibi bir URL miz olsun.

http://domain/webapp/servlet/?key1=value1&filename=Ali&Veli&key3=value3

Burada normalde üç tane parametremiz ve onların değerleri var. param1 - key1=value1 param2 - filename=Ali&Veli param3 - key3=value3

Gördüğümüz gibi filename parametresinin değeri Ali&Veli ve aralarındaki & karakteri başımıza iş açıyor. Bu sorunu aşmak için aşağıdaki gibi URLEncoder ile UTF8 olarak kodluyorum. String filename = URLEncoder.encode("Ali&Veli", "UTF-8"); ve Sonuç: filename = "Ali%26Veli" . & karakteri %26'na çeviriliyor. Buraya kadar sorun yok.

Aynı zamanda server tarafında öncelikle request.setCharacterEncoding ("UTF-8"); işlemi Daha sonra ise String dosyaAdı = request.getParameter("filename"); işlemleri yürütülüyor. Ve sorunun başladığı yer. Sonuç : dosyaAdı="Ali" .Olması gereken yada istediğimiz ise şuydu: dosyaAdı="Ali&Veli"

Eğer request.getParameter() methodu yerine request.getQueryString() methodunu kullanırsak durum şu şekilde oluyor. String queryString = request.getQueryString(); queryString değeri "key1=value1&filename=Ali&Veli&key3=value3" oysa şu şekilde olsa "key1=value1&filename=Ali%26Veli&key3=value3" işimizi görebilirdi.

Client tarafından gelen URL'in request parametrelerinin yeri ve sırası belli değil. Belli olsaydı yukarıdaki queryString den bir şekilde String işlemleriyle "Ali&Veli" yi rahatlıkla bulabilirdik. Aynı zamanda dosya isimleri eşitlik = karakterine de izin verdiği için yani "filename=Ali&Veli" yerine "filename=Ali&Ve=li" olabileceği için işler iyice karışıyor. "Ve" ayrı bir parametre ve "li" ise onun değeriymiş gibi yorumlanıyor.

Bu tür bir sorunla daha önce karşılaşan var mı acaba? Ne yapılabilir bilgisi olan var mı? Bahsettiğim gibi Client tarafına müdahele şansımız yok. Sunucuya &A&B&C&D isminde bir dosya ismi bile gelebilir. JBoss veya Browser ayarlarıyla ilgili bir şeyler olabilir mi acaba? Stackoverflow da bu konuyla alakalı neredeyse tüm sorulara baktım ama tam olarak işime yarayan bir şey bulamadım. Bulduklarım içinde en mantıklısı şuydu. http://stackoverflow.com/questions/9600583/server-side-fix-for-receiving-string-containing-ampersand

Farklı bir cevabı olan var mı? Umarım sorunumu açık seçik anlatabilmişimdir. Herkese teşekkürler.

soruldu: 14 Oca '15, 17:47

turgut88's gravatar image

turgut88
1111
cevap kabul oranı: 0%


Deneme firsatim olmadi ama belki bir fikir olmasi acisindanfilename=(Ali&Ve=li)" gibi bir yöntem işe yararmiydi. Parantez yerine belki baska bir karakter de kullanilabilir.

permanent link

cevaplandı: 15 Oca '15, 03:44

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

Soruyla ilgilenen herkes tesekkür ederim. Sorunu cözdüm. Vaktim oldugu zaman cözömö hakkinda bir seyler yazarim.

@Müslüm Öztürk Maalesef ise yaramadi. Cok tesekkür ederim cevabin icin.

permanent link

cevaplandı: 15 Oca '15, 06:51

turgut88's gravatar image

turgut88
1111
cevap kabul oranı: 0%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×6
×6
×3

Soruldu: 14 Oca '15, 17:47

Görüntüleme: 528 kez

Son güncelleme: 15 Oca '15, 06:51

powered by BitNami OSQA