2012-04-25 26 views
7

Powiedzmy, że mam formularz z metodą = POST na mojej stronie. Teraz ta forma ma pewne podstawowe elementy formularza takie jak pole tekstowe, pole wyboru, etc Ma URL działanie jako http://example.com/someAction.do?param=valueFormularz HTML metoda POST z zapytaniem w adresie URL działania

rozumiem, że to jest rzeczywiście sprzeczne rzeczy do zrobienia, ale moje pytanie jest to będzie działać w praktyce.

Moje pytania są;

  1. Ponieważ metoda forma jest post i mam ciągu kwerendy, jak również w moim URL (? Param = wartość) będzie działać poprawnie? tj. czy będę mógł pobrać parametr = wartość na stronie odbiorczej (someAction.do)

  2. Powiedzmy, że używam Java/JSP, aby uzyskać dostęp do wartości po stronie serwera. Więc w jaki sposób uzyskać wartości po stronie serwera? Czy składnia jest taka sama, aby uzyskać dostęp do wartości param = value, a także do elementów formularza, takich jak pole tekstowe/przycisk radiowy/pole wyboru, itp.?

+0

Tak, możesz uzyskać dostęp do zmiennych "POST" i "GET" na dowolnej stronie. aby uzyskać te wartości, użyj 'print_r ($ _ GET);' i 'print_r ($ _ POST);' – hjpotter92

+0

JSP, podobnie jak większość języków skryptowych, może uzyskać dostęp do zmiennych GET i POST osobno lub może uzyskać do nich dostęp w ramach jednego zestawu danych ... dla każdego podejścia będą różne funkcje (jeśli dobrze pamiętam, metoda getParameter() uzyska dostęp do parametrów GET i POST, niezależnie od tego, Google może pomóc znaleźć biblioteki, aby uzyskać dostęp do każdego zestawu parametrów osobno.) – jlmcdonald

Odpowiedz

1

1) TAK, będziesz mieć dostęp do zmiennych POST i GET, ponieważ twoje żądanie będzie zawierało oba. Więc możesz użyć odpowiednio $ _GET ["nazwa_parametru"] i $ _POST ["nazwa_parametru"].

2) Korzystanie z JSP można użyć następującego kodu dla obu:

<%= request.getParameter("param_name") %>

Jeśli używasz JSP EL (Expression Language), można je również uzyskać w następujący sposób:

${param.param_name} 

EDIT: jeśli param_name występuje zarówno QueryString żądanie POST i danych, zarówno z nich będzie zwrócona jako tablicy wartości, z których pierwszy jest QueryString .

W takich scenariuszy, getParameter("param_name) wróci pierwszy z nich (jak wyjaśniono here), jednak zarówno z nich można odczytać za pomocą metody getParameterValues("param_name") w następujący sposób:

String[] values = request.getParameterValues("param_name"); 

W celu uzyskania dalszych informacji, read here .

+0

pytanie i jesteś w stanie to wyjaśnić powyżej. Ale moje pytanie brzmi: która wartość będzie ważniejsza dla nazwy klucza, która jest obecna zarówno w ciągu zapytania, jak iw formularzu? – ifelsemonkey

+0

@ifelsemonkey oba z nich zostaną zwrócone: pierwszy to ten z łańcucha zapytania, a drugi to ten w treści POST. Zauważ również, że 'getParameter()' zwróci tylko pierwszy z nich (wartość ciągu zapytania przeważa), ale możesz odczytać oba z nich używając 'getParameterValues' w następujący sposób:' String [] lines = request.getParameterValues ("name"); 'dla dalszych informacji, [czytaj tutaj] (https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/ServletRequest.html#getParameter%28java.lang.String% 29). Poprawiłem odpowiednio odpowiedź. – Darkseal

0

Tak. Możesz pobrać te parametry w swojej klasie akcji. Wystarczy, że utworzysz własność o tej samej nazwie (w twoim przypadku param) z elementami pobierającymi i ustawiającymi.

Przykładowy kod

private String param; 

{... getters and setters ...} 

kiedy będzie to zrobić, wartość parametrów (przekazywane za pośrednictwem adresu URL) będą zapisywane do pobierające z danej nieruchomości. i dzięki temu możesz robić, co chcesz, z tą wartością.

0

Metoda ukrywania przedłożonych danych formularza od użytkownika. Nie widzi, jakie dane zostały przesłane do serwera, chyba że używane jest specjalne narzędzie.

Metoda GET pozwala każdemu zobaczyć, jakie dane ma. Możesz łatwo zobaczyć dane z adresu URL (np.Widząc pary klucz-wartość w ciągu zapytania).

Innymi słowy, od Ciebie zależy przedstawienie danych (może nieistotnych) użytkownikowi za pomocą ciągu zapytania w akcji formularza. Na przykład w filtrze tabeli danych. Aby zachować bieżący stan stronicowania, można użyć domain.com/path.do?page=3 jako action. I można ukryć inne dane w formie komponentów, jak input, textarea itp

Obie metody mogą być przechwycony w serwerze w taki sam sposób. Na przykład w Javie, za pomocą request.getParameter("page").