为了账号安全,请及时绑定邮箱和手机立即绑定

Servlet里向Session里放变量,在jsp中取数据的问题

Servlet里向Session里放变量,在jsp中取数据的问题

应龙 2016-08-18 12:46:10
servlet中 doGet和doPost都执行doPostpublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { BufferedImage bi = new BufferedImage(68,22,BufferedImage.TYPE_INT_RGB);  Graphics g = bi.getGraphics(); Color c = new Color(200,150,255); g.setColor(c); g.fillRect(0, 0, 68,22); char[] code = "ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789".toCharArray(); Random r= new Random(); int len = code.length,index; StringBuffer sb = new StringBuffer(); for(int i =0; i < 4; i ++){ index = r.nextInt(len); g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255))); g.drawString(code[index] + "", (i*15)+3,18 ); sb.append(code[index]); } request.getSession().setAttribute("picode", sb.toString()); ImageIO.write(bi,"jpg",response.getOutputStream()); }jsp中<form action="ls" method = "get">    <input type="text" id = "text1" name ="code" />    <img  id="img1" alt="验证码" src="<%=request.getContextPath() %>/is" />    <a href="javascript:reCode()">看不清楚,换一张</a>    <br/>    验证码:<%=(String)session.getAttribute("picode") %>    <input type="submit" id="btn1" value="验证"/>    </form>这里第一次是在页面显示"验证码:null"之后每一次显示的验证码都是上一次的验证码比如这次显示的图片是:809Y 验证码:null下一次就是图片是:8278 验证码:809Y这是什么原因。不太明白。
查看完整描述

3 回答

?
qq_独行_者_1

TA贡献1条经验 获得超0个赞


你这这个页面执行实际不对,应该在打开这个页面之前先执行验证码。然后页面显示的时候才会显示session里面的

查看完整回答
反对 回复 2016-08-18
?
yemaa

TA贡献77条经验 获得超14个赞


=(String)session.getAttribute("picode")这个会先执行,然后在执行=request.getContextPath() %>/is;可以测试的

加个for循环你就可以看到是哪个先执行

for(int i=0;i<1000000;i++){
            System.out.println(i);
        }
        request.getSession().setAttribute("picode", sb.toString());

        ImageIO.write(bi,"jpg",response.getOutputStream());

查看完整回答
反对 回复 2016-08-18
  • 应龙
    应龙
    那怎么解决那,要改执行顺序吗?
?
HansonQ

TA贡献223条经验 获得超56个赞

你这这个页面执行实际不对,应该在打开这个页面之前先执行验证码。然后页面显示的时候才会显示session里面的

查看完整回答
反对 回复 2016-08-18
  • 3 回答
  • 0 关注
  • 2999 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信