当前位置: 代码迷 >> Java Web开发 >> 写好了验证码的生成了如何调用
  详细解决方案

写好了验证码的生成了如何调用

热度:156   发布时间:2016-04-16 21:45:41.0
写好了验证码的生成了怎么调用啊
写好了验证码的生成了怎么调用去验证啊,网上有好多其他的实例,但使用的是etmvc,还不太了解,在线等大神,这是写好的,不知道怎么在另一个Controller里怎么调用验证,可以的话jsp的调用也说明下,谢谢
public void execute(HttpServletResponse response,HttpSession session) throws Exception{
//0.创建空白图片
BufferedImage image = new BufferedImage(100,30,BufferedImage.TYPE_INT_RGB);
//1.获取图片画笔
Graphics g = image.getGraphics();
Random r = new Random();
//2.设置画笔颜色
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
//3.绘制矩形的背景
g.fillRect(0, 0, 100, 30);
//4.调用自定义的方法,获取长度为5的字母数字组合的字符串
String number = getNumber(5);
//将图片字符存入session,用于验证码检查使用
session.setAttribute("scode", number);
g.setColor(new Color(0,0,0));
g.setFont(new Font(null,Font.BOLD,24));
//5.设置颜色字体后,绘制字符串
g.drawString(number, 5, 25);
//6.绘制8条干扰线
for(int i=0;i<8;i++){
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255),r.nextInt(255)));
g.drawLine(r.nextInt(100), r.nextInt(30), r.nextInt(100), r.nextInt(30));
}
response.setContentType("image/jpeg");
OutputStream ops = response.getOutputStream();
ImageIO.write(image, "jpeg", ops);
ops.close();
}

private String getNumber(int size){
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
String number = "";
Random r = new Random();
for(int i=0;i<size;i++){
number+=str.charAt(r.nextInt(str.length()));
}
return number;
}

------解决思路----------------------
肯定要先存到SESSION里面呀,当他提交的时候你就再从SESSION里面与他输入的验证码进行对比呀!
------解决思路----------------------
另外一个Controller直接session.getAttribute("scode")获取验证码与输入对比!
------解决思路----------------------
session.getAttribute("scode");  是获取生成的验证码
request.getParameter("scode"); 这个才是获取页面输入的验证码参数

一个是Session一个是request
------解决思路----------------------
每次生成新的验证码 都需要 进行一次set  set之前建议先清空   

session.removeAttribute(attributeName);
  session.setAttribute("scode",“密码”);

------解决思路----------------------
<input name="code" type="text" class="width70" src="getCode.jsp" />

src里面的这个可以填写你Controller的execute路径就可以了。
------解决思路----------------------
引用:
Quote: 引用:

<input name="code" type="text" class="width70" src="getCode.jsp" />

src里面的这个可以填写你Controller的execute路径就可以了。


额,这貌似只是个输入框吧,我的完整路径是src="${ctx}/sys/GetCode/execute",其他页面调用方法都是可以的,路径应该没问题

不好意思,刚才弄错了;应该是这样写,把验证码显示出来!
<img alt="看不清楚,换一张" src="${ctx}/sys/GetCode/execute" onclick="reloadcode();" id="code" style="position:relative;top:1px;left:0px;">
  相关解决方案