记之前的生成验证码IDEA生成一个随机数图片后,我们接着插入验证码实现用户登录
编写html代码,实现在页面中显示控件
resp.setCharacterEncoding("utf-8"); //发送utf-8协议
StringBuilder stringbuffer =new StringBuilder(); //定义一个StringBuiler变量
stringbuffer.append("<form action='#' method='post'>"); //from标签,#表示当前窗口,post表示隐藏返回值的内容
stringbuffer.append("<label for='LoginName'>登录名称:</label><input name='LoginName' placeholder='请输入登录名' id='LoginName'><br>"); //定义一个文本标签,登录名
stringbuffer.append("<label for='LoginPwd'>登录密码:</label><input type='password' name='LoginPwd' placeholder='请输入密码' value='' id='LoginPwd'><br>"); //定义一个密码标签
stringbuffer.append("<label for='yzmtext'>验证码:</label><input name='yzmtext' value='' placeholder='请输入验证码' id='yzmtext'><br>"); //定义一个文本标签,验证码
stringbuffer.append("<input type='reset' name='reset' value='取消'>"); //定义一个取消按钮
stringbuffer.append("<input type='submit' name='submit' value='登录'>"); //定义一个登录按钮
stringbuffer.append("</form>");
在Captche类中通过req的getSession().setAttribute()方法,把text的值返回来
String text = StrUtil.randString(4);
req.getSession().setAttribute("code",text);
ImageIO.write(generatePic(250, 150,text), "JPG", sos); //类
在Login类中通过req.getSession().getAttribute()方法接受text的值,其中方法中的字符串必须前后一样,否则会出现传不回text的值
String validCode=(String)req.getSession().getAttribute("code");
再通过Login传回来的值和text的值做比较,如果为验证码和用户输入的值一样,则显示“你好admin”,否则显示验证码错误。
String yzm=req.getParameter("yzmtext");
String msg="";
if(("admin").equals(loginName) && ("1234").equals(loginPwd)&&validCode.equals(yzm)) {
msg= "你好" + loginName;
}
else if(!validCode.equals(yzm)){
msg="验证码错误";
}
else {
msg="账号或密码错误";
}