首页>代码>ssm+shiro+layui+easyui实现的后台权限管理系统>/RMS/src/main/java/SystemManage/Common/controller/ImageCodeController.java
package SystemManage.Common.controller; import SystemManage.Common.entity.Result; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; /** * 生成/获取验证码 */ @Controller @RequestMapping("imageCode") public class ImageCodeController { Color getRandColor(int fc, int bc) {//给定范围获得随机颜色 Random random = new Random(); if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); } @RequestMapping(value = "/showCode", method = RequestMethod.GET) public void outputImage(HttpServletRequest request, HttpServletResponse response,HttpSession session) { //设置页面不缓存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); // 在内存中创建图象 int width = 60, height = 20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); //生成随机类 Random random = new Random(); // 设定背景色 g.setColor(getRandColor(200, 250)); g.fillRect(0, 0, width, height); //设定字体 g.setFont(new Font("Times New Roman", Font.PLAIN, 18)); //画边框 //g.setColor(new Color()); //g.drawRect(0,0,width-1,height-1); // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160, 200)); for (int i = 0; i < 100; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x, y, x + xl, y + yl); } // 取随机产生的认证码(4位数字) String sRand = ""; for (int i = 0; i < 4; i++) { String rand = String.valueOf(random.nextInt(10)); sRand += rand; // 将认证码显示到图象中 g.setColor(new Color(20 + random.nextInt(110), 20 + random .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.drawString(rand, 13 * i + 6, 16); } // 将认证码存入SESSION session.setAttribute("code", sRand); // 图象生效 g.dispose(); // 输出图象到页面 try { JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream()); encoder.encode(image); } catch (IOException e) { e.printStackTrace(); } } /*获取验证码*/ @RequestMapping(value = "/getCode", method = RequestMethod.POST) public Result getRandCode(HttpSession session) { Result result = new Result(); Object obj= session.getAttribute("code"); result.setObj(obj); return result ; } }
最近下载更多
xuweiwowzy LV5
2月24日
wz520135 LV7
2022年11月5日
猜猜21 LV13
2022年6月10日
ssh123 LV10
2022年3月18日
Start1 LV15
2022年3月10日
wanglinddad LV53
2022年3月1日
543666826 LV33
2021年11月20日
zy15587462022 LV8
2021年10月27日
ericxu1116 LV24
2021年7月8日
白帅帅 LV5
2021年4月26日
最近浏览更多
xuweiwowzy LV5
2月24日
做自己的太阳 LV11
2月1日
qq1581551433
1月9日
暂无贡献等级
WBelong LV6
2023年12月26日
oulingqiao LV13
2023年10月17日
ly900121
2023年7月3日
暂无贡献等级
1967862957 LV3
2023年6月5日
黑 LV6
2023年3月29日
uni-code_0123 LV1
2023年3月23日
787194770 LV10
2023年2月22日