日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

response生成图片验证码

發(fā)布時(shí)間:2025/3/18 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 response生成图片验证码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

新建一個(gè)java web工程

src 目錄下xieyuan包MyServlet.java文件(Servlet文件)

package xieyuan; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.corba.se.impl.javax.rmi.CORBA.Util; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class MyServlet extends HttpServlet { /** * Constructor of the object. */ public MyServlet() { 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 { execute(request, response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @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 doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { execute(request, response); } private static final char CHARS[]={'2','3','4','5','6','7','8','9','A','B','C','D','E', 'F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V', 'W','X','Y','Z' }; public static Random random=new Random(); //生成隨機(jī)數(shù)字,len為需要隨機(jī)數(shù)字的個(gè)數(shù) public static String getRandomString(int len) { StringBuilder builder=new StringBuilder(); for(int i=0;i<len;i++) { builder.append(CHARS[random.nextInt(CHARS.length)]) ; } return builder.toString(); } //隨機(jī)生成顏色,座位背景色 public static Color getColor() { return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)); } //取顏色的反色 public static Color getReverseColor(Color color) { return new Color(255-color.getRed(),255-color.getGreen(),255-color.getBlue()); } private void execute(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); //設(shè)置返回的文件編碼 response.setContentType("image/jpeg"); //獲取隨機(jī)碼 String getRandomCode=getRandomString(5); //將隨機(jī)碼放到Session中 request.getSession().setAttribute("randomcode", getRandomCode); int width=100; int height=30; Color color=getColor(); Color reverseColor=getReverseColor(color); //創(chuàng)建一個(gè)彩色圖片 BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics2D g=bi.createGraphics(); g.setFont(new Font(null,Font.BOLD,16)); g.setColor(color); g.fillRect(0,0,width,height); g.setColor(reverseColor); g.drawString(getRandomCode, 18,20); //繪制噪點(diǎn),最多100個(gè) for(int i=0,n=random.nextInt(100);i<n;i++) { g.drawRect(random.nextInt(width), random.nextInt(height), 1,1); } ServletOutputStream out=response.getOutputStream(); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); encoder.encode(bi); out.flush(); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { } }

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>MyServlet</servlet-name> <servlet-class>xieyuan.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/servlet/MyServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script language="JavaScript" > function reloadImage() { <!--將按鈕狀態(tài)設(shè)置為不可用,當(dāng)圖片加載完成觸發(fā)onload后,按鈕狀態(tài)就為可用了。這樣可用避免重復(fù)獲取--> document.getElementById("btn").disabled=true; <!--第一次連接的時(shí)候不會(huì)有問(wèn)題,第二次連接時(shí),假如你后面沒(méi)有new Date().getTime(),加參數(shù)就會(huì)連接的時(shí)候拿緩存,沒(méi)有連到服務(wù)器。加上時(shí)間函數(shù)就能保證你每次得到的不是瀏覽器的緩存。--> document.getElementById("img").src="servlet/MyServlet?timestamp="+new Date().getTime(); } </script> </head> <body> <img src="servlet/MyServlet" id="img" οnlοad="btn.disabled=false;" /><br/><br/> <input type="button" value="換一張圖片" onClick="reloadImage()" id="btn" /><br/> <script>document.write("頁(yè)面最后更新:"+document.lastModified)</script> </body> </html>

  將java web放在服務(wù)器上啟動(dòng),最后訪(fǎng)問(wèn)http://localhost:8088/firstWeb/,展示效果如下:

注:參考http://www.2cto.com/kf/201309/241744.html

轉(zhuǎn)載于:https://www.cnblogs.com/JDBC-xrch/p/6209642.html

總結(jié)

以上是生活随笔為你收集整理的response生成图片验证码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。