IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Requête SQL (java)


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut Requête SQL (java)
    Bonsoir,

    Je viens ici car j'ai un petit souci, je suis sur un projet JSP, et je n'arrive pas a faire fonctionner les requêtes SQL du côté Java.

    Donc de mon côté, en Ajax, je fais une requête POST :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $.ajax({
    		url:"api/SuiviMateriel",
    		type:'POST',
    		data: JSON.stringify({
    			"operation" : 1,
    			"date" : time,
    			"station" : stat,
    			"id_capteur" : id_capteur,
    			"id_ope" : ope,
    			"com" : com
    		}),
     
    		success:function(data,status,jqXHR){
     
    		},
    		error:function(jqXHR){
    		}
    	});
    Et le côté serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    HttpSession session = request.getSession();
    	JDBCConnect post_connect = new JDBCConnect();
     
    	StringBuilder buffer = new StringBuilder();
    	BufferedReader reader = null;
    	try {
    		reader = request.getReader();
    	} catch (IOException e) {
    		ErrorsHandler.write(UtilsVariables.ERRORLVL_WARNING, UtilsVariables.ErrorTypes.RequestError, e.getMessage());
    	}
    	String line;
        try {
    		while ((line = reader.readLine()) != null) {
    		    buffer.append(line);
    		}
    	} catch (IOException e) {
    		ErrorsHandler.write(UtilsVariables.ERRORLVL_WARNING, UtilsVariables.ErrorTypes.RequestError, e.getMessage());
    	}
        String data = buffer.toString();
    	JSONObject data_buffer = new JSONObject(data);
    	String ff = "UPDATE stock_materiel SET status = 1 WHERE id_stock=5";
     	JDBCUtils dd = post_connect.request("site", ff);
     	dd.close();
    Donc j'ai un retour OK, mais en base, rien n'a changé... La même requête fonctionne en GET, seulement, pour des raisons de taille (255 caractères en GET), je suis dans l'obligation de passer par du POST... aucune requête ne s'exécute quand je passe par POST, en GET, fonctionnel, mais impossible en POST, je comprend pas d'ou viens le souci, sachant que sur d'autre page, en POST, ça fonctionne très bien

    J’espère avoir posté dans la bonne catégorie !

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Peut-être utilises-tu une version supérieure ou égale à 1.9.0 de JQuery, si c'est le cas, il faut utiliser "method" et non "type"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $.ajax({
     
      method: "POST",
     
     
      url: "some.php",
     
     
      data: { name: "John", location: "Boston" }
     
     
    });
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par bloups0 Voir le message
    Donc j'ai un retour OK
    Il viens d'où ce retour OK?

    Citation Envoyé par bloups0 Voir le message
    La même requête fonctionne en GET, seulement, pour des raisons de taille (255 caractères en GET), je suis dans l'obligation de passer par du POST
    Il n'y a pas de limitation à 255 caractères dans le GET. Ce qui dois guider ton choix entre GET et POST c'est 'est-ce que ça modifie l'état du serveur ou ça retourne juste une page'

    Pour le reste, on peux voir le code de ta servlet?

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Peut-être utilises-tu une version supérieure ou égale à 1.9.0 de JQuery, si c'est le cas, il faut utiliser "method" et non "type"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $.ajax({
     
      method: "POST",
     
     
      url: "some.php",
     
     
      data: { name: "John", location: "Boston" }
     
     
    });
    Non, ça ne change rien pour la requête ajax

    Voilà la Servlet de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    package fr.limayrac.servlet;
     
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
     
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    import fr.limayrac.utils.ErrorsHandler;
    import fr.limayrac.utils.UtilsFunctions;
    import fr.limayrac.utils.UtilsVariables;
    import fr.limayrac.xml.XMLParser;
     
    @WebServlet("/SuiviMateriel")
    public class S_SuiviMateriel extends HttpServlet {
     
    		private static final long serialVersionUID = 1L;
     
    		public void doGet(HttpServletRequest request, HttpServletResponse response) {
     
    			try {
    				request.setCharacterEncoding("UTF-8");
    			} catch (UnsupportedEncodingException e) {
    				ErrorsHandler.write(UtilsVariables.ERRORLVL_WARNING, UtilsVariables.ErrorTypes.ServletError, e.getMessage());
    			}
     
    			HttpSession session = request.getSession();
     
    			if(session.getAttribute("id_profil") == null) {
    			   try {
    				   response.sendError(401);
    			   } catch (IOException e) {
    				   ErrorsHandler.write(UtilsVariables.ERRORLVL_WARNING, UtilsVariables.ErrorTypes.ServletError, e.getMessage());
    			   }
    			} else if((session.getAttribute("id_profil").toString().equals("1"))||(session.getAttribute("id_profil").toString().equals("2"))||(session.getAttribute("id_profil").toString().equals("3"))) {
    				String user = session.getAttribute("prenom_utilisateur").toString() + " " + session.getAttribute("nom_utilisateur").toString().toUpperCase();
    				request.setAttribute("user", user);
     
    				String lang = UtilsFunctions.langById(session.getAttribute("id_lang").toString());
     
    				String rank = UtilsFunctions.rankById((Integer)session.getAttribute("id_profil"), lang);
    				request.setAttribute("rank", rank);
     
    				//Menu
    				request.setAttribute("M_log", XMLParser.getText(lang, "menu", "log"));
    				//Page SuiviMateriel
    				request.setAttribute("M_home", XMLParser.getText(lang, "menu", "home"));
    				request.setAttribute("M_view", XMLParser.getText(lang, "menu", "view"));
    				request.setAttribute("M_graphic", XMLParser.getText(lang, "menu", "graphic"));
    				request.setAttribute("M_site", XMLParser.getText(lang, "menu", "site"));
    				request.setAttribute("M_monitoring", XMLParser.getText(lang, "menu", "monitoring"));
    				request.setAttribute("M_summary", XMLParser.getText(lang, "menu", "summary"));
    				request.setAttribute("M_export", XMLParser.getText(lang, "menu", "export"));
    				request.setAttribute("M_administration", XMLParser.getText(lang, "menu", "administration"));
    				request.setAttribute("M_profile", XMLParser.getText(lang, "menu", "profile"));
    				request.setAttribute("M_station", XMLParser.getText(lang, "menu", "station"));
    				request.setAttribute("M_user", XMLParser.getText(lang, "menu", "user"));
    				request.setAttribute("M_log", XMLParser.getText(lang, "menu", "log"));
    				request.setAttribute("M_SuiviMateriel", XMLParser.getText(lang, "menu", "SuiviMateriel"));
    				request.setAttribute("M_graphic", XMLParser.getText(lang, "menu", "webmastergraphic"));
    				request.setAttribute("M_mnemonique", XMLParser.getText(lang, "menu", "webmastermnemonique"));
     
     
    				//Page Ref
     
    				request.setAttribute("P_title", XMLParser.getText(lang, "SuiviMateriel", "title"));
    				request.setAttribute("P_comment", XMLParser.getText(lang, "SuiviMateriel", "comment"));
    				request.setAttribute("P_Chosir", XMLParser.getText(lang, "SuiviMateriel", "ChoiseStation"));
    				request.setAttribute("P_Materiel", XMLParser.getText(lang, "SuiviMateriel", "materiel"));
    				request.setAttribute("P_Capteur", XMLParser.getText(lang, "SuiviMateriel", "capteur"));
    				request.setAttribute("P_StockMateriel", XMLParser.getText(lang, "SuiviMateriel", "stockMateriel"));
    				request.setAttribute("P_StockCapteur", XMLParser.getText(lang, "SuiviMateriel", "stockCapteur"));
    				request.setAttribute("P_HistoriqueMateriel", XMLParser.getText(lang, "SuiviMateriel", "HistoriqueMateriel"));
    				request.setAttribute("P_HistoriqueCapteur", XMLParser.getText(lang, "SuiviMateriel", "HistoriqueCapteur"));	
    				request.setAttribute("P_TextExport", XMLParser.getText(lang, "SuiviMateriel", "TextExport"));	
    				request.setAttribute("P_Export", XMLParser.getText(lang, "SuiviMateriel", "Export"));
    				request.setAttribute("P_Fermer", XMLParser.getText(lang, "SuiviMateriel", "Fermer"));
    				request.setAttribute("P_Libel", XMLParser.getText(lang, "SuiviMateriel", "Libel"));
    				request.setAttribute("P_Change", XMLParser.getText(lang, "SuiviMateriel", "Change"));
    				request.setAttribute("P_Libel", XMLParser.getText(lang, "SuiviMateriel", "Libel"));
    				request.setAttribute("P_manage", XMLParser.getText(lang, "SuiviMateriel", "manage"));
    				request.setAttribute("P_SelectAll", XMLParser.getText(lang, "SuiviMateriel", "select"));
    				request.setAttribute("P_ihmcustom", XMLParser.getText(lang, "profil", "ihmcustom"));
    				request.setAttribute("P_save", XMLParser.getText(lang, "generic", "save"));
    				request.setAttribute("P_add", XMLParser.getText(lang, "generic", "add"));
    				request.setAttribute("P_capteur", XMLParser.getText(lang, "materiel", "capteur"));
    				request.setAttribute("P_selectCap", XMLParser.getText(lang, "materiel", "selectCap"));
    				//On rattache le servlet à sa vue
    				try {
    					this.getServletContext().getRequestDispatcher("/WEB-INF/V_SuiviMateriel.jsp").forward(request, response);
    				} catch (ServletException | IOException e) {
    					ErrorsHandler.write(UtilsVariables.ERRORLVL_WARNING, UtilsVariables.ErrorTypes.ServletError, e.getMessage());
    				}
    			} else {
    				try {
    					response.sendError(401);
    				} catch (IOException e) {
    					ErrorsHandler.write(UtilsVariables.ERRORLVL_WARNING, UtilsVariables.ErrorTypes.ServletError, e.getMessage());
    				}
    			}
    		}
    	}
    Pour le retour ok, il vient du fais que j'ai aucun retour d'erreur dans les try catch, donc du côté ajax, ça passe par le success.

    Après, j'utilise les requêtes GET/POST juste pour modifier la bdd.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ta servlet n'implémente que le doGet, elle n'implémente pas doPost. C'est étonnant que ton ajax te dise que c'est un succes, dans ce cas là il me semble que le conteneur renvoie un code http d'erreur. Par contre il ne loggue rien. Change doGet en doPost dans ton code et ça ira, ce n'est pas normal que ce code se trouve dans un doGet, ce n'est pas une opération de réception de données mais de soumission.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête sql + java
    Par langar dans le forum JDBC
    Réponses: 9
    Dernier message: 14/05/2009, 10h18
  2. Java requête SQL quote antislash
    Par ritchie23 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 01/10/2008, 16h50
  3. Requête SQL 'UPDATE' en Java
    Par Grulf dans le forum JDBC
    Réponses: 5
    Dernier message: 11/06/2008, 09h32
  4. copier une requête sql dans un code java
    Par Smix007 dans le forum Langage
    Réponses: 2
    Dernier message: 05/04/2008, 15h14
  5. Réponses: 8
    Dernier message: 11/08/2006, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo