java - java中如何保存变量的值

标签 java servlets

<分区>

我有一个要求,我需要保存一个变量的值。我的问题是我需要从网页向 servlet 发送一个值,其中变量的值第一次为 null 但是当我从选择框中选择一个值时,它会转到 servlet 并且它与该值一起使用但我的问题在这里,我需要在选择值后重新访问页面。所以现在当我这样做时,值再次变为零并且操作没有发生,我可以在从选择中选择一些值后保存变量的值吗??

这是我的代码..

   <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>

这是我的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>

最佳答案

我希望一些代码示例可能对您有所帮助:

一个简单的计数器

为了演示 servlet 生命周期,我们将从一个简单的示例开始。示例 3-1 显示了一个 servlet,它计算并显示它被访问的次数。为简单起见,它输出纯文本。

示例 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 类变量跟踪共享计数,以及使用实例哈希表(另一个必须是类变量的共享资源)的实例数。

引用。 Java Servlet Programming By Jason

关于java - java中如何保存变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579516/

相关文章:

java - InstallCert.java 从哪里获取服务器证书

java - 矩阵对角线

java - 我正在创建一个回收器 View ,然后弹出 :

java - Servlet 响应写入与打印?哪个更好?

java - JDBC 从 SQL 查询中解析 int

java - jsp中通过session访问时id太长。

servlets - 发出长帖子请求后立即启动线程

java - 错误: missing return value in Java

Java替换字符串忽略空格

java - Quartz 属性不会触发 Quartz Job