//在登录action中set属性
//获得一个新的session
HttpSession session = request.getSession();
session.setAttribute("seq", seq);//然后再Filter中判断Session中的属性
HttpSession session = request.getSession(false);//打印weblogic.servlet.internal.session.MemorySessionData@e03f50
System.out.println("request.getSession() = "+request.getSession());
//打印weblogic.servlet.internal.session.MemorySessionData@e03f50
System.out.println("request.getSession(false) = "+request.getSession(false));//打印null
System.out.println("session() = "+request.getSession().getAttribute("seq")); 
//打印null
System.out.println("session(false) = "+request.getSession(false).getAttribute("seq")); 
无语了。突然出现这情况。请教高手~

解决方案 »

  1.   

    如果session存在,并且seq不为null。那个第一次打印应该有seq值。第二次也有值。
    如果session不存在,则2者都没有值。
      

  2.   

    seq 是否 null ? O(∩_∩)O哈!
      

  3.   

    LZ,你现在什么意思?每次request.getSession();一次就相当弄了一个session出来
    request.getSession();相当于request.getSession(true);是没有会话对应session的话新建一个session出来,如果是request.getSession(false的话,没有的话返回null);
      

  4.   

    为何不打印下
    //然后再Filter中判断Session中的属性
    HttpSession session = request.getSession(false);这个 session  看看呢 也许他是null?
      

  5.   

    4楼书的甚是 
    如果没有session
    request.getSession(); 会新建一个session
      

  6.   


    System.out.println("request.getSession(false) = "+request.getSession(false));放前面输出看看
      

  7.   


    你们说的我都知道。seq是从数据库查出来的。有值。刚打印完。下面是代码//登录Action
    public ActionForward longinSystem(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response){

    String staff_id = request.getParameter("loginName");//用户名
    String staff_password = request.getParameter("loginPassword");//密码

    System.out.println("用户名="+staff_id);
    System.out.println("密  码="+staff_password); //获得一个新的session
    HttpSession session = request.getSession(); if(isExist){
    Map<String, String> map = imp.getUserMsg(staff_id, staff_password); String seq = map.get("staff_seq");
    String name = map.get("staff_name");
    String group_id = map.get("staff_group");
    String group_name = map.get("group_name");
                            //seq不是
    System.out.println("seq = "+seq);

    session.setAttribute("seq", seq);
    session.setAttribute("staff_name", name);
    session.setAttribute("group_id", group_id);
    session.setAttribute("group_name", group_name);

    return mapping.findForward("loginSuccess");
    }else{
    request.setAttribute("msg", "用户名或密码错误.");
    return mapping.findForward("loginFail");
    }//Filter
    public void doFilter(ServletRequest servRequest, ServletResponse servResponse,
    FilterChain chain) throws IOException, ServletException {
    boolean isLogin = true;
    HttpServletRequest request = (HttpServletRequest) servRequest;
    HttpServletResponse response = (HttpServletResponse) servResponse;
    //设置统一编码
    request.setCharacterEncoding("gb2312");

    String uri = request.getRequestURI();

    int index = uri.lastIndexOf("/");
    String value = uri.substring(index + 1); System.out.println("PermitFilter ------------> mehtod is doFilter "+value);

    if(!(value.equals(""))){
    if(!(value.equals("index.jsp"))){
    if(!(value.equals("top2.jsp"))){
    if(!(value.equals("LeftCondition.jsp"))){
    if(!(value.equals("control.htm"))){
    if(!(value.equals("right.jsp"))){
    if(!(value.equals("login.do"))){

    HttpSession session = request.getSession(false);

    System.out.println("request.getSession() = "+request.getSession());
    System.out.println("request.getSession(false) = "+request.getSession(false));
    System.out.println("session() = "+request.getSession().getAttribute("seq"));
    System.out.println("session(false) = "+request.getSession(false).getAttribute("seq"));

    if(session != null){
    String seq = (String) session.getAttribute("seq");
    if(seq == null){
    isLogin = false;
    }else{
    isLogin = true;
    }
    }else{
    isLogin = false;
    }


    }
    }
    }
    }
    }
    } if(!(isLogin)){
    StringBuffer url = new StringBuffer(124);
    url.append("/index.jsp"); response.getWriter().print("<script>parent.window.location.href = 'index.jsp';</script>");
    }else{
    chain.doFilter(servRequest, response);
    }}/*
    request.getSession();等同于request.getSession(true);
    如果是空则创建一个Session。request.getSession(false);
    如果返回的Session是空则是null
    */
      

  8.   

    在Action中可以打印出seq。 也把它放到Session中去了。
    而在Filter中取的时候就是空了。并且我也明确指定了。当请求时login.do的时候不做过滤。
      

  9.   

    那你只好debug跟踪下了 看在哪丢的 一段一段的调试 总能找出来的