此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【nieliqiang84】截止到2008-07-25 15:57:45的历史汇总数据(不包括此帖):
发帖的总数量:4                        发帖的总分数:171                      每贴平均分数:42                       
回帖的总数量:107                      得分贴总数量:24                       回帖的得分率:22%                      
结贴的总数量:4                        结贴的总分数:171                      
无满意结贴数:0                        无满意结贴分:0                        
未结的帖子数:0                        未结的总分数:0                        
结贴的百分比:100.00%               结分的百分比:100.00%                  
无满意结贴率:0.00  %               无满意结分率:0.00  %                  
敬礼!

解决方案 »

  1.   

    能将Action中Session设置的那段代码拿来看看吗
      

  2.   

    几乎所有的Web开发语言都支持Session功能,Servlet也不例外。 Servlet/JSP中的Session功能是通过作用域(scope)这个概念来实现的。
    是不是作用域(scope)的问题?你看一下。具体文档:http://tech.idv2.com/2007/09/25/session-and-scope/
      

  3.   

    好的我现在把一系列的代码贴出来。首先是登录页面,其中有验证码的,验证码是以网页形式生成了一张图片,而验证码页面中就定义了存储验证码数字 下面是验证码生成的JSP页面<%!
    Color getRandColor(int fc,int bc){//给定范围获得随机颜色
         Random random = new Random();
         if(fc>255) fc=255;
         if(bc>255) bc=255;
         int r=fc+random.nextInt(bc-fc);
         int g=fc+random.nextInt(bc-fc);
         int b=fc+random.nextInt(bc-fc);
         return new Color(r,g,b);
         }
    %>
    <%
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);

    // 在内存中创建图象
    int width=60, height=20;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    // 获取图形上下文
    Graphics g = image.getGraphics();

    //生成随机类
    Random random = new Random();

    // 设定背景色
    g.setColor(getRandColor(200,250));
    g.fillRect(0, 0, width, height);

    //设定字体
    g.setFont(new Font("Times New Roman",Font.PLAIN,18));

    //画边框
    //g.setColor(new Color());
    //g.drawRect(0,0,width-1,height-1);

    // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
    g.setColor(getRandColor(160,200));
    for (int i=0;i<155;i++)
    {
    int x = random.nextInt(width);
    int y = random.nextInt(height);
         int xl = random.nextInt(12);
         int yl = random.nextInt(12);
    g.drawLine(x,y,x+xl,y+yl);
    }

    // 取随机产生的认证码(4位数字)
    String sRand="";
    for (int i=0;i<4;i++){
       String rand=String.valueOf(random.nextInt(10));
       sRand+=rand;
       // 将认证码显示到图象中
       g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
    //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
       g.drawString(rand,13*i+6,16);
    }

    // 将认证码存入SESSION
    session.setAttribute("rand",sRand);
    //session.setAttribute("myname","xiaoqiang");
    // System.out.print("生成的验证码是:"+session.getAttribute("rand")); System.out.println("session id 号是==》"+session.getId());  //我在这里打印出 当前页面里的SessionID // 图象生效
    g.dispose();

    // 输出图象到页面
    ImageIO.write(image, "JPEG", response.getOutputStream());
    out.clear();
    out = pageContext.pushBody();

    %>
    下面是登录页面的代码,一些啰嗦的代码我就省了
     用户帐号: <html:text property="user_id"></html:text>
     用户密码:<html:password property="user_pwd"></html:password>
     验证码:&nbsp;&nbsp;<input type="text"  id="rand" name="rand" value="" size="10">
      <img alt="" src="/yingxinTD/pages/show/image.jsp"/>    这里是验证码输出
    之后提交到Action
    String rand = (String)session.getAttribute("rand");//系统生成的验证码

    String input = request.getParameter("rand"); //用户输入的验证码

    System.out.println(session.getId()); ());  //我在这里打印出 当前的SessionID现在发现 在Action 中的SessionID 和 验证码生成的JSP页面中的 SessionID 是不一样的 这样那么 (String)session.getAttribute("rand")
    获取的验证码字段当然也就为 null 了。
    以上这些问题只有在我发布的时候才会这样。
    现在回到我关于使用 http://www4.yingxin186.com 来访问工程,如果用这种格式就会ID不同,但如果在这个格式的后面再加上工程名去访问就不会了即: http://www4.yingxin186.com/yingxinTD 这样访问就一切正常
    而我要的确不是这样的效果,我想要用户输入 http://www4.yingxin186.com 这个就 能够正常访问,进行操作
      

  4.   


    谢谢你提供的资料,关于Session或其他的作用域我是了解的,只是现在是发布时出现的问题,这个问题没有什么人可以回答,嗨!我现在在当当订购了一本书,还是自己那书来研究吧,很多问题在网上也找不到满意的答案