web-dev-qa-db-fra.com

Comment obtenir des paramètres de l'URL avec JSP

Dans JSP, comment obtenir les paramètres de l'URL?

Par exemple, j'ai une URL www.somesite.com/Transaction_List.jsp?accountID=5
Je veux obtenir le 5.

Existe-t-il un request.getAttribute ("accountID") comme pour les sessions ou quelque chose de similaire?

180
Josh Curren

Dans une requête GET, les paramètres de requête sont extraits de la chaîne de requête (les données suivant le point d'interrogation sur l'URL). Par exemple, l'URL http://hostname.com?p1=v1&p2=v2 contient deux paramètres de demande - - p1 et p2. Dans une demande POST, les paramètres de demande sont extraits de la chaîne de requête et des données publiées qui sont codées dans le corps de la demande.

Cet exemple montre comment inclure la valeur d'un paramètre de requête dans la sortie générée:

Hello <b><%= request.getParameter("name") %></b>!

Si vous avez accédé à la page avec l'URL:

http://hostname.com/mywebapp/mypage.jsp?name=John+Smith

la sortie résultante serait:

Hello <b>John Smith</b>!

Si le nom n'est pas spécifié dans la chaîne de requête, le résultat serait:

Hello <b>null</b>!

Cet exemple utilise la valeur d'un paramètre de requête dans un scriptlet:

<%
    if (request.getParameter("name") == null) {
        out.println("Please enter your name.");
    } else {
        out.println("Hello <b>"+request. getParameter("name")+"</b>!");
    }
%>
170
Sajad Bahmani

À propos des objets implicites du langage d'expressions unifiées , du tutoriel Java EE 5 écrit:

Objets Implicites

Le langage d'expression JSP définit un ensemble d'objets implicites:

  • pageContext: contexte de la page JSP. Donne accès à divers objets, notamment:
    • servletContext: contexte de la servlet de la page JSP et des composants Web contenus dans la même application. Voir Accès au contexte Web.
    • session: L'objet de session du client. Voir Gestion de l'état du client.
    • request: La requête déclenchant l'exécution de la page JSP. Voir Obtention d'informations à partir de demandes .
    • response: la réponse renvoyée par la page JSP. Voir Construire des réponses.
  • De plus, plusieurs objets implicites sont disponibles et permettent un accès facile aux objets suivants:
    • param: mappe un nom de paramètre de requête sur une valeur unique
    • paramValues: mappe un nom de paramètre de requête sur un tableau de valeurs
    • header: mappe un nom d'en-tête de demande à une valeur unique
    • headerValues: mappe un nom d'en-tête de demande sur un tableau de valeurs
    • cookie: associe un nom de cookie à un cookie unique
    • initParam: mappe un nom de paramètre d'initialisation de contexte avec une valeur unique
  • Enfin, certains objets permettent d’accéder aux différentes variables de périmètre décrites dans Utilisation des objets Scope.
    • pageScope: Mappe les noms de variables de la page avec leurs valeurs
    • requestScope: mappe les noms de variables couvertes par les demandes avec leurs valeurs
    • sessionScope: Mappe les noms de variables couvertes par les sessions à leurs valeurs
    • applicationScope: mappe les noms de variables couvertes par l'application à leurs valeurs

Les parties intéressantes sont en gras :)

Donc, pour répondre à votre question, vous devriez pouvoir y accéder comme ceci (en utilisant EL):

${param.accountID}

Ou, en utilisant Scriptlets JSP (non recommandé):

<%
    String accountId = request.getParameter("accountID");
%>
229
Pascal Thivent

Utilisez EL (JSP Expression Language):

${param.accountID}

72
Taylor Leese

Si je peux ajouter un commentaire ici ...

<c:out value="${param.accountID}"></c:out>

ne fonctionne pas pour moi (il affiche un 0).

Au lieu de cela, cela fonctionne:

<c:out value="${param['accountID']}"></c:out>

20
Léa Massiot

request.getParameter("accountID") est ce que vous recherchez. Cela fait partie de l'API Java Servlet. Voir http://Java.Sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html pour plus d'informations.

5
user229916
String accountID = request.getParameter("accountID");
4
johannes

www.somesite.com/Transaction_List.jsp?accountID=5

Pour ce URL, il existe un appel de méthode request.getParameter dans Java, si vous souhaitez convertir un nombre ici en int, de la même manière que la valeur de chaîne est convertie en string. donc pour votre besoin, copiez juste au-dessous de la ligne dans la page,

int  accountId =(int)request.getParameter("accountID");

vous pouvez maintenant appeler cette valeur en utilisant accountId dans la page entière.

ici accountId est le nom du paramètre, vous pouvez également obtenir plus d’un paramètre en utilisant ceci, mais cela ne fonctionne pas. Cela fonctionnera uniquement avec la méthode GET si vous cliquez sur la demande POST, alors ce sera une erreur.

J'espère que c'est utile.

0
jay Patel

exemple vous vouliez supprimer l'enregistrement sujet avec son 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");
}

et le paramètre sera utilisé pour la saisie de votre requête

public int delete(int subjectid) {
    String sql = "update tbl_subject set isdeleted= '1' where id = "+subjectid+"";
    return template.update(sql);
}
0
Ainz Ooal Gown