我用JSP写了一个验证码,在JSP页面中存入session,登录页面SRC=“images.jsp”,submit到servlet中处理。

在servlet中与数据库匹配,账号密码是否有效,验证码是否正确,可是验证码session中取不到,然后我建了一个测试页面,登陆信息submit到jsp页面,sessio... 在servlet中与数据库匹配,账号密码是否有效,验证码是否正确,可是验证码session中取不到,然后我建了一个测试页面,登陆信息submit到jsp页面,session中的验证码就取到了。 展开
 我来答
leandzgc
2012-08-12 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:167
采纳率:100%
帮助的人:58.5万
展开全部
不知道你页面怎么写的,既然测试页面可以获得那么应该就没问题。你可以试着把验证码的内容或名字保存到一个隐藏字段里<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");这样写吧?编译错误?
keikeik
2012-08-12 · TA获得超过180个赞
知道答主
回答量:279
采纳率:100%
帮助的人:132万
展开全部
你在生成的那个页面必须先存到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 语句判断
追问
已经解决啦,就是我以为jsp页面中取session和后台取一样,少写了一个req.getSession().
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式