首页>代码>spring mvc开发基本的权限管理系统源码分享>/pelDem/src/com/flf/controller/SecCodeController.java
package com.flf.controller;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.flf.util.Const;

/**
 * @author Administrator
 * 验证码生成类
 */
@Controller
@RequestMapping("/code")
public class SecCodeController {

	@RequestMapping
	public void generate(HttpSession session,HttpServletResponse response){
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		String code = drawImg(output);
		session.setAttribute(Const.SESSION_SECURITY_CODE, code); //放入session
		//System.out.println(session.getAttribute(Const.SESSION_SECURITY_CODE));
		try {
			ServletOutputStream out = response.getOutputStream();
			output.writeTo(out);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private String drawImg(ByteArrayOutputStream output){
		String code = "";
		for(int i=0; i<4; i++){
			code += randomChar();
		}
		int width = 70;
		int height = 25;
		BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
		Font font = new Font("Times New Roman",Font.PLAIN,20);
		Graphics2D g = bi.createGraphics();
		g.setFont(font);
		Color color = new Color(66,2,82);
		g.setColor(color);
		g.setBackground(new Color(226,226,240));
		g.clearRect(0, 0, width, height);
		FontRenderContext context = g.getFontRenderContext();
		Rectangle2D bounds = font.getStringBounds(code, context);
		double x = (width - bounds.getWidth()) / 2;
		double y = (height - bounds.getHeight()) / 2;
		double ascent = bounds.getY();
		double baseY = y - ascent;
		g.drawString(code, (int)x, (int)baseY);
		g.dispose();
		try {
			ImageIO.write(bi, "jpg", output);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return code;
	}
	
	private char randomChar(){
		Random r = new Random();
		String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789";
		return s.charAt(r.nextInt(s.length()));
	}
}
最近下载更多
PISCESPLUS  LV4 2024年9月3日
微信网友_6906962132258816  LV7 2024年4月21日
2036495585  LV9 2023年9月25日
what_the_fo  LV5 2023年4月7日
微信网友_6248713511227392  LV11 2022年12月5日
2273117187  LV5 2022年6月15日
Start1  LV15 2022年3月8日
ssh123  LV10 2021年7月5日
gamal233  LV5 2021年6月23日
wangwenzhong  LV9 2021年5月7日
最近浏览更多
AprilZk  LV3 2024年12月11日
PISCESPLUS  LV4 2024年9月3日
微信网友_6906962132258816  LV7 2024年4月21日
WBelong  LV8 2023年12月26日
2036495585  LV9 2023年9月25日
多加两块钱  LV4 2023年6月14日
1379585889  LV11 2023年6月7日
what_the_fo  LV5 2023年4月7日
zhexiu 2023年1月15日
暂无贡献等级
微信网友_6248713511227392  LV11 2022年12月5日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友