📄 checkcodeservlet.java
字号:
package com.servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.awt.*;import java.awt.image.*;import javax.imageio.ImageIO;public class CheckCodeServlet extends HttpServlet { private static int WIDTH=60; private static int HIGHT=20; /** * Constructor of the object. */ public CheckCodeServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session=request.getSession(); response.setContentType("image/jpeg"); ServletOutputStream sos=response.getOutputStream(); //设置浏览器不要缓存图片 //response.setHeader("Pragma", "No-cache"); //response.setHeader("Cache-control","no-cache"); //response.setDateHeader("Expires",0); //创建内存图像并获得图形上下文 BufferedImage image= new BufferedImage(WIDTH,HIGHT,BufferedImage.TYPE_INT_RGB); Graphics g=image.getGraphics(); //产生随机的验证码 char [] rands=generateCheckCode(); //产生图像 drawBackground(g); drawRands(g,rands); //结束图像制作,完成图像 g.dispose(); //将图像绘制到客户端 ByteArrayOutputStream bos=new ByteArrayOutputStream(); ImageIO.write(image, "JPEG", bos); byte [] buf=bos.toByteArray(); response.setContentLength(buf.length); sos.write(buf); bos.close(); sos.close(); //将当前的验证码输出到session session.setAttribute("check_code", new String(rands)); System.out.println(new String(rands)); } //获得随机字符 private char [] generateCheckCode() { String chars="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ"; char [] rands=new char[4]; for(int i=0;i<4;i++) { int rand=(int)(Math.random()*62); rands[i]=chars.charAt(rand); } return rands; } //画字符串 private void drawRands(Graphics g,char [] rands) { g.setColor(Color.BLACK); g.setFont(new Font(null,Font.ITALIC|Font.BOLD,18)); g.drawString(""+rands[0],1,17); g.drawString(""+rands[1],16,15); g.drawString(""+rands[2],31,18); g.drawString(""+rands[3],46,16); System.out.println(rands); } //画背景 private void drawBackground(Graphics g) { g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, WIDTH, HIGHT); for(int i=0;i<120;i++) { int x=(int)(Math.random()*WIDTH); int y=(int)(Math.random()*HIGHT); int red=(int)(Math.random()*255); int blue=(int)(Math.random()*255); int green=(int)(Math.random()*255); g.setColor(new Color(red,green,blue)); g.drawOval(x, y,1,0); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //doGet(request,response); } public void init() throws ServletException { // Put your code here }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -