首页>代码>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
2024年5月15日
xuweiwowzy LV5
2024年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 LV34
2021年11月20日
zy15587462022 LV8
2021年10月27日
ericxu1116 LV24
2021年7月8日

monster_001 LV3
3月25日
qiheideguang LV18
2024年12月4日
zhengguangshun LV4
2024年8月25日
李朝磊 LV18
2024年6月24日
ma406805131 LV19
2024年6月2日
shuiyan LV1
2024年6月1日
泓鼎168 LV20
2024年5月15日
yhe107 LV3
2024年4月17日
xuweiwowzy LV5
2024年2月24日
做自己的太阳 LV11
2024年2月1日