首页>代码>spring mvc maven,websocket在线简单聊天室系统,ace master,extjs>/chatwebsocket/src/main/java/com/chatwebsocket/controller/system/seccode/SecCodeController.java
package com.chatwebsocket.controller.system.seccode; 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.chatwebsocket.controller.base.BaseController; import com.chatwebsocket.util.Const; /** * 登录验证码 * * @author zhangmingjie * @date 2019年4月1日 下午4:36:45 * @version 1.0 */ @Controller public class SecCodeController extends BaseController { @RequestMapping("/code") public void generate(HttpServletResponse response) { ByteArrayOutputStream output = new ByteArrayOutputStream(); String code = drawImg(output); HttpSession session = getRequest().getSession(); session.setAttribute(Const.SESSION_SECURITY_CODE, code); try { ServletOutputStream out = response.getOutputStream(); output.writeTo(out); out.close(); } catch (IOException e) { } } /** * 绘制图形 * * @author zhangmingjie * @param output * @return * @date 2019年4月1日 下午4:37:43 * @version 1.0 */ private String drawImg(ByteArrayOutputStream output) { String code = ""; StringBuffer sb = new StringBuffer(); for (int i = 0; i < 4; i++) { sb.append(randomChar()); } code = sb.toString(); int width = 75; int height = 25; BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); Graphics2D g = bi.createGraphics(); Font font = new Font("Times New Roman", Font.PLAIN, 20); g.setFont(font); g.setColor(new Color(66, 2, 82)); 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) { e.printStackTrace(); } return code; } /** * 绘制字符 * * @author zhangmingjie * @return * @date 2019年4月1日 下午4:38:09 * @version 1.0 */ private char randomChar() { Random r = new Random(); String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789"; return s.charAt(r.nextInt(s.length())); } }
最近下载更多
qq970040477 LV24
5月26日
80730176 LV7
2023年12月8日
云淡风轻jh LV10
2023年11月28日
Tg171017 LV12
2023年2月18日
lironggang LV38
2023年2月16日
nanaland LV9
2023年2月9日
yangguang LV8
2022年5月20日
xiex909 LV27
2022年5月18日
17岁的孩子想糖吃 LV7
2021年12月31日
137455054 LV9
2021年12月2日
最近浏览更多
1561361683 LV1
10月15日
xxxyyyddd
10月8日
暂无贡献等级
xz2295015285
10月8日
暂无贡献等级
蓝蓝蓝说的
10月8日
暂无贡献等级
c12s34g
10月8日
暂无贡献等级
3263394665 LV9
8月24日
qq970040477 LV24
5月26日
WBelong LV8
4月2日
dafeiyu LV10
3月1日
lilong007 LV22
3月1日