博主分享免费Java教学视频,B站账号:Java刘哥
分析
生成图片实现类 ImageServlet 类 ① 定义BufferedImage 对象 ② 获得 Graphics 对象 ③ 通过 Random 产生随机验证码信息 ④ 使用 Graphics 绘制图片 ⑤ 记录验证码信息到 session 中 ⑥ 使用 ImageIO 输出图片代码实现
1、新建 web 项目 CheckCode,在 WebContent 下新建 index.jsp index.jsp- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- <script type="text/javascript">
- function reloadCode() {
- //传个时间参数,防止缓存
- var time = new Date().getTime();
- document.getElementById("imageCode").src="<%=request.getContextPath()%>/ImageServlet?d="+time;
- }
- </script>
- </head>
- <body>
- <form action="<%=request.getContextPath()%>/LoginServlet" method="post">
- 验证码:<input type="text" name="checkcode" />
- <img id="imageCode" src="<%=request.getContextPath()%>/ImageServlet" alt="验证码" />
- <a href="javascript:reloadCode();">看不清楚</a> <br />
- <input type="submit" value="提交"/>
- </form>
- </body>
- </html>
- package com.liuyanzhao;
- 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;
- /*
- * @author LiuYanzhao
- */
- public class ImageServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- BufferedImage bi = new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB);
- Graphics g = bi.getGraphics();
- Color c = new Color(200,155,255);
- g.setColor(c);
- g.fillRect(0, 0, 68, 22);
- char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
- Random r = new Random();
- int len = ch.length,index;
- StringBuffer sb = new StringBuffer();
- 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);
- sb.append(ch[index]);
- }
- request.getSession().setAttribute("piccode", sb.toString());
- ImageIO.write(bi, "JPG", response.getOutputStream());
- }
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doGet(request, response);
- }
- }
- package com.liuyanzhao;
- 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;
- /*
- * @author LiuYanzhao
- */
- public class LoginServlet extends HttpServlet{
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String piccode = (String)request.getSession().getAttribute("piccode");
- String checkcode = request.getParameter("checkcode");
- checkcode = checkcode.toUpperCase();//不区分大小写
- response.setContentType("text/html;charset=utf-8");
- PrintWriter out = response.getWriter();
- if(piccode.equals(checkcode)) {
- out.println("验证码输入正确");
- } else {
- out.println("验证码输入错误");
- }
- out.flush();
- out.close();
- }
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doPost(request, response);
- }
- }
- <servlet>
- <servlet-name>ImageServlet</servlet-name>
- <servlet-class>com.liuyanzhao.ImageServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <!-- 映射为 ImageServlet -->
- <servlet-name>ImageServlet</servlet-name>
- <url-pattern>/ImageServlet</url-pattern>
- </servlet-mapping>
- <servlet>
- <servlet-name>LoginServlet</servlet-name>
- <servlet-class>com.liuyanzhao.LoginServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <!-- 映射为 IndexServlet -->
- <servlet-name>LoginServlet</servlet-name>
- <url-pattern>/LoginServlet</url-pattern>
- </servlet-mapping>
- 微信
- 交流学习,有偿服务
- 博客/Java交流群
- 资源分享,问题解决,技术交流。群号:590480292
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏