W JSP jak uzyskać parametry z adresu URL?
Na przykład mam adres URL, www.somesite.com/Transaction_List.jsp?accountID=5
który chcę uzyskać 5.
Czy istnieje request.getAttribute („accountID”), taki jak w przypadku sesji lub coś podobnego?
W JSP jak uzyskać parametry z adresu URL?
Na przykład mam adres URL, www.somesite.com/Transaction_List.jsp?accountID=5
który chcę uzyskać 5.
Czy istnieje request.getAttribute („accountID”), taki jak w przypadku sesji lub coś podobnego?
Odpowiedzi:
W żądaniu GET parametry żądania są pobierane z ciągu zapytania (dane następujące po znaku zapytania w adresie URL). Na przykład adres URL http://hostname.com?p1=v1&p2=v2 zawiera dwa parametry żądania - - p1 i p2. W żądaniu POST parametry żądania są pobierane zarówno z ciągu zapytania, jak i z wysłanych danych, które są zakodowane w treści żądania.
W tym przykładzie pokazano, jak uwzględnić wartość parametru żądania w wygenerowanym wyniku:
Hello <b><%= request.getParameter("name") %></b>!
Jeśli strona była otwierana za pomocą adresu URL:
http://hostname.com/mywebapp/mypage.jsp?name=John+Smith
wynikowy wynik byłby:
Hello <b>John Smith</b>!
Jeśli nazwa nie zostanie podana w ciągu zapytania, wynikiem będzie:
Hello <b>null</b>!
W tym przykładzie użyto wartości parametru zapytania w skrypcie:
<%
if (request.getParameter("name") == null) {
out.println("Please enter your name.");
} else {
out.println("Hello <b>"+request. getParameter("name")+"</b>!");
}
%>
O dorozumiane obiektów o Unified Expression Language The Java EE 5 Tutorial pisze:
Obiekty niejawne
Język wyrażeń JSP definiuje zestaw niejawnych obiektów:
pageContext
: Kontekst strony JSP. Zapewnia dostęp do różnych obiektów, w tym:
servletContext
: Kontekst serwletu strony JSP i wszelkich składników WWW zawartych w tej samej aplikacji. Zobacz Dostęp do kontekstu internetowego.session
: Obiekt sesji dla klienta. Patrz Utrzymanie stanu klienta.request
: Żądanie wyzwalające wykonanie strony JSP. Zobacz Uzyskiwanie informacji z zapytań .response
: Odpowiedź zwrócona przez stronę JSP. Zobacz: Konstruowanie odpowiedzi.- Ponadto dostępnych jest kilka niejawnych obiektów, które umożliwiają łatwy dostęp do następujących obiektów:
param
: Mapuje nazwę parametru żądania do pojedynczej wartościparamValues
: Odwzorowuje nazwę parametru żądania na tablicę wartościheader
: Odwzorowuje nazwę nagłówka żądania na jedną wartośćheaderValues
: Odwzorowuje nazwę nagłówka żądania na tablicę wartościcookie
: Zamienia nazwę pliku cookie na pojedynczy plik cookieinitParam
: Odwzorowuje nazwę parametru inicjalizacji kontekstu na pojedynczą wartość- Wreszcie istnieją obiekty, które umożliwiają dostęp do różnych zmiennych o zasięgu opisanych w Korzystanie z obiektów zakresu.
pageScope
: Mapuje nazwy zmiennych o zasięgu stron na ich wartościrequestScope
: Mapuje nazwy zmiennych o zasięgu zgodnym z żądaniami na ich wartościsessionScope
: Mapuje nazwy zmiennych o zasięgu sesji do ich wartościapplicationScope
: Mapuje nazwy zmiennych o zasięgu aplikacji do ich wartości
Interesujące części są pogrubione :)
Tak więc, aby odpowiedzieć na twoje pytanie, powinieneś mieć do niego dostęp w następujący sposób (używając EL):
${param.accountID}
Lub używając skryptów JSP (niezalecane):
<%
String accountId = request.getParameter("accountID");
%>
Użyj EL (JSP Expression Language):
${param.accountID}
<c:out value="${param.accountID}" />
Aby to zrobić, użyj JSTL .
Jeśli mogę tu dodać komentarz ...
<c:out value="${param.accountID}"></c:out>
nie działa dla mnie (drukuje 0).
Zamiast tego działa:
<c:out value="${param['accountID']}"></c:out>
request.getParameter("accountID")
jest tym, czego szukasz. Jest to część interfejsu API serwletów Java. Więcej informacji można znaleźć na stronie http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html .
przykład chciałeś usunąć rekord podmiotu z jego identyfikatorem podmiotu
@RequestMapping(value="subject_setup/delete/{subjectid}",method = RequestMethod.GET)
public ModelAndView delete(@PathVariable int subjectid) {
subjectsDao.delete(subjectid);
return new ModelAndView("redirect:/subject_setup");
}
a parametr zostanie wykorzystany do wprowadzenia zapytania
public int delete(int subjectid) {
String sql = "update tbl_subject set isdeleted= '1' where id = "+subjectid+"";
return template.update(sql);
}
www.somesite.com/Transaction_List.jsp?accountID=5
W tym celu URL
istnieje wywołanie metody request.getParameter
w Javie, jeśli chcesz tu rzucić liczbę int
, podobnie dla wartości ciągu string
. więc na swoje życzenie po prostu skopiuj przeszłość poniżej linii na stronie,
int accountId =(int)request.getParameter("accountID");
możesz teraz nazwać tę wartość, używając accountId
całej strony.
tutaj accountId
jest nazwa parametru, można również uzyskać więcej niż jeden parametr za pomocą tego, ale to nie działa. Będzie działać tylko z GET
metodą, jeśli trafisz na POST
żądanie, wtedy będzie to błąd.
Mam nadzieję, że to jest pomocne.