2013-12-14 28 views
7

Ho un requisito che ho bisogno di salvare il valore di una variabile.Il mio problema è che ho bisogno di inviare un valore da una pagina web a servlet dove il valore della variabile è null la prima volta, ma quando tendo un valore dalla casella di selezione, passa al servlet e sta andando con il valore, ma il mio problema è qui ho bisogno di refesrh la pagina dopo aver selezionato il valore. così ora, quando sto facendo che il valore diventa nuovamente zero e l'operazione non sta accadendo posso salvare il valore della varible dopo aver selezionato alcuni valori dalla selezione ??Come salvare il valore di una variabile in java

qui è il mio codice ..

<body> 
    Select Country: 
    <select id="country"> 
     <option>Select Country</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 

    </select> 

    <input type="button" value="Reload page" onclick="reloadPage()"> 
</body> 


<script> 
    function reloadPage(){ 

     location.reload(); 
    } 
</script> 



<script> 
     $(document).ready(function() { 
      $('#country').change(function(event) { 
       var $country=$("select#country").val(); 
       $.get('JsonServlet',{countryname:$country},function(responseJson) { 
        var $select = $('#states');       
        $select.find('option').remove();       
        $.each(responseJson, function(key, value) {    
         $('<option>').val(key).text(value).appendTo($select);  
        }); 
       }); 
      }); 
     });   
    </script> 

e questo è il mio servlet

public class JsonServlet extends HttpServlet { 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    PrintWriter out = response.getWriter(); 
    String value = request.getParameter("countryname"); 
    System.out.println("comes from ajax" + value); 
    JsonGenerator generator = new JsonGenerator(); 
    Entry entry = null; 
    if (value != null) { 

     HttpSession session = request.getSession(); 

session.setAttribute("value", value); 
     entry = generator.aMethod2Json(value); 
     Gson g = new Gson(); 

     response.setContentType("application/json"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(g.toJson(entry)); 


    } else { 
     entry = generator.aMethod2Json("1"); 
     Gson g = new Gson(); 

     response.setContentType("application/json"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(g.toJson(entry)); 


    } 



} 

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
/** 
* Handles the HTTP 
* <code>GET</code> method. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Handles the HTTP 
* <code>POST</code> method. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Returns a short description of the servlet. 
* 
* @return a String containing servlet description 
*/ 
@Override 
public String getServletInfo() { 
    return "Short description"; 
}// </editor-fold> 

}

risposta

6

Spero che un esempio di codice potrebbe aiutare:

Un Contatore semplice

Per dimostrare il ciclo di vita del servlet, inizieremo con un semplice esempio. L'Esempio 3-1 mostra un servlet che conta e visualizza il numero di volte in cui è stato effettuato l'accesso. Per motivi di semplicità, emette testo in chiaro.

Esempio 3-1. Un semplice contatore

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class SimpleCounter extends HttpServlet { 

    int count = 0; 

    public void doGet(HttpServletRequest req, HttpServletResponse res) 
          throws ServletException, IOException { 
    res.setContentType("text/plain"); 
    PrintWriter out = res.getWriter(); 
    count++; 
    out.println("Since loading, this servlet has been accessed " + 
      count + " times."); 
    } 
} 

In caso contrario, se si vuole qualcosa di più avanzato una buona opzione è quella di utilizzare il contatore A Holistic:

Esempio 3-2. Un Contatore olistico

import java.io.*; 
import java.util.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class HolisticCounter extends HttpServlet { 

    static int classCount = 0; // shared by all instances 
    int count = 0;    // separate for each servlet 
    static Hashtable instances = new Hashtable(); // also shared 

    public void doGet(HttpServletRequest req, HttpServletResponse res) 
          throws ServletException, IOException { 
    res.setContentType("text/plain"); 
    PrintWriter out = res.getWriter(); 

    count++; 
    out.println("Since loading, this servlet instance has been accessed " + 
      count + " times."); 

    // Keep track of the instance count by putting a reference to this 
    // instance in a Hashtable. Duplicate entries are ignored. 
    // The size() method returns the number of unique instances stored. 
    instances.put(this, this); 
    out.println("There are currently " + 
      instances.size() + " instances."); 

    classCount++; 
    out.println("Across all instances, this servlet class has been " + 
      "accessed " + classCount + " times."); 
    } 
} 

Questo HolisticCounter traccia un proprio numero di accesso con la variabile di istanza conte, il conte condiviso con la variabile di classe classCount, e il numero di istanze con l'istanze tabella hash (un'altra risorsa condivisa che deve essere una classe variabile).

rif. Java Servlet Programming By Jason

1

Che dire di memorizzare la variabile per l'oggetto della sessione servlet. così rimane attiva anche durante cambiamenti all'interno della richiesta di applicazione

Inoltre è possibile verificare durante ogni richiesta il valore della variabile e agire in modo appropriato.

0

È possibile effettuare una chiamata ajax al servlet dopo aver selezionato il valore e prima di aggiornare la pagina.

O

Impostare il valore in sessione chiamando la funzione java script.

<script> 
    function setMyVar(){ 
     <%  session.setAttribute("username", Value); %> 
    } 
</script> 

per ottenere l'attributo sessione sul lato servlet

session.getAttribute("userName") 
Problemi correlati