2017-01-03 34 views
-1

我有一個按鈕提交表單,我希望當點擊按鈕提交時,通過一個servlet將數據庫發送到數據庫(mariadb),然後通過同一個servlet再次將相同的servlet發佈到HTML頁面上點擊按鈕)。我可以做一個doPost,然後doGet在同一個提交按鈕?

當運行servlet時,它會通過HTML上的提交按鈕獲取新值。但只有當我自己運行servlet時(在Netbeans上右鍵單擊代碼並運行..)。它分開工作。

這doPost方法:

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    Gson convertir = new Gson(); 

    PrintWriter out = response.getWriter(); // PrintWriter imprime texto en un objeto. getWriter() devuelve un objeto PrintWriter. 

    String texto = request.getReader().readLine();//getReader() devuelve el contenido de la respuesta. readLine() lee el contenido de la variable "texto" y lo retorna. 

    TreeMap<String, String> objetoSabor = convertir.fromJson(texto, TreeMap.class);// Crea una lista treemap y convierte la respuesta de JSON a treemap.. 

    Class.forName("com.mysql.jdbc.Driver").newInstance(); 

     Connection conMDB = DriverManager.getConnection("jdbc:mysql://localhost/cremo", "root", "root"); 
     PreparedStatement sentencia = conMDB.prepareStatement("insert into inventarios (inv_hel_id, inv_sab_id, inv_cantidad ) values (?,?,?)"); 
     sentencia.setString(1, objetoSabor.get("heladerias"));//"nombre" lo saca del objeto "sabor" en AJAX (sabor.nombre) 
     sentencia.setString(2, objetoSabor.get("sabor"));//"calorias" lo saca del objeto "calorias" en AJAX (sabor.calorias) 
     sentencia.setString(3, objetoSabor.get("calorias"));//"calorias" lo saca del objeto "calorias" en AJAX (sabor.calorias) 
     sentencia.execute(); 

這裏doGet方法:

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    PrintWriter out = response.getWriter(); 


    try { 

     Class.forName("com.mysql.jdbc.Driver").newInstance(); 

     Connection conMDB = DriverManager.getConnection("jdbc:mysql://localhost/cremo", "root", "root"); 


     PreparedStatement sentencia = conMDB.prepareStatement("select * from inventarios"); 


     ResultSet resultado = sentencia.executeQuery();//ResulSet pone el puntero en la primera fila de la tabla de la Base de datos. 


     while(resultado.next()){ 
      out.println("[OK] " + request.getParameter("heladerias") + ", " + resultado.getString(2) + ", " + resultado.getString(3)); 
     } 

HTML表單:

<form> 
      <fieldset> 
       <p> 


        <select id="heladerias" name="heladerias"> 
         <option value="1">Palermo</option> 
         <option value="2">Recoleta</option> 
         <option value="3">Belgrano</option> 
        </select> 

        <select id="sabores" name="sabores" > 
         <option value="1">Sambayon italiano</option> 
         <option value="3">Sambayon Frances</option> 
         <option value="5">Mousse de Limon</option> 
         <option value="6">Pistacho</option> 
        </select> 

        <input id="sabor_calorias" type="number" name="quantity" min="1" max="6000"> 

       </p> 


       <input id="fecha" type="date" name="fecha" step="1" min="2016-01-01" max="2016-12-31"> 


       <input type="submit" value="Submit" onclick="envioCorrecto()"/> 

      </fieldset> 
     </form> 

回答

0

您只能在doPost方法中發送響應。不需要單獨編寫doGet方法。將數據插入到數據庫後,僅將數據寫入doPost方法的邏輯。

+0

任何線索如何做到這一點.... ??? – TOMAS

相關問題