⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkcodeservlet.java

📁 一个较简单的论坛——中国精英论坛,是我的一个练习
💻 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 + -