首页>代码>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 ; } }
最近下载更多
泓鼎168 LV20
5月15日
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 LV55
2022年3月1日
543666826 LV33
2021年11月20日
zy15587462022 LV8
2021年10月27日
ericxu1116 LV24
2021年7月8日
最近浏览更多
zhengguangshun LV4
8月25日
李朝磊 LV18
6月24日
ma406805131 LV15
6月2日
shuiyan LV1
6月1日
泓鼎168 LV20
5月15日
yhe107 LV3
4月17日
xuweiwowzy LV5
2月24日
做自己的太阳 LV11
2月1日
qq1581551433
1月9日
暂无贡献等级
WBelong LV8
2023年12月26日