JAVA登录验证码的实现
2018-03-14 21:42
507 查看
对于登录验证码,相信大家都不陌生,在一般的网站的登录时都会要求你输入验证码,这样可以有效保护你的账户的安全,防止黑客无限尝试登录暴力破解密码,也可以减少网站的垃圾数据。下面我们来使用java servlet来实现登录验证码的功能。
首先创建一个web项目,我们这里给出一个很简陋的jsp页面进行前端展示,主要是为了实现验证的额功能。下面贴出代码:
index.jsp:
下面有两个servlet,在ImageServlet中我们会画出验证码图片,VerifyServlet中实现验证码的验证,看看前端提交过来的数据是否正确。
ImageServlet.java:
VerifyServlet.java:
最后是web.xml配置文件:
至此,我们已经实现了验证码的验证功能,还有很多种方式来实现验证码功能,这里就使用servlet来实现,希望对大家有用。
首先创建一个web项目,我们这里给出一个很简陋的jsp页面进行前端展示,主要是为了实现验证的额功能。下面贴出代码:
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> function reload(){ var time=new Date().getTime(); document.getElementById("code").src="<%=request.getContextPath()%>/servlet/ImageServlet?time="+time; } </script> </head> <body> <form action="<%=request.getContextPath()%>/servlet/VerifyServlet" method="get"> 验证码:<input type="text" name="verifyCode" /> <img id="code" alt="验证码" src="<%=request.getContextPath()%>/servlet/ImageServlet"/> <a href="javascript:reload();">看不清楚</a> <input type="submit" value="提交"/> </form> </body> </html>
下面有两个servlet,在ImageServlet中我们会画出验证码图片,VerifyServlet中实现验证码的验证,看看前端提交过来的数据是否正确。
ImageServlet.java:
package cn.just; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ImageServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { BufferedImage bi=new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB); Graphics g=bi.getGraphics(); Color c=new Color(200, 150, 255); g.setColor(c); g.fillRect(0, 0, 68, 22); char[] ch="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray(); Random r=new Random(); StringBuffer buffer=new StringBuffer(); int len=ch.length,index; for(int i=0;i<4;i++){ index=r.nextInt(len); g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255))); g.drawString(ch[index]+"", (i*15)+3, 18); buffer.append(ch[index]); } req.getSession().setAttribute("verifyCode", buffer.toString()); ImageIO.write(bi, "JPG", resp.getOutputStream()); } }
VerifyServlet.java:
package cn.just; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class VerifyServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String code=req.getParameter("verifyCode"); String verifyCode=(String) req.getSession().getAttribute("verifyCode"); resp.setContentType("text/html;charset=UTF-8"); PrintWriter out=resp.getWriter(); if(code.equals(verifyCode)){ out.println("验证码正确"); System.out.println("验证码正确"); }else{ out.println("验证码错误"); } out.flush(); out.close(); } }
最后是web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Servlet_VerifyCode</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>cn.just.ImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ImageServlet</servlet-name> <url-pattern>/servlet/ImageServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>VerifyServlet</servlet-name> <servlet-class>cn.just.VerifyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>VerifyServlet</servlet-name> <url-pattern>/servlet/VerifyServlet</url-pattern> </servlet-mapping> </web-app>
至此,我们已经实现了验证码的验证功能,还有很多种方式来实现验证码功能,这里就使用servlet来实现,希望对大家有用。
相关文章推荐
- javaweb 实现验证码登录
- java登录验证码实现代码
- Java中SSM+Shiro系统登录验证码的实现方法
- java登录验证码实现代码
- Java实现在登录时验证验证码并在登录后记住用户名
- java 实现QQ自动登录(带验证码)
- JAVA验证码登录实现类
- 登录验证码JAVA代码实现
- java spring 实现登录页面添加验证码
- Java学习日记9:登录时验证码的功能以及实现
- java实现各种密码破解---包括wifi,登录密码,验证码等等。
- [置顶] java实现登录验证码
- java实现登录页面的验证码功能
- java登录验证码实现代码
- Java实现登录界面的验证码总结
- javaweb登录验证码的实现方法
- java 登录验证码实现类
- java实现简单的登录验证码 4000
- java实现自动登录无验证码登录后台并保持会话状态持续监控固定页面信息。
- javaweb登录验证码的实现