不同的会话就有不同的 session id ,即使是同一个人也不会得到同一个session id
我认为计算客户访问次数最简单的方法就是用 Cookie去保存 浏览次数 很简单的,确实象这种
记录长时间的数据应该用Cookie

解决方案 »

  1.   

    是不适session的失效时间设置的问题。你看一下你的web.xml配置里的session-config.调整一下session的失效时间。
    <session-config>
       <session-timeout>90</session-timeout>
    </session-config>
    或者看一下你的jsp页面是不适禁止使用session对象;默认是不禁止的。不妨显示加上可以使用session,如下:<%@page session="true"%>
      

  2.   

    如果简单的实现的话 所有的访问都通过这个servlet  然后在这个servlet里面定义一个 static int i=0 ;  servlet的dopost或者doget里面加上 i++ 然后在页面上输出i就行了 当然服务器重起了就又归零了 你可以存到硬盘上下次再取  考虑线程方面问题还需要给i++ 上个锁
      

  3.   

    直接把该值设置到this.getServletContext().setAttribute("count",new Integer(i));里不就行了?
      

  4.   

    我知道用cookie怎么做,
    问题是每次getSession,都是创建新的session,找不到原来的session(浏览器没有关闭)计算客户访问次数不是我要问的问题找不到原来的session才是问题package coreservlets;import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.*;/**
     * Servlet that uses session-tracking to keep per-client access counts. Also
     * shows other info about the session.
     */public class ShowSession extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html");
    HttpSession session = request.getSession();
    String heading;
    Integer accessCount = (Integer) session.getAttribute("accessCount");
    if (accessCount == null) {
    accessCount = new Integer(0);
    heading = "Welcome, Newcomer";
    } else {
    heading = "Welcome Back";
    accessCount = new Integer(accessCount.intValue() + 1);
    }
    // Integer is an immutable data structure. So, you
    // cannot modify the old one in-place. Instead, you
    // have to allocate a new one and redo setAttribute.
    session.setAttribute("accessCount", accessCount);
    PrintWriter out = response.getWriter();
    String title = "Session Tracking Example";
    String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
    + "Transitional//EN\">\n";
    out
    .println(docType + "<HTML>\n" + "<HEAD><TITLE>" + title
    + "</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"#FDF5E6\">\n"
    + "<CENTER>\n" + "<H1>" + heading + "</H1>\n"
    + "<H2>Information on Your Session:</H2>\n"
    + "<TABLE BORDER=1>\n" + "<TR BGCOLOR=\"#FFAD00\">\n"
    + "  <TH>Info Type<TH>Value\n" + "<TR>\n"
    + "  <TD>ID\n" + "  <TD>" + session.getId() + "\n"
    + "<TR>\n" + "  <TD>Creation Time\n" + "  <TD>"
    + new Date(session.getCreationTime()) + "\n" + "<TR>\n"
    + "  <TD>Time of Last Access\n" + "  <TD>"
    + new Date(session.getLastAccessedTime()) + "\n"
    + "<TR>\n" + "  <TD>Number of Previous Accesses\n"
    + "  <TD>" + accessCount + "\n" + "</TABLE>\n"
    + "</CENTER></BODY></HTML>");
    }
    }
      

  5.   

    楼主不知道你到底要问什么
    楼主这个程序根本没有你说的那个情况
    只要你不闭浏览器
    你request.getSession()都是原来Session
    你把这个网页发布一下 刷新几次看看
      

  6.   

    计算客户访问次数一般写在过滤器filter里。。
    另外,没听懂你的问题。。
      

  7.   

    恩 用 Filter 做比较好啊
      

  8.   

    问题已经解决,
    工程文件名为
    "Servlet&JSP"
    结果导致session无法回传
    去掉符号&就行了
    原因研究中...