jsp使用servlet实现验证码
来源:互联网 发布:趴在桌上睡觉知乎 编辑:程序博客网 时间:2024/06/05 09:24
在进行表单设计中,验证码的增加恰恰可以实现是否为“人为”操作,增加验证码可以防止网站数据库信息的冗杂等...
现在,小编将讲述通过servlet实现验证码:
验证码作为一个图片,在页面中为“画”出来的,它是如何画出来的呢?
<生成图片>
{
生成图片的类:
1.BufferedImage图像数据缓冲区
2.Graphics绘制图片
3.color获取颜色
4.Random获取随机数
5.ImageIO输出图片
}
///////////////////////////////////////////////////////////////////////////
<生成验证码图片>
1.在index.jsp中写入以下代码
<form action="<%= request.getContextPath()%>/servlet/LoginServlet" method="get" > 验证码:<input type="text" name="checkCode"/> <img alt="验证码" id="imagecode" src="<%= request.getContextPath()%>/servlet/ImageServlet"/> <a href="javascript:reloadCode();">看不清楚</a><br> <input type="submit" value="提交"> </form>
2.在src中创建ImageServlet类
1 public class ImageServlet extends HttpServlet{ 2 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ 3 //这个方法实现验证码的生成 4 BufferedImage bi=new BufferedImage(68, 22,BufferedImage.TYPE_INT_RGB);//创建图像缓冲区 5 Graphics g=bi.getGraphics(); //通过缓冲区创建一个画布 6 Color c=new Color(200,150,255); //创建颜色 7 /*根据背景画了一个矩形框 8 */ 9 g.setColor(c);//为画布创建背景颜色10 g.fillRect(0, 0, 68,22); //fillRect:填充指定的矩形11 12 char[] ch="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();//转化为字符型的数组13 Random r=new Random();14 int len=ch.length;15 int index; //index用于存放随机数字16 StringBuffer sb=new StringBuffer();17 for(int i=0;i<4;i++)18 {19 index=r.nextInt(len);//产生随机数字20 g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255))); //设置颜色21 g.drawString(ch[index]+"",(i*15)+3, 18);//画数字以及数字的位置22 sb.append(ch[index]);23 }24 request.getSession().setAttribute("piccode",sb.toString()); //将数字保留在session中,便于后续的使用25 ImageIO.write(bi, "JPG", response.getOutputStream()); 26 }
3.在WEB-INF进行配置文件
1 <servlet>2 <servlet-name>ImageServlet</servlet-name>3 <servlet-class>code.sam.ImageServlet</servlet-class>4 </servlet>5 6 <servlet-mapping>7 <servlet-name>ImageServlet</servlet-name>8 <url-pattern>/servlet/ImageServlet</url-pattern>9 </servlet-mapping>
------华丽分割线-------
<输入信息与图片中的数字进行校验>
1.创建LoginServlet类
1 public class LoginServlet extends HttpServlet { 2 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException 3 //用于验证验证码 4 { 5 String piccode=(String) request.getSession().getAttribute("piccode"); 6 String checkCode=request.getParameter("checkCode"); //取值 7 //checkCode=checkCode.toUpperCase(); //把字符全部转换为大写的(此语句可以用于验证码不区分大小写) 8 response.setContentType("text/html;charset=gbk");//解决乱码问题 9 PrintWriter out=response.getWriter();10 if(checkCode.equals(piccode))11 {12 out.println("验证码输入正确!");13 }14 else15 {16 out.println("验证码输入错误!!!");17 }18 out.flush();//将流刷新19 out.close();//将流关闭20 }
2.配置WEB-INF
1 <servlet>2 <servlet-name>LoginServlet</servlet-name>3 <servlet-class>code.sam.LoginServlet</servlet-class>4 </servlet>5 6 <servlet-mapping>7 <servlet-name>LoginServlet</servlet-name>8 <url-pattern>/servlet/LoginServlet</url-pattern>9 </servlet-mapping>
------华丽分割线-----
在点击页面中的看不清楚时,需要进行刷新,在页面中书写一段JS代码
1 function reloadCode()2 {3 var time=new Date().getTime();4 document.getElementById("imagecode").src="<%= request.getContextPath()%>/servlet/ImageServlet?d="+time;5 }
****************************************************
代码全部完成
结果如下图***
0 0
- 使用JSP+Servlet实现图片验证码
- jsp使用servlet实现验证码
- jsp+Servlet验证码实现
- jsp+servlet实现验证码
- Servlet+JSP 实现验证码
- jsp+servlet实现验证码
- 【JSP学习笔记】使用Servlet实现网页验证码
- JSP验证码大全之Servlet实现
- jsp+servlet实现验证码功能
- jsp servlet 实现登陆验证码
- JSP+Servlet验证码的实现
- JSP Servlet 实现验证码及刷新
- Java+Servlet+Jsp实现验证码
- JSP+Servlet实现图片验证码
- JSP + Servlet实现登录验证码
- servlet与jsp实现动态验证码
- servlet+jsp实现验证码登录
- 使用Servlet实现验证码
- [js]Javascript中各种宽高、位置总
- 2017浙江省选一试第三天游记
- Redis-3.2.8的集群安装部署
- [字符串操作]poj 1274 展开字符串
- QTableWidget操作之上移,下移,删除
- jsp使用servlet实现验证码
- 移动端 Tips插件代码
- Nginx的反向代理,负载均衡,缓存,URL重写以及读写分离
- 深入PHP面向对象、模式与实践——高级特性(5)
- HTML5之HTML+CSS3技术介绍
- Unity Shader Example 26 (Texture2DArray)
- 4种数据源
- L1-007. 念数字
- C++知识文档六_对象常量_静态成员_友元_抽象类