Как сохранить значение переменной в Java [закрыт]
у меня есть требование, что мне нужно сохранить значение переменной. Моя проблема заключается в том, что мне нужно отправить значения из веб-страницы в сервлет, где значение переменной равно null, но когда я выберите значение из списка это gooes к сервлету, и это будет значением но моя проблема мне нужно refesrh странице После выбора значения. поэтому теперь, когда я делаю это, значение снова становится нулевым, и операция не происходит, могу ли я сохранить значение переменная после выбора некоторых значений из выборки ??
вот мой код..
<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>
а это мой сервлет
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>
}
3 ответов
Я надеюсь, что какой-то пример кода может помочь вам:
Простой Счетчик
чтобы продемонстрировать жизненный цикл сервлета, мы начнем с простого примера. Пример 3-1 показывает сервлет, который подсчитывает и отображает количество обращений к нему. Для простоты он выводит простой текст.
пример 3-1. Простой счетчик
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.");
}
}
в противном случае, если вы хотите что-то более продвинутое хорошим вариантом является использование целостного Счетчик:
пример 3-2. Целостный Счетчик
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.");
}
}
этот HolisticCounter отслеживает свой собственный счетчик доступа с переменной экземпляра count, общий счетчик с переменной класса classCount и количество экземпляров с экземплярами hashtable (другой общий ресурс, который должен быть переменной класса).
Как насчет хранения переменной в объекте сеанса сервлета. Таким образом, он остается активным и во время изменений в области запроса
Furthermore вы можете проверить во время каждого запроса значение переменной и действовать соответствующим образом.
вы можете сделать вызов ajax сервлету после выбора значения и перед обновлением страницы.
или
задайте значение в сеансе, вызвав функцию Java script .
<script>
function setMyVar(){
<% session.setAttribute( "username", Value ); %>
}
</script>
чтобы получить атрибут сеанса на стороне сервлета
session.getAttribute("userName")