Mam plik jsp, w którym wysyłam dwa parametry za pomocą następującego adresu URL.

var url = 'abc_user_history.jsp?where='+where+'&stock_number=' + StockNumber;
window.open(url, 'Special_Value_History','toolbar=no,location=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=yes,width=1500,height=900');

Tutaj otrzymuję tylko stock_number, gdzie jest zawsze null... w którym mam jakieś zapytanie SQL, np.:

where=where stock_id like '4575%' and stock_name like 'abc%'

W abc_user_history.jsp zawsze mam gdzie jako null. Jednak jestem w stanie uzyskać stock_number wartość. Proszę zasugerować, jak przekazać to, gdzie wartość...

1
Jithu 18 październik 2012, 18:40

2 odpowiedzi

Najlepsza odpowiedź

Tyle tu antywzorców, nie wiem od czego zacząć :|

Jeśli naprawdę potrzebujesz, aby parametr where był jednym, dynamicznym parametrem, możesz przekazać ciąg ze wszystkimi parami pole=wartość oddzielonymi niestandardowym separatorem, a następnie przeanalizować je w Javie (za pomocą StringTokenizer) i zamontować w Where warunek w Akcji.

Przykład gdzie zmienna:

Gdzie="stock_id:::'4575%';;;stock_name:::'abc%';;;" (::: oznacza, że ​​nazwa pola się skończyła i zaczyna się od niej wartość, ;;; oznacza, że ​​ta para się skończyła i w końcu zaczynasz czytać nową parę).

Oczywiście to się zepsuje, jeśli niektóre z twoich wartości zawierają ";;;" lub „:::” (należy najpierw oczyścić je za pomocą javascript).

Nawiasem mówiąc, nie jest to dobre, ponieważ nie powinieneś łączyć łańcucha zamontowanego w javie z łańcuchem zapytania, ale wstrzyknij swoje tokenizowane wartości w PreparedStatement (aby PreparedStatement sprawdził je i oczyścił za Ciebie).

Ale proponuję przekazać każdy parametr jako pojedynczy parametr (nie ?where=, ale ?stock_id=xxx&stock_name=yyy&... w adresie URL).

I powinieneś używać POST do publikowania formularza, a nie GET, który powinien być używany tylko do czytania stron, a nie do publikowania rzeczy (nie jest to możliwe przy użyciu window.open(), ale możesz wysłać formularz z kotwicy z target="_blank" i onclick="javascript:document.getElementById['myForm'].submit();")

Mam nadzieję, że to pomoże ...

1
Andrea Ligios 18 październik 2012, 19:20

Przekazywanie zapytania w get params jest bardzo niebezpieczne, szukanie sparametryzowanego zapytania w javie, jest na nim wiele dokumentów. Czy dzwonisz do strony jsp z javascript? Uważaj na cudzysłowy w swoim łańcuchu.

1
Duccio Fabbri 20 listopad 2012, 11:54