Response验证码案例 January 27,2020

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>验证码点击切换</title>
    <script>
        /*
        分析:
            点击超链接或者图片,需要换一张
            1.给超链接和图片绑定单击事件
            2.重新设置图片的src属性值
     */
        window.onload=function () {//加载完毕后
            var img = document.getElementById("checkCode");
            img.onclick = function () {//绑定单击事件
                //加时间戳 欺骗服务器
                var date = new Date().getTime();
                img.src="/order7_Request_Response_war_exploded/checkCodeServlet?"+date;
            }

            var a = document.getElementById("change");
            a.onclick = function () {
                //加时间戳 欺骗服务器
                var date = new Date().getTime();
                img.src="/order7_Request_Response_war_exploded/checkCodeServlet?"+date;
            }
        }

    </script>
</head>
<body>

    <img id="checkCode" src="/order7_Request_Response_war_exploded/checkCodeServlet">
    <a id="change" href="">看不清?换一张</a>
</body>
</html>
package web.response;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

/**
    验证码 案例

 */
@WebServlet( "/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.创建一个对象,在内存中 存放图片
        int width = 100;
        int heigth = 50;
        BufferedImage image = new BufferedImage(width,heigth,BufferedImage.TYPE_INT_RGB);
        //2.美化图片
            //2.1填充背景色
        Graphics graphics = image.getGraphics();//画笔对象
        graphics.setColor(Color.PINK);//设置画笔颜色
        graphics.fillRect(0,0,width,heigth);//填充矩形
            //2.2画边框
        graphics.setColor(Color.BLUE);
        graphics.drawRect(0,0,width-1,heigth-1);//因为画笔有1px  所以要减一
            //2.3填写验证码
        String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        Random random = new Random();
        for (int i = 1; i <=4 ; i++) {
            int index = random.nextInt(str.length());
            graphics.drawString(str.charAt(index)+"",width/5*i,heigth/2);
        }
            //2.4画干扰线
        graphics.setColor(Color.green);
        for (int i = 0; i <10 ; i++) {
            int x1 = random.nextInt(width);
            int x2 = random.nextInt(width);
            int y1 = random.nextInt(heigth);
            int y2 = random.nextInt(heigth);
            graphics.drawLine(x1,y1,x2,y2);
        }
        //3.将图片输出至页面展示
        ImageIO.write(image,"jpg",response.getOutputStream());

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

原文地址:https://www.cnblogs.com/yyanghang/p/12236027.html

时间: 2024-11-02 23:42:25

Response验证码案例 January 27,2020的相关文章

Session &amp; Cookie登录案例 January 27,2020

## 案例:验证码 1. 案例需求: 1. 访问带有验证码的登录页面login.jsp 2. 用户输入用户名,密码以及验证码. * 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误 * 如果验证码输入有误,跳转登录页面,提示:验证码错误 * 如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您 2. 分析: package domain; /** * 用户 实体类 */ public class User { private int id; private S

文件下载案例 January 27,2020

## 案例: * 文件下载需求: 1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载 * 分析: 1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析,则弹出下载提示框.不满足需求 2. 任何资源都必须弹出下载提示框 3. 使用响应头设置资源的打开方式: * content-disposition:attachment;filename=xxx * 步骤: 1. 定义页面,编辑超链接href属性,指向Servlet,传递资源名称filename

Java基于springMVC的验证码案例

1 ``` 2 Java验证码案例(基于springMVC方式) 3 4 验证码工具类 5 package com.ekyb.common.util; 6 7 import java.awt.Color; 8 import java.awt.Font; 9 import java.awt.Graphics; 10 11 import java.awt.image.BufferedImage; 12 import java.util.ArrayList; 13 import java.util.A

asp.net一般处理程序(.ashx)动态生成验证码案例。

{使用一般处理程序动态生成验证码} 1.新建WebSite项目,添加一般处理程序命名为  yzm.ashx,添加如下代码: public void ProcessRequest(HttpContext context)    {   //将context.Response.ContentType = "text/plain";修改为context.Response.ContentType = "image/JPEG";        context.Response

Response January 27,2020

## Response对象 * 功能:设置响应消息 1. 设置响应行 1. 格式:HTTP/1.1 200 ok 2. 设置状态码:setStatus(int sc) 2. 设置响应头: setHeader(String name, String value) 3. 设置响应体: * 使用步骤: 1. 获取输出流 * 字符输出流:PrintWriter getWriter() * 字节输出流:ServletOutputStream getOutputStream() 2. 使用输出流,将数据输出

Java 之 Response 发送验证码案例

定义一个 Servlet 用来在内存中生成 二维码图片,并向浏览器页面输出. 1 import javax.imageio.ImageIO; 2 import javax.servlet.ServletException; 3 import javax.servlet.annotation.WebServlet; 4 import javax.servlet.http.HttpServlet; 5 import javax.servlet.http.HttpServletRequest; 6 i

HTTP协议 January 27,2020

## HTTP协议:一.请求消息:客户端发送给服务器端的数据 * 数据格式: 1. 请求行 2. 请求头 3. 请求空行 4. 请求体 二.响应消息:服务器端发送给客户端的数据 * 数据格式: 1. 响应行 1. 组成:协议/版本 响应状态码 状态码描述 2. 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态. 1. 状态码都是3位数字 2. 分类: 1. 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码 2. 2xx:成功.代表:200 3. 3xx:

Session January 27,2020

## Session:主菜 一.概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中.HttpSession 二.快速入门: 1. 获取HttpSession对象: HttpSession session = request.getSession(); 2. 使用HttpSession对象: Object getAttribute(String name) void setAttribute(String name, Object value) void remo

ES &amp; JSTL January 27,2020

## JSP: 一.指令 * 作用:用于配置JSP页面,导入资源文件 * 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> * 分类: 1. page : 配置JSP页面的 * contentType:等同于response.setContentType() 1. 设置响应体的mime类型以及字符集 2. 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集) * import:导包 *