检查choose.jsp中session.getAttribute("..")是否正确

解决方案 »

  1.   

    文件头上加:
    response.setHeader("Pragma","No-cache"); 
    response.setHeader("Cache-Control","no-cache"); 
    response.setDateHeader("Expires", 0);
      

  2.   

    choose.jsp 文件获取的值是随我得选择改变而变化的,是正确的。
    可就是writeinfo.jsp 通过session.getAttribute("..")获取的值始终是第一次的值,上面的方法我都试过了呀!
      

  3.   

    session.setAttribute("...",...);后把它OUT出来,然后运行多次,看每次都OUT出来都一样吗?这样你就知道错在哪里了?
      

  4.   

    choose.jsp 用以获取 html 文件中的选项值: 
     
    <%@ page contentType="text/html;charset=gb2312" %>  
    <%@ page import="java.io.*" session="true" autoFlush="true"%>
    <%response.setHeader("Pragma","No-cache"); 
      response.setHeader("Cache-Control","no-cache"); 
      response.setDateHeader("Expires", 0);
    %>
    <html>
    <head> 
    <title>dir</title>  
    <%  
    String  Dir=null; 
            Dir=request.getParameter("foldheader"); 
    if(session.getAttribute("foldheader")==null) session.setAttribute("foldheader",Dir);String  subname=null;
            subname=request.getParameter("sub");
    if(subname!=null){if(session.getAttribute("sub")==null) session.setAttribute("sub",subname);}String  subsubname=null;
            subsubname=request.getParameter("subsub");
    boolean subsubnameChecked=request.getParameter("subsub")!=null;
    String checkOr;
    if(subsubnameChecked==true) 
     {checkOr="yes";
      if(session.getAttribute("subsub")==null) session.setAttribute("subsub",subsubname);
      
     }
    else {checkOr="no";}
    if(session.getAttribute("ifChecked")==null) session.setAttribute("ifChecked",checkOr);
    %>
    <jsp:forward page="showtree.jsp"/>
    </body>
    </html>writeinfo.jsp 提取刚才由 choose.jsp 设置的 session 变量值:<%@ page session="true" autoFlush="true"%>
    <%@ page contentType="text/HTML;charset=gb2312" %>
    <%response.setHeader("Pragma","No-cache"); 
      response.setHeader("Cache-Control","no-cache"); 
      response.setDateHeader("Expires", 0);
    %>
    <jsp:useBean id="transl" scope="session" class="regchk.Translate"/> <HTML>
    <HEAD>
    <TITLE>
    将文件信息写入数据库
    </TITLE>
    </HEAD>
    <BODY>
    <%@ page language = "java"%>
    <%@ page import = "java.util.*"%>
    <%@ page import = "java.io.*"%>
    <%@ page import = "javax.servlet.http.*"%>
    <%@ page import = "javax.servlet.*"%>
    <%@ page import = "java.sql.*"%>
    <%   
       String prelocation=null,
              location=null,
              branch=null,
              branch_conv=null,
              category=null,
              category_conv=null,
              subcategory=null,
              subcategory_conv=null;
              
              
              
        branch=(String)session.getAttribute("foldheader");
        branch_conv=new String(branch.getBytes("iso8859-1"),"GBK");
        category=(String)session.getAttribute("sub");
        category_conv=new String(category.getBytes("iso8859-1"),"GBK");   
       String ifChecked=(String)session.getAttribute("ifChecked");
       if(ifChecked.equals("yes"))
       {  subcategory=(String)session.getAttribute("subsub");
          subcategory_conv=new String(subcategory.getBytes("iso8859-1"),"GBK");   
          prelocation="uploadreal/"+branch+"/"+category+"/"+subcategory;
       }
       else 
       { prelocation="uploadreal/"+branch+"/"+category;
       }
         location=transl.c(prelocation);
       String Year=(String)request.getParameter("year");
       String Month=(String)request.getParameter("month");
       String Date=(String)request.getParameter("date");
       if(session.getAttribute("Year")==null) session.setAttribute("Year",Year);
       if(session.getAttribute("Month")==null) session.setAttribute("Month",Month);
       if(session.getAttribute("Date")==null) session.setAttribute("Date",Date);
       
       String docuname=branch_conv+"_"+category_conv+"_"+keyword+"_"+Year+Month+Date+type;
       String docuname1=branch+"_"+category+"_"+keyword1+"_"+Year+Month+Date+type;
       String realname=transl.c(docuname1);      
       String type=(String)request.getParameter("type");
       String keyword1=(String)request.getParameter("keyword");
       if(session.getAttribute("keyword")==null) session.setAttribute("keyword",keyword1);
       String keyword=new String(keyword1.getBytes("iso8859-1"),"GBK");
       String author=(String)request.getParameter("author");
       String author_conv=new String(author.getBytes("iso8859-1"),"GBK");
       String serial=(String)request.getParameter("serial");
       String serial_conv=new String(serial.getBytes("iso8859-1"),"GBK");
     String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
     String connectString = "jdbc:odbc:DBTEST";
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     Connection conn;
     ResultSet rs;
    String  sql = "INSERT INTO document(location,docuname,realname,draftdate,author,serial) VALUES('"+location+"','"+docuname+"','"+realname+"',GETDATE(),'"+author_conv+"','"+serial_conv+"')";    conn=DriverManager.getConnection(connectString); 
        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sql);    
    %>
    摘要信息提交成功!请选择要上传的文件:<br>
    <br>
    <jsp:forward page="select.htm"/>
    </BODY>
    </HTML>
    出现的问题是:
    无论我后来在html文件中选取什么选项,branch、category、subcategory的值都保持为choose.jsp第一次从html文件中获取的值。
    谢谢高手指点了。
      

  5.   

    答 kongxiangli(笑看红尘):
     每次都OUT出来都不一样,看来 session.setAttribute("...",...); 这个地方是没有问题的。
      

  6.   

    >if(session.getAttribute("foldheader")==null) 
    >  session.setAttribute("foldheader",Dir);
    第一次从html文件中获取的值一直都在session, session.getAttribute("foldheader")!=null, 所以第二, 三, 四....次沒有行session.setAttribute("foldheader",Dir);你明白什么是session 嗎?