In JSP come ottengo i parametri dall'URL?
Ad esempio, ho un URL www.somesite.com/Transaction_List.jsp?accountID=5
che desidero ottenere il 5.
Esiste un request.getAttribute ("accountID") come esiste per le sessioni o qualcosa di simile?
In JSP come ottengo i parametri dall'URL?
Ad esempio, ho un URL www.somesite.com/Transaction_List.jsp?accountID=5
che desidero ottenere il 5.
Esiste un request.getAttribute ("accountID") come esiste per le sessioni o qualcosa di simile?
Risposte:
In una richiesta GET, i parametri della richiesta sono presi dalla stringa della query (i dati che seguono il punto interrogativo sull'URL). Ad esempio, l'URL http://hostname.com?p1=v1&p2=v2 contiene due parametri di richiesta: - p1 e p2. In una richiesta POST, i parametri della richiesta sono presi sia dalla stringa della query sia dai dati registrati che sono codificati nel corpo della richiesta.
Questo esempio dimostra come includere il valore di un parametro di richiesta nell'output generato:
Hello <b><%= request.getParameter("name") %></b>!
Se si accedeva alla pagina con l'URL:
http://hostname.com/mywebapp/mypage.jsp?name=John+Smith
l'output risultante sarebbe:
Hello <b>John Smith</b>!
Se il nome non è specificato nella stringa della query, l'output sarebbe:
Hello <b>null</b>!
In questo esempio viene utilizzato il valore di un parametro di query in uno scriptlet:
<%
if (request.getParameter("name") == null) {
out.println("Please enter your name.");
} else {
out.println("Hello <b>"+request. getParameter("name")+"</b>!");
}
%>
Riguardo a oggetti impliciti di Unified Expression Language , il tutorial Java EE 5 scrive:
Oggetti impliciti
Il linguaggio di espressioni JSP definisce un insieme di oggetti impliciti:
pageContext
: Il contesto per la pagina JSP. Fornisce accesso a vari oggetti tra cui:
servletContext
: Il contesto per il servlet della pagina JSP e tutti i componenti Web contenuti nella stessa applicazione. Vedere Accesso al contesto Web.session
: L'oggetto sessione per il client. Vedi Mantenimento dello stato del cliente.request
: La richiesta che avvia l'esecuzione della pagina JSP. Vedi Ottenere informazioni dalle richieste .response
: La risposta restituita dalla pagina JSP. Vedi Costruire risposte.- Inoltre, sono disponibili diversi oggetti impliciti che consentono un facile accesso ai seguenti oggetti:
param
: Associa il nome di un parametro di richiesta a un singolo valoreparamValues
: Associa un nome di parametro di richiesta a una matrice di valoriheader
: Associa il nome dell'intestazione di una richiesta a un singolo valoreheaderValues
: Associa un nome di intestazione di richiesta a una matrice di valoricookie
: Associa il nome di un cookie a un singolo cookieinitParam
: Associa il nome di un parametro di inizializzazione del contesto a un singolo valore- Infine, ci sono oggetti che consentono l'accesso alle varie variabili con ambito descritte in Uso degli oggetti ambito.
pageScope
: Associa i nomi delle variabili con ambito pagina ai loro valorirequestScope
: Associa i nomi delle variabili con ambito di richiesta ai loro valorisessionScope
: Associa i nomi delle variabili con ambito sessione ai rispettivi valoriapplicationScope
: Associa i nomi delle variabili nell'ambito dell'applicazione ai loro valori
Le parti interessanti sono in grassetto :)
Quindi, per rispondere alla tua domanda, dovresti essere in grado di accedervi in questo modo (usando EL):
${param.accountID}
Oppure, usando gli scriptlet JSP (non consigliato):
<%
String accountId = request.getParameter("accountID");
%>
Usa EL (JSP Expression Language):
${param.accountID}
<c:out value="${param.accountID}" />
per farlo.
Se posso aggiungere un commento qui ...
<c:out value="${param.accountID}"></c:out>
non funziona per me (stampa uno 0).
Invece, funziona:
<c:out value="${param['accountID']}"></c:out>
request.getParameter("accountID")
è quello che stai cercando. Questo fa parte dell'API Servlet Java. Vedere http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html per ulteriori informazioni.
esempio che si desidera eliminare il record del soggetto con il relativo subject_id
@RequestMapping(value="subject_setup/delete/{subjectid}",method = RequestMethod.GET)
public ModelAndView delete(@PathVariable int subjectid) {
subjectsDao.delete(subjectid);
return new ModelAndView("redirect:/subject_setup");
}
e il parametro verrà utilizzato per l'input nella query
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
Per questo URL
c'è una chiamata di metodo request.getParameter
in java, se vuoi un numero qui inserito int
, allo stesso modo per il valore stringa inserito string
. quindi per le tue esigenze, copia semplicemente la riga sotto la pagina,
int accountId =(int)request.getParameter("accountID");
ora puoi chiamare questo valore usando accountId
in tutta la pagina.
qui accountId
è il nome del parametro è anche possibile ottenere più di un parametro usando questo, ma questo non funziona. Funzionerà con il GET
metodo solo se premi POST
richiesta quindi il loro sarà un errore.
Spero sia utile.