我用JSP写了一个验证码,在JSP页面中存入session,登录页面SRC=“images.jsp”,submit到servlet中处理。
在servlet中与数据库匹配,账号密码是否有效,验证码是否正确,可是验证码session中取不到,然后我建了一个测试页面,登陆信息submit到jsp页面,sessio...
在servlet中与数据库匹配,账号密码是否有效,验证码是否正确,可是验证码session中取不到,然后我建了一个测试页面,登陆信息submit到jsp页面,session中的验证码就取到了。
展开
2个回答
展开全部
不知道你页面怎么写的,既然测试页面可以获得那么应该就没问题。你可以试着把验证码的内容或名字保存到一个隐藏字段里<input type="hidden" name="myImg" />这样你去后面直接获取则个隐藏的字段值就行了,试试?
追问
images.jsp :
session.setAttribute("rand", sRand); //sRand 就是随机产生的4位验证码
loginservlet.java:
String rand=(String)session.getAttribute("rand"); // session报错。
同样这句话,我写在一个测试的test.jsp页面里,就取到值了。
form表单submit,一个就是发向XML配置的loginservlet,一个发向test.jsp,前者取session报错,后者没问题。 一直找不到问题在哪里。
追答
报什么错?你先按我说的用一个隐藏字段保存那个rand试试。还有一个,后台取值session得用request.getSession().getAttribute("rand");这样写吧?编译错误?
展开全部
你在生成的那个页面必须先存到sesson,然后在验证时,在通过session获取
image.jsp
.....
....
//生成随机字符
String strRand="";
for(int i=0;i<4;i++)
{
String rand = String.valueOf(random.nextInt(10));
strRand+=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.setAttribute("rand",strRand);
g.dispose();
ImageIO.write(image,"JPEG",response.getOutputStream());
String rand = (String)session.getAttribute("rand");//将随机验证码存到session中
log.jsp //验证文件
String yanzhengma=request.getParameter("yanzhengma").trim();//获取用户输入的验证
String rand = (String)session.getAttribute("rand");//从session中读出,
然后在 if 语句判断
image.jsp
.....
....
//生成随机字符
String strRand="";
for(int i=0;i<4;i++)
{
String rand = String.valueOf(random.nextInt(10));
strRand+=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.setAttribute("rand",strRand);
g.dispose();
ImageIO.write(image,"JPEG",response.getOutputStream());
String rand = (String)session.getAttribute("rand");//将随机验证码存到session中
log.jsp //验证文件
String yanzhengma=request.getParameter("yanzhengma").trim();//获取用户输入的验证
String rand = (String)session.getAttribute("rand");//从session中读出,
然后在 if 语句判断
追问
已经解决啦,就是我以为jsp页面中取session和后台取一样,少写了一个req.getSession().
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询